Expand description
Hatter is a small, whitespace sensitive templating language with HTML support built right in. Its HTML features and syntax are a cheap knock off of Imba, except Hatter produces raw, static HTML - no JavaScript in sight. Hatter can be used to generate static web sites or to render server side content in a good ol’ fashioned web application - either with Vial or your Rust web framework of choice. If you’re feeling adventerous, or mad as a hatter, you can use the standalone binary to turn templates into HTML files or include the zero-dependency Rust library in your (web/cli/?) application.
Modules§
- builtin
- Hatter comes with a few built-in functions to help make your life easier, all defined in this module.
- prelude
- Args, Env, Result, and Value
- value
- Value is the dynamic type that represents an active Hatter object, including objects you define in your own code.
Structs§
- Args
- The
Args
struct makes it easier to work with arguments when writing Hatter functions in Rust. - Env
- Env is the top-level environment in which a Hatter template is evaluated and rendered.
- Error
- Usually source-related.
- Interner
- Interner creates and manages our string cache.
- OMap
- A HashMap for Hatter that preserves insertion order.
- Symbol
- A Symbol is an interned String, created and managed by
Interner
and stored in CACHE. - Tag
- Since HTML tags are a bit more involved than IF statements or variable assignment, they have their own data structure. This is still basically just a Stmt, though.
- Template
- Compiled HTML template.
- Token
- A Token is an element of source code, a
Syntax
and its position.
Enums§
- Error
Kind - What kind of error?
- Fn
- Three types of functions in Hatter: Fn: Function defined in Hatter. Native: Function defined in Rust. Special: Function defined in Rust whose arguments aren’t evaluated, like a macro.
- Jump
- Error-ish that lets us abort what we’re doing.
- Stmt
- Stmt is an AST node.
- Syntax
- The different types of syntax that our
Lexer
recognizes. - Value
- Value is the dynamic type that represents an active Hatter object, including objects you define in your own code.
Traits§
- Object
- If you want to expose your own structs to Hatter code, this is the trait for you.
- Syntax
Trait - Helper method we add to
char
.
Functions§
- compile
- Compile source code into a Vec of Stmt, aka the AST.
- eval
- Eval a list of Stmts and return the last’s Value.
- line_
and_ col - Calculate line # and col position for a position in a source file.
- parse
- Main method. Turn a slice of
Token
into a Vec ofStmt
. - print_
error - Pretty-print an error message, complete with colors and the line in question.
- render
- Render source to a String.
- scan
- Scans source code and produces a list of
Token
s.