diff options
| author | 魏曹先生 <1992414357@qq.com> | 2026-02-04 00:27:16 +0800 |
|---|---|---|
| committer | 魏曹先生 <1992414357@qq.com> | 2026-02-04 00:27:16 +0800 |
| commit | d19e5d84ee21502fd3440511d4ffb1ee1f49d3b2 (patch) | |
| tree | fb8efef6f8e9a26c5b60d4ac220b11d6c6f0775e /templates | |
| parent | 7ee0d3f20c875e7405bb8442c5eb0228d1599a03 (diff) | |
Refactor build system and implement complete renderer system
- Split monolithic build.rs into modular async generators
- Add renderer override system with type-safe dispatch
- Implement command template macro for consistent command definitions
- Add proc-macro crates for command and renderer systems
- Reorganize directory structure for better separation of concerns
- Update documentation to reflect new architecture
Diffstat (limited to 'templates')
| -rw-r--r-- | templates/_commands.rs.template (renamed from templates/_registry.rs.template) | 21 | ||||
| -rw-r--r-- | templates/_override_renderer_dispatcher.rs.template (renamed from templates/_renderers.rs.template) | 9 | ||||
| -rw-r--r-- | templates/_override_renderer_entry.rs.template | 13 | ||||
| -rw-r--r-- | templates/_specific_renderer_matching.rs.template | 14 |
4 files changed, 44 insertions, 13 deletions
diff --git a/templates/_registry.rs.template b/templates/_commands.rs.template index 957484c..84d2db4 100644 --- a/templates/_registry.rs.template +++ b/templates/_commands.rs.template @@ -8,18 +8,25 @@ pub async fn jv_cmd_process_node( args: Vec<String>, ctx: JVCommandContext, renderer_override: String -) -> Result<crate::systems::cmd::renderer::JVRenderResult, crate::systems::cmd::errors::CmdProcessError> { +) -> Result<crate::systems::render::renderer::JVRenderResult, crate::systems::cmd::errors::CmdProcessError> { match node { // PROCESS // -- TEMPLATE START -- // Command `<<KEY>>` "<<NODE_NAME>>" => { - return crate::<<COMMAND_TYPE>>::process_with_renderer_flag( - args, - ctx, - renderer_override - ) - .await; + if renderer_override == "default" { + return crate::<<COMMAND_TYPE>>::process_to_render_system( + args, ctx, + ) + .await; + } else { + return crate::<<COMMAND_TYPE>>::process_to_renderer_override( + args, + ctx, + renderer_override, + ) + .await; + } } // -- TEMPLATE END -- _ => {} diff --git a/templates/_renderers.rs.template b/templates/_override_renderer_dispatcher.rs.template index 37f0f1b..64d2f40 100644 --- a/templates/_renderers.rs.template +++ b/templates/_override_renderer_dispatcher.rs.template @@ -1,16 +1,13 @@ -match renderer_str { +match renderer_override { // MATCH // -- TEMPLATE START -- "<<NAME>>" => { - Self::process_with_renderer::< - RendererType - >(args, ctx) - .await + RendererType::render(&concrete_data).await } // -- TEMPLATE END -- _ => { return Err(CmdProcessError::Render(CmdRenderError::RendererNotFound( - renderer_str.to_string(), + renderer_override.to_string(), ))); } } diff --git a/templates/_override_renderer_entry.rs.template b/templates/_override_renderer_entry.rs.template new file mode 100644 index 0000000..06b2c35 --- /dev/null +++ b/templates/_override_renderer_entry.rs.template @@ -0,0 +1,13 @@ +// Auto generated by build.rs +match type_name.as_str() { +// MATCHING +// -- TEMPLATE START -- + "JVOutputTypeName" => { + let concrete_data = data + .downcast::<JVOutputType>() + .map_err(|_| CmdProcessError::DowncastFailed)?; + include!("../render/_override_renderer_dispatcher.rs") + } + _ => return Err(CmdProcessError::NoMatchingCommand), +// -- TEMPLATE END -- +} diff --git a/templates/_specific_renderer_matching.rs.template b/templates/_specific_renderer_matching.rs.template new file mode 100644 index 0000000..9b3765f --- /dev/null +++ b/templates/_specific_renderer_matching.rs.template @@ -0,0 +1,14 @@ +match type_name_str { +// MATCHING +// -- TEMPLATE START -- + "OutputTypeName" => { + RendererType::render( + &data + .downcast::<OutputType>() + .unwrap(), + ) + .await + } +// -- TEMPLATE END -- + _ => Err(CmdRenderError::RendererNotFound(type_name)), +} |
