pub struct TemplateRenderer;Expand description
Template context renderer producing structured JSON from service definitions.
Translates a ServiceDef into a flat, semantic JSON object that template
engines can consume directly. Intent scores and render context are ignored —
the output is intent-agnostic per design (D-01 through D-08).
§Output shape
{
"service": "Order",
"fields": {
"total": { "name": "total", "data_type": "float", "meaning": "money", "required": true }
},
"actions": [
{ "name": "submit", "display_name": "Submit", "inputs": [] }
],
"state_machine": {
"initial_state": "draft",
"states": [{ "name": "draft", "display_name": "Draft", "is_final": false }],
"transitions": [{ "from": "draft", "event": "submit", "to": "pending" }]
}
}state_machine is null when the service has no state machine.
§Example
use ferro_projections::{
ServiceDef, DataType, FieldMeaning, derive_intents, TemplateRenderer, Renderer, BaseContext,
};
let svc = ServiceDef::new("order")
.display_name("Order")
.field("id", DataType::Integer, FieldMeaning::Identifier)
.field("total", DataType::Float, FieldMeaning::Money);
let intents = derive_intents(&svc);
let renderer = TemplateRenderer;
let result = renderer.render(&svc, &intents, &BaseContext::default());
assert!(result.is_ok());
let json = result.unwrap();
assert_eq!(json["service"], "Order");
assert!(json["fields"]["total"].is_object());
assert!(!json["fields"].as_object().unwrap().contains_key("id"));Trait Implementations§
Source§impl Renderer for TemplateRenderer
impl Renderer for TemplateRenderer
Source§type Context = BaseContext
type Context = BaseContext
The context type consumed by this renderer. Must implement
Default.Source§fn render(
&self,
service: &ServiceDef,
_intents: &[IntentScore],
_ctx: &BaseContext,
) -> Result<Value, Error>
fn render( &self, service: &ServiceDef, _intents: &[IntentScore], _ctx: &BaseContext, ) -> Result<Value, Error>
Renders a service definition into the renderer’s output type. Read more
Auto Trait Implementations§
impl Freeze for TemplateRenderer
impl RefUnwindSafe for TemplateRenderer
impl Send for TemplateRenderer
impl Sync for TemplateRenderer
impl Unpin for TemplateRenderer
impl UnsafeUnpin for TemplateRenderer
impl UnwindSafe for TemplateRenderer
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more