1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
use Value;
use crateDocError;
/// A Markdown processor that transforms the raw body before title/template resolution.
///
/// Processors run in registration order on the raw body immediately after frontmatter
/// split, and their output feeds title/template resolution and markdown rendering.
///
/// # Naming Contract
///
/// The `name()` method returns a unique identifier for this processor. It must be
/// non-empty, ASCII-only, and a valid bare Tera identifier (`[a-z0-9_]+`). An invalid
/// name will be rejected at build time.
/// A Markdown analyzer that extracts metadata from the body for template rendering.
///
/// Analyzers run after processors, and their results are merged into the Tera context
/// under `page.extensions.<name()>` where templates can render them.
///
/// # Naming Contract
///
/// The `name()` method returns a unique identifier for this analyzer. It must be
/// non-empty, ASCII-only, and a valid bare Tera identifier (`[a-z0-9_]+`). An invalid
/// name will be rejected at build time. Analyzer names are scoped separately from
/// processor names — a processor and analyzer may share a name without conflict.
/// Validates that a name is a valid Tera identifier: non-empty, ASCII-only, `[a-z0-9_]+`.
pub