cleanup, docs
This commit is contained in:
@@ -63,84 +63,29 @@ For a source file like `/some/path/page.uce`, the preprocessor produces:
|
||||
|
||||
Literal output with escaped data:
|
||||
|
||||
```cpp
|
||||
RENDER(Request& context)
|
||||
{
|
||||
<><h1><?= context.params["DOCUMENT_URI"] ?></h1></>
|
||||
}
|
||||
```
|
||||
|
||||
The same thing can also be written with PHP-style literal delimiters:
|
||||
|
||||
```cpp
|
||||
RENDER(Request& context)
|
||||
{
|
||||
?><h1><?= context.params["DOCUMENT_URI"] ?></h1><?
|
||||
}
|
||||
```
|
||||
|
||||
Roughly becomes:
|
||||
|
||||
```cpp
|
||||
print(R"(<h1>)");
|
||||
print(html_escape(context.params["DOCUMENT_URI"]));
|
||||
print(R"(</h1>)");
|
||||
```
|
||||
|
||||
Literal output with trusted unescaped markup:
|
||||
|
||||
```cpp
|
||||
RENDER(Request& context)
|
||||
{
|
||||
<><div class="panel"><?: component("components/card", context.props, context) ?></div></>
|
||||
}
|
||||
```
|
||||
|
||||
Roughly becomes:
|
||||
|
||||
```cpp
|
||||
print(R"(<div class="panel">)");
|
||||
print(component("components/card", context.props, context));
|
||||
print(R"(</div>)");
|
||||
```
|
||||
|
||||
Compile-time composition:
|
||||
|
||||
```cpp
|
||||
#load "partials/nav.uce"
|
||||
|
||||
RENDER(Request& context)
|
||||
{
|
||||
<><body>...</body></>
|
||||
}
|
||||
```
|
||||
|
||||
The loaded file is resolved relative to the current source file unless the path is already absolute.
|
||||
|
||||
One-time worker initialization plus request-local setup:
|
||||
|
||||
```cpp
|
||||
INIT(Request& context)
|
||||
{
|
||||
// load worker-local data, warm caches, or initialize globals for this unit
|
||||
}
|
||||
|
||||
ONCE(Request& context)
|
||||
{
|
||||
// prepare request-local state before the first render/component call
|
||||
context.call["page_title"] = "Demo";
|
||||
}
|
||||
```
|
||||
|
||||
One-time page assets captured for a template-controlled slot:
|
||||
|
||||
```cpp
|
||||
ONCE(Request& context)
|
||||
@fragment head
|
||||
{
|
||||
?><link rel="stylesheet" href="/assets/page.css" /><?
|
||||
}
|
||||
```
|
||||
|
||||
The page template can then render `context.call["fragments"]["head"]` inside `<head>`.
|
||||
|
||||
@@ -173,7 +118,5 @@ The page template can then render `context.call["fragments"]["head"]` inside `<h
|
||||
- Runtime request failures include the request/script path, generated C++ path, a hint about inspecting template delimiters and recent component/unit calls, and a native trace when available.
|
||||
- If a `#load` include looks wrong, check the current file's directory, the configured `BIN_DIRECTORY`, and whether the loaded page already produced its own generated `.cpp`.
|
||||
|
||||
## Related Concepts
|
||||
|
||||
- PHP: template tags like `<?php ... ?>`, `<?= ... ?>`, output buffering, and compile-time include patterns
|
||||
- JavaScript / Node.js: JSX transforms, tagged templates, server-side rendering pipelines, and build-time HTML generation
|
||||
:example
|
||||
print("C++ Preprocessor documents a UCE concept.\n");
|
||||
|
||||
Reference in New Issue
Block a user