update
This commit is contained in:
parent
39f4aba804
commit
f93f2cf996
33
diff.patch
33
diff.patch
|
|
@ -1,8 +1,16 @@
|
||||||
diff --git a/crates/ssd/src/generators/rhai.rs b/crates/ssd/src/generators/rhai.rs
|
diff --git a/crates/ssd/src/generators/rhai.rs b/crates/ssd/src/generators/rhai.rs
|
||||||
index d4ba8e3..764211d 100644
|
index d4ba8e3..0353358 100644
|
||||||
--- a/crates/ssd/src/generators/rhai.rs
|
--- a/crates/ssd/src/generators/rhai.rs
|
||||||
+++ b/crates/ssd/src/generators/rhai.rs
|
+++ b/crates/ssd/src/generators/rhai.rs
|
||||||
@@ -281,27 +281,64 @@ pub fn build_engine(messages: Rc<RefCell<Vec<String>>>, debug: bool) -> Engine {
|
@@ -261,6 +261,7 @@ fn script_array_contains(arr: Array, v: &Dynamic) -> bool {
|
||||||
|
#[allow(clippy::too_many_lines)]
|
||||||
|
pub fn build_engine(messages: Rc<RefCell<Vec<String>>>, debug: bool) -> Engine {
|
||||||
|
let mut engine = Engine::new();
|
||||||
|
+ engine.set_max_expr_depths(128, 64);
|
||||||
|
// Register a token mapper function to allow module as identifier name
|
||||||
|
#[allow(deprecated)]
|
||||||
|
engine.on_parse_token(|token, _pos, _state| {
|
||||||
|
@@ -281,27 +282,65 @@ pub fn build_engine(messages: Rc<RefCell<Vec<String>>>, debug: bool) -> Engine {
|
||||||
engine.register_global_module(package.as_shared_module());
|
engine.register_global_module(package.as_shared_module());
|
||||||
|
|
||||||
engine.register_iterator::<Vec<serde_value::Value>>();
|
engine.register_iterator::<Vec<serde_value::Value>>();
|
||||||
|
|
@ -31,7 +39,8 @@ index d4ba8e3..764211d 100644
|
||||||
+ .register_iterator::<Vec<$T>>()
|
+ .register_iterator::<Vec<$T>>()
|
||||||
+ .register_iterator::<&Vec<&$T>>()
|
+ .register_iterator::<&Vec<&$T>>()
|
||||||
+ .register_iterator::<Vec<$T>>()
|
+ .register_iterator::<Vec<$T>>()
|
||||||
+ .register_iterator::<&Vec<&$T>>();
|
+ .register_iterator::<&Vec<&$T>>()
|
||||||
|
+ .register_indexer_get(|v: &mut Vec<$T>, i: i64| v[i as usize].clone());
|
||||||
+ };
|
+ };
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
|
|
@ -83,7 +92,7 @@ index d4ba8e3..764211d 100644
|
||||||
|
|
||||||
#[allow(clippy::items_after_statements)]
|
#[allow(clippy::items_after_statements)]
|
||||||
fn script_first<A: Clone, B>(tuple: &mut (A, B)) -> A {
|
fn script_first<A: Clone, B>(tuple: &mut (A, B)) -> A {
|
||||||
@@ -336,6 +373,7 @@ pub fn build_engine(messages: Rc<RefCell<Vec<String>>>, debug: bool) -> Engine {
|
@@ -336,6 +375,7 @@ pub fn build_engine(messages: Rc<RefCell<Vec<String>>>, debug: bool) -> Engine {
|
||||||
Enum,
|
Enum,
|
||||||
DataType,
|
DataType,
|
||||||
Service,
|
Service,
|
||||||
|
|
@ -91,7 +100,15 @@ index d4ba8e3..764211d 100644
|
||||||
Function,
|
Function,
|
||||||
TypeName,
|
TypeName,
|
||||||
EnumValue,
|
EnumValue,
|
||||||
@@ -398,7 +436,7 @@ pub fn build_engine(messages: Rc<RefCell<Vec<String>>>, debug: bool) -> Engine {
|
@@ -354,6 +394,7 @@ pub fn build_engine(messages: Rc<RefCell<Vec<String>>>, debug: bool) -> Engine {
|
||||||
|
.register_get("name", SsdModule::namespace)
|
||||||
|
.register_get("imports", SsdModule::imports)
|
||||||
|
.register_get("data_types", SsdModule::data_types)
|
||||||
|
+ .register_get("types", SsdModule::data_types)
|
||||||
|
.register_get("enums", SsdModule::enums)
|
||||||
|
.register_get("services", SsdModule::services);
|
||||||
|
|
||||||
|
@@ -398,7 +439,7 @@ pub fn build_engine(messages: Rc<RefCell<Vec<String>>>, debug: bool) -> Engine {
|
||||||
|
|
||||||
engine
|
engine
|
||||||
.register_type::<TypeName>()
|
.register_type::<TypeName>()
|
||||||
|
|
@ -100,7 +117,7 @@ index d4ba8e3..764211d 100644
|
||||||
.register_get("is_list", TypeName::is_list)
|
.register_get("is_list", TypeName::is_list)
|
||||||
.register_get("count", TypeName::count)
|
.register_get("count", TypeName::count)
|
||||||
.register_get("attributes", TypeName::attributes);
|
.register_get("attributes", TypeName::attributes);
|
||||||
@@ -488,27 +526,77 @@ pub fn build_engine(messages: Rc<RefCell<Vec<String>>>, debug: bool) -> Engine {
|
@@ -488,27 +529,77 @@ pub fn build_engine(messages: Rc<RefCell<Vec<String>>>, debug: bool) -> Engine {
|
||||||
.register_fn("all", script_all)
|
.register_fn("all", script_all)
|
||||||
.register_fn("none", script_none);
|
.register_fn("none", script_none);
|
||||||
|
|
||||||
|
|
@ -195,7 +212,7 @@ index d4ba8e3..764211d 100644
|
||||||
macro_rules! register_string_concat_void {
|
macro_rules! register_string_concat_void {
|
||||||
($($T: ty),*) => {$({
|
($($T: ty),*) => {$({
|
||||||
let messages = messages.clone();
|
let messages = messages.clone();
|
||||||
@@ -682,7 +770,6 @@ pub fn generate_web(
|
@@ -682,7 +773,6 @@ pub fn generate_web(
|
||||||
scope.push("module", module);
|
scope.push("module", module);
|
||||||
scope.push_constant("defines", defines);
|
scope.push_constant("defines", defines);
|
||||||
scope.push_constant("NL", "\n");
|
scope.push_constant("NL", "\n");
|
||||||
|
|
@ -203,7 +220,7 @@ index d4ba8e3..764211d 100644
|
||||||
engine.run_with_scope(&mut scope, script)?;
|
engine.run_with_scope(&mut scope, script)?;
|
||||||
let messages = messages.borrow();
|
let messages = messages.borrow();
|
||||||
Ok(messages.join(""))
|
Ok(messages.join(""))
|
||||||
@@ -716,7 +803,6 @@ pub fn generate(
|
@@ -716,7 +806,6 @@ pub fn generate(
|
||||||
};
|
};
|
||||||
scope.push_constant("defines", defines);
|
scope.push_constant("defines", defines);
|
||||||
scope.push_constant("NL", "\n");
|
scope.push_constant("NL", "\n");
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue