xsd_parser/pipeline/renderer/steps/
namespace_const.rs1use proc_macro2::Literal;
2use quote::quote;
3
4use super::super::{MetaData, Module, RenderStep};
5
6#[derive(Debug)]
9pub struct NamespaceConstantsRenderStep;
10
11impl RenderStep for NamespaceConstantsRenderStep {
12 fn finish(&mut self, meta: &MetaData<'_>, module: &mut Module) {
13 let xsd_parser = &meta.xsd_parser_crate;
14
15 module.usings([quote!(#xsd_parser::models::schema::Namespace)]);
16
17 let namespace_constants = meta.types.meta.types.modules.values().filter_map(|module| {
18 let ns = module.namespace.as_ref()?;
19 let const_name = module.make_ns_const();
20 let const_name = const_name.ident();
21 let namespace = Literal::byte_string(&ns.0);
22
23 Some(quote! {
24 pub const #const_name: Namespace = Namespace::new_const(#namespace);
25 })
26 });
27
28 module.prepend(quote! { #( #namespace_constants )* });
29 }
30}