diff options
Diffstat (limited to 'README.md')
| -rw-r--r-- | README.md | 10 |
1 files changed, 6 insertions, 4 deletions
@@ -11,7 +11,8 @@ go build -o weft . Markdown uses CommonMark with GFM tables, strikethrough, task lists, and autolinks. Raw Markdown HTML is disabled. Optional YAML frontmatter is exposed -as `.Meta`; the first H1 becomes `.Title` and is removed from `.Sections`. +as `.Meta`; the first H1 becomes `.Title`, while `.Sections` preserves every +top-level Markdown node, including that H1. ## Site templates @@ -46,10 +47,10 @@ The current `Page` is embedded, so its fields can be accessed as either | `.OutputPath` | Slash-separated generated path relative to the site root. | | `.URL` | Root-relative URL. Markdown `index.html` outputs use their directory URL. | | `.CanonicalURL` | `.URL` beneath `canonical-root` | -| `.Title` | First H1, then frontmatter `title`, then a filename-derived fallback. The extracted H1 is removed from the body. | +| `.Title` | First H1, then frontmatter `title`, then a filename-derived fallback. | | `.Meta` | `map[string]any` containing optional YAML frontmatter. | | `.ModTime` | Source-file modification time as `time.Time`. | -| `.Sections` | `[]template.HTML` containing one rendered fragment per top-level Markdown node. Raw Markdown HTML is disabled before these trusted fragments are created. | +| `.Sections` | `[]template.HTML` containing every rendered top-level Markdown node in source order, including the H1 used for `.Title`. Raw Markdown HTML is disabled before these trusted fragments are created. | | `.Pages` | All discovered Markdown pages grouped by ancestor directory. This field belongs to the root template value, not `Page`. | `.Pages` uses slash-separated directory keys. The root key is `""`. A page at @@ -67,7 +68,7 @@ have no Markdown title, modification time, or sections. | Function | Result | | --- | --- | | `rel from target` | Makes a root-relative site target relative to the directory containing `from`. HTTP(S), `mailto:`, and fragment targets pass through. A trailing `/` is preserved, so `rel "about/index.html" "/"` returns `../`. | -| `sortPages pages key` | Returns a copy. `"title"` sorts ascending case-insensitively; `"mod_time"` sorts newest first; every other key sorts newest first using that frontmatter value as a date. | +| `sortPages pages keys...` | Returns a copy. `"title"` sorts ascending case-insensitively. Date keys sort newest first, using the first valid value for each page; `"mod_time"` selects `.ModTime` and other keys select frontmatter values. | | `filterPages pages key value` | Keeps pages whose value stringifies equally. `"title"` and `"output"` select `.Title` and `.OutputPath`; other keys select `.Meta[key]`. | | `slicePages pages start end` | Returns the half-open range `[start:end]`, clamping both bounds instead of failing. | | `joinSections sections` | Concatenates rendered Markdown sections and returns trusted `template.HTML`. | @@ -80,6 +81,7 @@ Examples: ```gotemplate <a href="{{rel .OutputPath "/notes/"}}">notes</a> {{range sortPages (index .Pages "weblog") "post_date"}}{{.Title}}{{end}} +{{range sortPages (index .Pages "weblog") "post_date" "mod_time"}}{{.Title}}{{end}} {{with index .Sections 0}}{{.}}{{end}} {{joinSections (slice .Sections 1)}} <content type="html">{{xml (joinSections .Sections)}}</content> |
