Skip to main content

forge_codegen/
lib.rs

1//! Forge → Askama preprocessor. Used from `build.rs` to compile `.forge.html` files
2//! into Askama-compatible `.html` templates.
3//!
4//! Supports:
5//! - `@if` / `@elseif` / `@else` / `@endif` → `{% if %}` / `{% elif %}` / `{% else %}` / `{% endif %}`
6//! - `@foreach` / `@endforeach` → `{% for %}` / `{% endfor %}` (with `loop.index`, `loop.first`, etc.)
7//! - `@extends('layout')` → `{% extends "layout.html" %}`
8//! - `@section('name')` / `@endsection` → `{% block name %}` / `{% endblock %}`
9//! - `@yield('name')` → `{% block name %}{% endblock %}`
10//! - `@parent` → `{{ super() }}`
11//! - `@include('partial')` → `{% include "partial.html" %}`
12//! - `@push('stack')` / `@endpush` → call into `forge::stack::push`
13//! - `@stack('stack')` → placeholder for post-render swap
14//! - `@vite([...])` → call into `forge::vite::render`
15//! - `@auth` / `@guest` / `@can` — sugar over `@if`
16//! - `{{ x }}` → `{{ x }}` (Askama auto-escapes)
17//! - `{!! x !!}` → `{{ x|safe }}`
18//! - `<x-component prop="...">body</x-component>` → `{% call ... %}body{% endcall %}`
19
20pub mod compiler;
21pub mod lower;
22pub mod parser;
23
24pub use compiler::{compile_dir, compile_file, compile_source};