Andromeda

Reference

View as Markdown

Helpers, configuration and errors.

View helpers

HelperReturns
andromeda_content(entry)the rendered body, ready to output
andromeda_toc(entry, min: 2, max: 3)a nested table of contents from the headings
andromeda_meta_tags(entry, url: nil)<title>, description and canonical tags
andromeda_image_url(image)the URL of an :image attribute

Outside a view, entry.html and entry.headings give the same data.

Configuration

Andromeda.configure do |config|
  config.content_path = "app/content"
  config.entry_namespace = "Content"
  config.components_path = "app/views/content_components"
  config.build_path = ".andromeda"
  config.highlight_theme = "github.dark"
end

Anything that would change how content is interpreted — the parser, GFM, smart punctuation — is deliberately not configurable: those follow Astro’s defaults so that copied content behaves the same.

Errors

ErrorWhen
Andromeda::SyntaxErrorMarkdown or MDX could not be parsed; carries file, line and column
Andromeda::ValidationErrorfrontmatter does not match the schema; lists every problem at once
Andromeda::EntryNotFoundfind missed; suggests near-miss ids
Andromeda::BuildMissingproduction, and this entry was never built
Andromeda::BuildErrora build failed; lists every failing file

Astro compatibility

Andromeda targets Astro 7 and later, and parses with Sätteri, the engine Astro 7 uses by default. The goal is that copied content loads and displays, not that the HTML matches byte for byte: syntax highlighting uses Rouge rather than Shiki, and images are served by the asset pipeline.

Not supported: Astro pages and routing, islands and client:*, remark/rehype plugins, and arbitrary JavaScript in MDX.

Last updated September 24, 2026