2.9 KiB
2.9 KiB
Scape Templates — Project Milestones
This document outlines the phased roadmap for building Scape Templates. Each milestone is designed to ensure "Excellence over Features," focusing on a solid foundation before adding complexity.
Phase 1: Core Architecture & Environment
Focus: Establishing the contracts, error handling, and runtime configuration.
- Define and implement
Scape\Interfaces\FilterInterfaceandScape\Interfaces\HostProviderInterface. - Implement the Exception hierarchy in
Scape\Exceptions. - Implement
Scape\Configto handle environment variables (SCAPE_*_DIR) and programmatic overrides. - Create the
Scape\Engineboilerplate with therender()method signature.
Phase 2: Lexical Analysis & Tokenization
Focus: Turning template strings into a stream of tokens that the parser can understand.
- Implement
Scape\Parser\Lexerto identify interpolation{{ }}, raw{{{ }}}, logic{( )}, and block{[ ]}tags. - Support white-space independence within tags.
- Implement the white-space control rule (logic tags consuming one trailing newline).
- Comprehensive unit tests for all tag variations.
Phase 3: The AST & Parser
Focus: Building the Abstract Syntax Tree (AST) representing the template's structure.
- Implement
Scape\Parser\Parserto convert tokens into an AST. - Define AST Nodes (Text, Variable, Loop, Block, Include, Filter).
- Implement the
foreachgrammar (with optional keys). - Implement data access logic (dot-notation for objects, brackets for arrays).
Phase 4: The Interpreter (Rendering Engine)
Focus: Turning the AST and data into the final HTML output.
- Implement the AST Interpreter to walk the tree and resolve variables.
- Implement standard HTML escaping (
ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML5). - Implement Loop logic with
index,pos, and positional rendering (first,inner,last). - Implement
debugvsproductionvariable access modes.
Phase 5: Inheritance & Reusability
Focus: Blocks, Layouts, and Partials.
- Implement
{[ extends ]}and the Block override system (including{[ parent ]}). - Implement
{[ include ]}with data scoping rules (with context,with data_source, inline arrays). - Implement the recursion limit check (default 20).
- Implement the 404 fallback mechanism.
Phase 6: Extensibility & Performance
Focus: Filters, Host IoC, and Caching.
- Implement the Filter pipeline (piping and arguments).
- Implement
usesandload_filtermechanisms. - Implement the
hostnamespace delegation. - Implement AST Caching (local storage in
.scape/cache) withmtimeinvalidation for dev mode.
Phase 7: Final Polish & Release
- Final project-wide code style audit.
- Ensure 100% test coverage for core rendering logic.
- Draft the final README (Getting Started and examples).