Documentation Generator

This page is generated from Markdown by the local C# documentation generator. It documents the Markdown source and shared template pipeline.

The generator is intentionally small:

Run it from the repository root:

dotnet run --project tools/FoDocs.Generator -- --clean

The generated site is written to _site.

Validate the generated output with:

tools\Validate-Site.ps1

The validation script checks local generated pages, internal links and anchors, automatic floating TOCs, full-width page flags, and leftover root-level HTML.

Markdown rendering

Inline text supports links, backtick code spans, bold using paired double asterisks or underscores, and emphasis using single markers. Emphasis can be nested and used in headings, lists, table cells, and link labels. Underscores inside words and filenames stay literal. Backslash escapes preserve punctuation; code spans and fenced code preserve Markdown markers as written. Use longer backtick delimiters to include a backtick inside an inline code span.

The renderer supports a deliberate Markdown subset, with custom fenced blocks for site data and raw HTML. It is not a full CommonMark implementation. After building the generator, run python tools/Test-MarkdownRendering.py to check rendering and block ordering.

Documentation update date

The index's update date is generated from documentation inputs: content/, published CSS and root .sym/.txt files, and the img/, highslide/, and symbols/ asset directories. Tooling changes and build output do not count.

In a clean Git checkout, the date comes from the latest commit affecting those inputs, in UTC. Uncommitted edits and new files use their source modification times, bounded below by the committed date. A local deletion uses the date it is first observed by a build, since the deleted file has no timestamp.

The ignored .fodocs-cache/ directory remembers a content fingerprint and date for local edits. Unchanged rebuilds, including --clean, retain that date even if source timestamps change. A clean checkout always uses Git history. Without Git history, the generator warns and falls back to source timestamps and the same cache; that fallback cannot recover historical dates from a fresh archive. Keep the cache for stable local builds and use a full Git checkout in CI.

After building the generator, run python tools/Test-DocumentationDate.py to check committed dates, local changes, rebuild stability, and unrelated commits.

Generated page list

The following pages have Markdown sources:

OutputSource
aaf.htmlcontent/pages/aaf.md
acm.htmlcontent/pages/acm.md
ai_txt.htmlcontent/pages/ai_txt.md
anim_names.htmlcontent/pages/anim_names.md
bio.htmlcontent/pages/bio.md
cfg.htmlcontent/pages/cfg.md
criticals.htmlcontent/pages/criticals.md
dat.htmlcontent/pages/dat.md
elevators.htmlcontent/pages/elevators.md
fallout2_re.htmlcontent/pages/fallout2_re.md and content/data/fallout2_re.tsv
fo1in2.htmlcontent/pages/fo1in2.md
fo_colors.htmlcontent/pages/fo_colors.md
fon.htmlcontent/pages/fon.md
frm.htmlcontent/pages/frm.md
gam.htmlcontent/pages/gam.md
gcd.htmlcontent/pages/gcd.md
hrp.htmlcontent/pages/hrp.md
index.htmlcontent/pages/index.md
int.htmlcontent/pages/int.md
lip.htmlcontent/pages/lip.md
lst.htmlcontent/pages/lst.md
map.htmlcontent/pages/map.md
mods.htmlcontent/pages/mods.md
msk.htmlcontent/pages/msk.md
msg.htmlcontent/pages/msg.md
mve.htmlcontent/pages/mve.md
pal.htmlcontent/pages/pal.md
party_txt.htmlcontent/pages/party_txt.md
pipboy_txt.htmlcontent/pages/pipboy_txt.md
pro.htmlcontent/pages/pro.md
rix.htmlcontent/pages/rix.md
savegame.htmlcontent/pages/savegame.md
scripts_lst.htmlcontent/pages/scripts_lst.md
sfall_refs.htmlcontent/pages/sfall_refs.md and content/data/sfall_refs.tsv
ssl.htmlcontent/pages/ssl.md
structs.htmlcontent/pages/structs.md
symbols.htmlcontent/pages/symbols.md and content/data/symbols.tsv
sve.htmlcontent/pages/sve.md
tools.htmlcontent/pages/tools.md
worldmap_config.htmlcontent/pages/worldmap_config.md
worldmap_dat.htmlcontent/pages/worldmap_dat.md
docs-generator.htmlcontent/pages/docs-generator.md

Source Notes

Pages keep their public URLs by setting output in frontmatter:

---
title: DAT File Format
output: dat.html
width: full
toc: auto
---

The optional width: full setting lets generated reference pages use the full viewport width for wide tables. Omit it for normal prose-heavy pages. The optional toc: auto setting generates a floating menu from h2 through h4 headings.

Simple Markdown is supported today: headings, paragraphs, links, inline code, fenced code blocks, ordered and unordered lists, pipe tables, fenced raw-html blocks for page-specific interactive islands, fenced toc blocks for curated floating page navigation, frontmatter toc: auto for generated floating page navigation, fenced fallout-palette blocks for compact color palette data, fenced symbol-table blocks for large symbol references backed by content/data, and fenced tsv-table blocks for generated reference tables. The renderer is deliberately conservative and has no external package dependency yet.

When a Markdown URL contains literal parentheses, percent-encode them as %28 and %29.