asdf2/diff.patch

116 lines
3.8 KiB
Diff

diff --git a/crates/ssd/src/generators/rhai.rs b/crates/ssd/src/generators/rhai.rs
index d4ba8e3..178d4bb 100644
--- a/crates/ssd/src/generators/rhai.rs
+++ b/crates/ssd/src/generators/rhai.rs
@@ -45,6 +45,10 @@ fn error_to_runtime_error<E: std::error::Error>(e: E) -> Box<EvalAltResult> {
use rhai::Token;
+fn script_count_vec<T>(v: &Vec<T>) -> usize {
+ v.len()
+}
+
fn script_exists(path: &str) -> bool {
PathBuf::from(path).exists()
}
@@ -281,21 +285,31 @@ pub fn build_engine(messages: Rc<RefCell<Vec<String>>>, debug: bool) -> Engine {
engine.register_global_module(package.as_shared_module());
engine.register_iterator::<Vec<serde_value::Value>>();
+ engine.register_iterator::<Namespace>();
+ engine.register_type::<Namespace>();
- engine
- .register_iterator::<Vec<SsdModule>>()
- .register_iterator::<Vec<Import>>()
- .register_iterator::<OrderedMap<Namespace>>()
- .register_iterator::<Namespace>()
- .register_iterator::<OrderedMap<Enum>>()
- .register_iterator::<OrderedMap<EnumValue>>()
- .register_iterator::<OrderedMap<DataType>>()
- .register_iterator::<OrderedMap<Service>>()
- .register_iterator::<Vec<Attribute>>()
- .register_iterator::<OrderedMap<TypeName>>()
- .register_iterator::<Vec<Dependency>>()
- .register_iterator::<Vec<Parameter>>()
- .register_iterator::<OrderedMap<Function>>();
+ macro_rules! register_vec {
+ ($T: ty) => {
+ engine
+ .register_type::<Vec<$T>>()
+ .register_fn("len", Vec::<$T>::len)
+ .register_iterator::<Vec<$T>>();
+ };
+ }
+
+ register_vec!(SsdModule);
+ register_vec!(Import);
+ register_vec!(Attribute);
+ register_vec!(Dependency);
+ register_vec!(Parameter);
+ register_vec!((String, Namespace));
+ register_vec!((String, Event));
+ register_vec!((String, Enum));
+ register_vec!((String, EnumValue));
+ register_vec!((String, DataType));
+ register_vec!((String, Service));
+ register_vec!((String, TypeName));
+ register_vec!((String, Function));
engine.register_fn("to_string", |this: &mut Import| this.path.clone());
#[allow(clippy::cast_possible_truncation, clippy::cast_sign_loss)]
diff --git a/crates/ssd/src/generators/tera.rs b/crates/ssd/src/generators/tera.rs
index 2cfb3eb..251a225 100644
--- a/crates/ssd/src/generators/tera.rs
+++ b/crates/ssd/src/generators/tera.rs
@@ -1,14 +1,14 @@
-use crate::options::{BaseInputData, BaseOutputData};
-use crate::parse_raw_data;
use clap::Parser;
use std::collections::HashMap;
use std::error::Error;
use std::path::PathBuf;
-use ssd::parse_file;
use ssd_data::{RawModel, SsdModel};
-use crate::{print_or_write, update_types_from_file};
+use crate::helper::parse_raw_data;
+use crate::helper::{print_or_write, update_types_from_file};
+use crate::options::{BaseInputData, BaseOutputData};
+use crate::parse_file;
use tera::{Context, Tera};
@@ -50,4 +50,5 @@ pub fn generate(
print_or_write(out.out, &result)?;
Ok(())
-}
\ No newline at end of file
+}
+
diff --git a/crates/ssd/src/generators/wasm.rs b/crates/ssd/src/generators/wasm.rs
index 079c93f..a0cf7bf 100644
--- a/crates/ssd/src/generators/wasm.rs
+++ b/crates/ssd/src/generators/wasm.rs
@@ -1,14 +1,14 @@
-use crate::options::{BaseInputData, BaseOutputData};
-use crate::parse_raw_data;
use clap::Parser;
use extism::{convert::Json, Manifest, PluginBuilder, Wasm};
use std::collections::HashMap;
use std::path::PathBuf;
-use ssd::parse_file;
use ssd_data::{RawModel, SsdModel};
-use crate::{print_or_write, update_types_from_file};
+use crate::helper::parse_raw_data;
+use crate::helper::{print_or_write, update_types_from_file};
+use crate::options::{BaseInputData, BaseOutputData};
+use crate::parse_file;
#[derive(Debug, Parser)]
pub struct Parameters {