From 95b8dcc6231b67e74d5c465699113e03650ddd6e Mon Sep 17 00:00:00 2001 From: Stephen Chung Date: Wed, 16 Dec 2020 14:57:28 +0800 Subject: [PATCH 1/5] Update docs. --- codegen/src/test/function.rs | 6 +- doc/src/appendix/operators.md | 14 ++-- doc/src/engine/compile.md | 8 +- doc/src/engine/custom-syntax.md | 112 +++++++++++++++++++-------- doc/src/engine/raw.md | 2 +- doc/src/engine/var.md | 24 +++--- doc/src/language/constants.md | 12 ++- doc/src/language/dynamic.md | 2 +- doc/src/patterns/events.md | 30 +++---- doc/src/plugins/module.md | 22 +++--- doc/src/rust/custom.md | 4 +- doc/src/rust/modules/imp-resolver.md | 4 +- doc/src/rust/register-raw.md | 16 ++-- doc/src/safety/progress.md | 6 +- tests/closures.rs | 16 ++-- 15 files changed, 169 insertions(+), 109 deletions(-) diff --git a/codegen/src/test/function.rs b/codegen/src/test/function.rs index 7a750123..1df6e6a2 100644 --- a/codegen/src/test/function.rs +++ b/codegen/src/test/function.rs @@ -489,7 +489,7 @@ mod generate_tests { }; let expected_tokens = quote! { - impl PluginFunction for MyType { + impl PluginFunction for TestStruct { fn call(&self, context: NativeCallContext, args: &mut [&mut Dynamic]) -> Result> { debug_assert_eq!(args.len(), 1usize, "wrong arg count: {} != {}", args.len(), 1usize); @@ -499,7 +499,7 @@ mod generate_tests { fn is_method_call(&self) -> bool { false } fn is_variadic(&self) -> bool { false } - fn clone_boxed(&self) -> Box { Box::new(MyType()) } + fn clone_boxed(&self) -> Box { Box::new(TestStruct()) } fn input_names(&self) -> Box<[&'static str]> { new_vec!["x: usize"].into_boxed_slice() } @@ -513,7 +513,7 @@ mod generate_tests { }; let item_fn = syn::parse2::(input_tokens).unwrap(); - assert_streams_eq(item_fn.generate_impl("MyType"), expected_tokens); + assert_streams_eq(item_fn.generate_impl("TestStruct"), expected_tokens); } #[test] diff --git a/doc/src/appendix/operators.md b/doc/src/appendix/operators.md index 0ca26be5..71e94965 100644 --- a/doc/src/appendix/operators.md +++ b/doc/src/appendix/operators.md @@ -10,16 +10,16 @@ Operators | Operator | Description | Binary? | Binding direction | | :-----------------------------------------------------------------------------------------: | -------------------------------------- | :--------: | :---------------: | | `+` | add | yes | left | -| `-` | 1) subtract
2) negative | yes
no | left
right | +| `-` | 1) subtract
2) negative (prefix) | yes
no | left
right | | `*` | multiply | yes | left | | `/` | divide | yes | left | | `%` | modulo | yes | left | | `~` | power | yes | left | | `>>` | right bit-shift | yes | left | | `<<` | left bit-shift | yes | left | -| `&` | 1) bit-wise _And_
2) boolean _And_ | yes | left | -| \| | 1) bit-wise _Or_
2) boolean _Or_ | yes | left | -| `^` | 1) bit-wise _Xor_
2) boolean _Xor_ | yes | left | +| `&` | 1) bit-wise _AND_
2) boolean _AND_ | yes | left | +| \| | 1) bit-wise _OR_
2) boolean _OR_ | yes | left | +| `^` | 1) bit-wise _XOR_
2) boolean _XOR_ | yes | left | | `=`, `+=`, `-=`, `*=`, `/=`,
`~=`, `%=`, `<<=`, `>>=`, `&=`,
\|=, `^=` | assignments | yes | right | | `==` | equals to | yes | left | | `~=` | not equals to | yes | left | @@ -27,9 +27,9 @@ Operators | `>=` | greater than or equals to | yes | left | | `<` | less than | yes | left | | `<=` | less than or equals to | yes | left | -| `&&` | boolean _And_ (short-circuits) | yes | left | -| \|\| | boolean _Or_ (short-circuits) | yes | left | -| `!` | boolean _Not_ | no | left | +| `&&` | boolean _AND_ (short-circuits) | yes | left | +| \|\| | boolean _OR_ (short-circuits) | yes | left | +| `!` | boolean _NOT_ | no | left | | `[` .. `]` | indexing | yes | right | | `.` | 1) property access
2) method call | yes | right | diff --git a/doc/src/engine/compile.md b/doc/src/engine/compile.md index f4ee0e65..07c172c1 100644 --- a/doc/src/engine/compile.md +++ b/doc/src/engine/compile.md @@ -3,7 +3,10 @@ Compile a Script (to AST) {{#include ../links.md}} -To repeatedly evaluate a script, _compile_ it first into an `AST` (abstract syntax tree) form: +To repeatedly evaluate a script, _compile_ it first with `Engine::compile` into an `AST` +(abstract syntax tree) form. + +`Engine::eval_ast` evaluates a pre-compiled `AST`. ```rust // Compile to an AST and store it for later evaluations @@ -16,7 +19,8 @@ for _ in 0..42 { } ``` -Compiling a script file is also supported (not available under [`no_std`] or in [WASM] builds): +Compiling a script file is also supported with `Engine::compile_file` +(not available under [`no_std`] or in [WASM] builds): ```rust let ast = engine.compile_file("hello_world.rhai".into())?; diff --git a/doc/src/engine/custom-syntax.md b/doc/src/engine/custom-syntax.md index 85d385aa..876e18a3 100644 --- a/doc/src/engine/custom-syntax.md +++ b/doc/src/engine/custom-syntax.md @@ -116,16 +116,17 @@ The function signature of an implementation is: where: -| Parameter | Type | Description | -| ----------------------------- | :-----------------------------: | ------------------------------------------------------------------------------------- | -| `context` | `&mut EvalContext` | mutable reference to the current evaluation _context_ | -| - `context.scope` | `&mut Scope` | mutable reference to the current [`Scope`]; variables can be added to/removed from it | -| - `context.engine()` | `&Engine` | reference to the current [`Engine`] | -| - `context.imports()` | `&Imports` | reference to the current stack of [modules] imported via `import` statements | -| - `context.iter_namespaces()` | `impl Iterator` | iterator of the namespaces (as [modules]) containing all script-defined functions | -| - `context.this_ptr()` | `Option<&Dynamic>` | reference to the current bound [`this`] pointer, if any | -| - `context.call_level()` | `usize` | the current nesting level of function calls | -| `inputs` | `&[Expression]` | a list of input expression trees | +| Parameter | Type | Description | +| -------------------------- | :-----------------------------: | ------------------------------------------------------------------------------------- | +| `context` | `&mut EvalContext` | mutable reference to the current evaluation _context_ | +| • `scope()` | `&Scope` | reference to the current [`Scope`] | +| • `scope_mut()` | `&mut Scope` | mutable reference to the current [`Scope`]; variables can be added to/removed from it | +| • `engine()` | `&Engine` | reference to the current [`Engine`] | +| • `imports()` | `&Imports` | reference to the current stack of [modules] imported via `import` statements | +| • `iter_namespaces()` | `impl Iterator` | iterator of the namespaces (as [modules]) containing all script-defined functions | +| • `this_ptr()` | `Option<&Dynamic>` | reference to the current bound [`this`] pointer, if any | +| • `call_level()` | `usize` | the current nesting level of function calls | +| `inputs` | `&[Expression]` | a list of input expression trees | ### Return Value @@ -168,7 +169,7 @@ In other words, any [`Scope`] calls that change the list of must come _before_ a let var_name = inputs[0].get_variable_name().unwrap(); let expression = inputs.get(1).unwrap(); -context.scope.push(var_name, 0 as INT); // do this BEFORE 'context.eval_expression_tree'! +context.scope_mut().push(var_name, 0 as INT); // do this BEFORE 'context.eval_expression_tree'! let result = context.eval_expression_tree(expression)?; ``` @@ -195,7 +196,7 @@ fn implementation_func( let condition = inputs.get(2).unwrap(); // Push one new variable into the scope BEFORE 'context.eval_expression_tree' - context.scope.push(var_name, 0 as INT); + context.scope_mut().push(var_name, 0 as INT); loop { // Evaluate the statement block @@ -258,8 +259,8 @@ Step Six - Profit! ------------------ -Really Advanced - Low Level Custom Syntax API --------------------------------------------- +Really Advanced - Custom Parsers +------------------------------- Sometimes it is desirable to have multiple custom syntax starting with the same symbol. This is especially common for _command-style_ syntax where the @@ -276,30 +277,67 @@ perform add something; // Add something to the system perform remove something; // Delete something from the system ``` -For even more flexibility, there is a _low level_ API for custom syntax that -allows the registration of an entire mini-parser. +Alternatively, a custom syntax may have variable length, with a termination symbol: + +```rust +// The following is a variable-length list terminated by '>' +tags < "foo", "bar", 123, ... , x+y, true > +``` + +For even more flexibility in order to handle these advanced use cases, there is a +_low level_ API for custom syntax that allows the registration of an entire mini-parser. Use `Engine::register_custom_syntax_raw` to register a custom syntax _parser_ -together with the implementation function: +together with the implementation function. + +### How Custom Parsers Work + +A custom parser takes as input parameters two pieces of information: + +* The symbols parsed so far; `$ident$` is replaced with the actual identifier parsed, + while `$expr$` and `$block$` stay as they were. + + The custom parser can inspect this symbols stream to determine the next symbol to parse. + +* The _look-ahead_ symbol, which is the symbol that will be parsed _next_. + + If the look-ahead is an expected symbol, the customer parser just returns it to continue parsing, + or it can return `$ident$` to parse it as an identifier, or even `$expr$` to start parsing + an expression. + + If the look-ahead is '`{`', then the custom parser may also return `$block$` to start parsing a + statements block. + + If the look-ahead is unexpected, the custom parser should then return the symbol expected + and Rhai will fail with a parse error containing information about the expected symbol. + +A custom parser always returns the _next_ symbol expected, which can also be `$ident$`, +`$expr$` or `$block$`, or `None` if parsing should terminate (_without_ reading the +look-ahead symbol). + + +### Example ```rust engine.register_custom_syntax_raw( "perform", - |stream| match stream.len() { + // The custom parser implementation - always returns the next symbol expected + // 'look_ahead' is the next symbol about to be read + |symbols, look_ahead| match symbols.len() { // perform ... 1 => Ok(Some("$ident$".to_string())), // perform command ... - 2 => match stream[1].as_str() { - "action" => Ok(Some("$expr$".to_string())), - "hello" => Ok(Some("world".to_string())), - "update" | "check" | "add" | "remove" => Ok(Some("$ident$".to_string())), + 2 => match symbols[1].as_str() { + "action" => Ok(Some("$expr$".into())), + "hello" => Ok(Some("world".into())), + "update" | "check" | "add" | "remove" => Ok(Some("$ident$".into())), "cleanup" => Ok(None), cmd => Err(ParseError(Box::new(ParseErrorType::BadInput( LexError::ImproperSymbol(format!("Improper command: {}", cmd)) )), Position::NONE)), }, // perform command arg ... - 3 => match (stream[1].as_str(), stream[2].as_str()) { + 3 => match (symbols[1].as_str(), symbols[2].as_str()) { ("action", _) => Ok(None), ("hello", "world") => Ok(None), ("update", arg) if arg == "system" => Ok(None), @@ -315,7 +353,9 @@ engine.register_custom_syntax_raw( }, _ => unreachable!(), }, - 0, // the number of new variables declared within this custom syntax + // Number of new variables declared by this custom syntax + 0, + // Implementation function implementation_func ); ``` @@ -324,20 +364,24 @@ engine.register_custom_syntax_raw( The custom syntax parser has the following signature: -> `Fn(stream: &[String]) -> Result, ParseError>` +> `Fn(symbols: &[ImmutableString], look_ahead: &str) -> Result, ParseError>` where: -| Parameter | Type | Description | -| --------- | :---------: | -------------------------------------------------------------------------------------------------- | -| `stream` | `&[String]` | a slice of symbols that have been parsed so far, possibly containing `"$expr$"` and/or `"$block$"` | +| Parameter | Type | Description | +| ------------ | :------------------: | ---------------------------------------------------------------------------------------------------------------------------------------------- | +| `symbols` | `&[ImmutableString]` | a slice of symbols that have been parsed so far, possibly containing `$expr$` and/or `$block$`; `$ident$` is replaced by the actual identifier | +| `look_ahead` | `&str` | a string slice containing the next symbol that is about to be read | + +Most strings are [`ImmutableString`][string]'s so it is usually more efficient to just `clone` the appropriate one +(if any matches, or keep an internal cache for commonly-used symbols) as the return value. ### Return Value -The return value is `Result, ParseError>` where: +The return value is `Result, ParseError>` where: -| Value | Description | -| ------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `Ok(None)` | parsing complete and there are no more symbols to match | -| `Ok(Some(symbol))` | next symbol to match, which can also be `"$expr$"`, `"$ident$"` or `"$block$"` | -| `Err(ParseError)` | error that is reflected back to the [`Engine`].
Normally this is `ParseError(ParseErrorType::BadInput(LexError::ImproperSymbol(message)), Position::NONE)` to indicate that there is a syntax error, but it can be any `ParseError`. | +| Value | Description | +| ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `Ok(None)` | parsing complete and there are no more symbols to match | +| `Ok(Some(symbol))` | the next symbol to match, which can also be `$expr$`, `$ident$` or `$block$` | +| `Err(ParseError)` | error that is reflected back to the [`Engine`] - normally `ParseError(ParseErrorType::BadInput(LexError::ImproperSymbol(message)), Position::NONE)` to indicate that there is a syntax error, but it can be any `ParseError`. | diff --git a/doc/src/engine/raw.md b/doc/src/engine/raw.md index e5add617..017814a5 100644 --- a/doc/src/engine/raw.md +++ b/doc/src/engine/raw.md @@ -17,7 +17,7 @@ To add more functionalities to a _raw_ `Engine`, load [packages] into it. Built-in Operators ------------------ -| Operators | Assignment operators | Supported for types (see [standard types]) | +| Operators | Assignment operators | Supported for types
(see [standard types]) | | ------------------------- | ---------------------------- | ----------------------------------------------------------------------------- | | `+`, | `+=` | `INT`, `FLOAT` (if not [`no_float`]), `char`, `ImmutableString` | | `-`, `*`, `/`, `%`, `~`, | `-=`, `*=`, `/=`, `%=`, `~=` | `INT`, `FLOAT` (if not [`no_float`]) | diff --git a/doc/src/engine/var.md b/doc/src/engine/var.md index f21a5754..86226b49 100644 --- a/doc/src/engine/var.md +++ b/doc/src/engine/var.md @@ -24,7 +24,7 @@ engine.on_var(|name, index, context| { EvalAltResult::ErrorVariableNotFound(name.to_string(), Position::NONE) )), // Silently maps 'chameleon' into 'innocent'. - "chameleon" => context.scope.get_value("innocent").map(Some).ok_or_else(|| Box::new( + "chameleon" => context.scope().get_value("innocent").map(Some).ok_or_else(|| Box::new( EvalAltResult::ErrorVariableNotFound(name.to_string(), Position::NONE) )), // Return Ok(None) to continue with the normal variable resolution process. @@ -67,17 +67,17 @@ The function signature passed to `Engine::on_var` takes the following form: where: -| Parameter | Type | Description | -| ----------------------------- | :-----------------------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `name` | `&str` | variable name | -| `index` | `usize` | an offset from the bottom of the current [`Scope`] that the variable is supposed to reside.
Offsets start from 1, with 1 meaning the last variable in the current [`Scope`]. Essentially the correct variable is at position `scope.len() - index`.
If `index` is zero, then there is no pre-calculated offset position and a search through the current [`Scope`] must be performed. | -| `context` | `&EvalContext` | reference to the current evaluation _context_ | -| - `context.scope` | `&Scope` | reference to the current [`Scope`] containing all variables up to the current evaluation position | -| - `context.engine()` | `&Engine` | reference to the current [`Engine`] | -| - `context.imports()` | `&Imports` | reference to the current stack of [modules] imported via `import` statements | -| - `context.iter_namespaces()` | `impl Iterator` | iterator of the namespaces (as [modules]) containing all script-defined functions | -| - `context.this_ptr()` | `Option<&Dynamic>` | reference to the current bound [`this`] pointer, if any | -| - `context.call_level()` | `usize` | the current nesting level of function calls | +| Parameter | Type | Description | +| -------------------------- | :-----------------------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `name` | `&str` | variable name | +| `index` | `usize` | an offset from the bottom of the current [`Scope`] that the variable is supposed to reside.
Offsets start from 1, with 1 meaning the last variable in the current [`Scope`]. Essentially the correct variable is at position `scope.len() - index`.
If `index` is zero, then there is no pre-calculated offset position and a search through the current [`Scope`] must be performed. | +| `context` | `&EvalContext` | reference to the current evaluation _context_ | +| • `scope()` | `&Scope` | reference to the current [`Scope`] | +| • `engine()` | `&Engine` | reference to the current [`Engine`] | +| • `imports()` | `&Imports` | reference to the current stack of [modules] imported via `import` statements | +| • `iter_namespaces()` | `impl Iterator` | iterator of the namespaces (as [modules]) containing all script-defined functions | +| • `this_ptr()` | `Option<&Dynamic>` | reference to the current bound [`this`] pointer, if any | +| • `call_level()` | `usize` | the current nesting level of function calls | ### Return Value diff --git a/doc/src/language/constants.md b/doc/src/language/constants.md index 3e25d5a0..edda3d4e 100644 --- a/doc/src/language/constants.md +++ b/doc/src/language/constants.md @@ -61,8 +61,8 @@ r" ``` -Constants Can be Modified via Rust ---------------------------------- +Caveat - Constants Can be Modified via Rust +------------------------------------------ A custom type stored as a constant cannot be modified via script, but _can_ be modified via a registered Rust function that takes a first `&mut` parameter - because there is no way for @@ -76,9 +76,15 @@ x.increment(); // call 'increment' defined in Rust with '&mut' first parame x == 43; // value of 'x' is changed! fn double() { - this *= 2; // function squares 'this' + this *= 2; // function doubles 'this' } +let y = 1; // 'y' is not constant and mutable + +y.double(); // double it... + +y == 2; // value of 'y' is changed as expected + x.double(); // <- error: cannot modify constant 'this' x == 43; // value of 'x' is unchanged by script diff --git a/doc/src/language/dynamic.md b/doc/src/language/dynamic.md index a89c9446..a143d519 100644 --- a/doc/src/language/dynamic.md +++ b/doc/src/language/dynamic.md @@ -15,7 +15,7 @@ it is usually used to perform type-specific actions based on the actual value's ```c let mystery = get_some_dynamic_value(); -switch mystery { +switch type_of(mystery) { "i64" => print("Hey, I got an integer here!"), "f64" => print("Hey, I got a float here!"), "string" => print("Hey, I got a string here!"), diff --git a/doc/src/patterns/events.md b/doc/src/patterns/events.md index cdea89c5..e7c5d946 100644 --- a/doc/src/patterns/events.md +++ b/doc/src/patterns/events.md @@ -134,29 +134,33 @@ impl Handler { // Say there are three events: 'start', 'end', 'update'. // In a real application you'd be handling errors... pub fn on_event(&mut self, event_name: &str, event_data: i64) -> Result<(), Error> { + let engine = &self.engine; + let scope = &mut self.scope; + let ast = &self.ast; + match event_name { // The 'start' event maps to function 'start'. // In a real application you'd be handling errors... - "start" => self.engine.call_fn(&mut self.scope, &self.ast, "start", (event_data,))?, + "start" => engine.call_fn(scope, ast, "start", (event_data,))?, // The 'end' event maps to function 'end'. // In a real application you'd be handling errors... - "end" => self.engine.call_fn(&mut self.scope, &self.ast, "end", (event_data,))?, + "end" => engine.call_fn(scope, ast, "end", (event_data,))?, // The 'update' event maps to function 'update'. // This event provides a default implementation when the scripted function // is not found. - "update" => self.engine - .call_fn(&mut self.scope, &self.ast, "update", (event_data,)) - .or_else(|err| match *err { - EvalAltResult::ErrorFunctionNotFound(fn_name, _) if fn_name == "update" => { - // Default implementation of 'update' event handler - self.scope.set_value("state2", SomeType::new(42)); - // Turn function-not-found into a success - Ok(Dynamic::UNIT) - } - _ => Err(err.into()) - })? + "update" => + engine.call_fn(scope, ast, "update", (event_data,)) + .or_else(|err| match *err { + EvalAltResult::ErrorFunctionNotFound(fn_name, _) if fn_name == "update" => { + // Default implementation of 'update' event handler + self.scope.set_value("state2", SomeType::new(42)); + // Turn function-not-found into a success + Ok(Dynamic::UNIT) + } + _ => Err(err.into()) + })? } } } diff --git a/doc/src/plugins/module.md b/doc/src/plugins/module.md index ac0c9f80..f2edc3d2 100644 --- a/doc/src/plugins/module.md +++ b/doc/src/plugins/module.md @@ -271,9 +271,9 @@ use rhai::plugin::*; // a "prelude" import for macros #[export_module] mod my_module { - // This is the '+' operator for 'MyType'. + // This is the '+' operator for 'TestStruct'. #[rhai_fn(name = "+")] - pub fn add(obj: &mut MyType, value: i64) { + pub fn add(obj: &mut TestStruct, value: i64) { obj.prop += value; } // This function is 'calc (i64)'. @@ -305,24 +305,24 @@ mod my_module { pub fn greet(name: &str) -> String { format!("hello, {}!", name) } - // This is a getter for 'MyType::prop'. + // This is a getter for 'TestStruct::prop'. #[rhai_fn(get = "prop")] - pub fn get_prop(obj: &mut MyType) -> i64 { + pub fn get_prop(obj: &mut TestStruct) -> i64 { obj.prop } - // This is a setter for 'MyType::prop'. + // This is a setter for 'TestStruct::prop'. #[rhai_fn(set = "prop")] - pub fn set_prop(obj: &mut MyType, value: i64) { + pub fn set_prop(obj: &mut TestStruct, value: i64) { obj.prop = value; } - // This is an index getter for 'MyType'. + // This is an index getter for 'TestStruct'. #[rhai_fn(index_get)] - pub fn get_index(obj: &mut MyType, index: i64) -> bool { + pub fn get_index(obj: &mut TestStruct, index: i64) -> bool { obj.list[index] } - // This is an index setter for 'MyType'. + // This is an index setter for 'TestStruct'. #[rhai_fn(index_set)] - pub fn get_index(obj: &mut MyType, index: i64, state: bool) { + pub fn get_index(obj: &mut TestStruct, index: i64, state: bool) { obj.list[index] = state; } } @@ -344,7 +344,7 @@ use rhai::plugin::*; // a "prelude" import for macros mod my_module { // This function can be called in five ways #[rhai_fn(name = "get_prop_value", name = "prop", name = "+", set = "prop", index_get)] - pub fn prop_function(obj: &mut MyType, index: i64) -> i64 { + pub fn prop_function(obj: &mut TestStruct, index: i64) -> i64 { obj.prop[index] } } diff --git a/doc/src/rust/custom.md b/doc/src/rust/custom.md index 36394e3a..1b0bec44 100644 --- a/doc/src/rust/custom.md +++ b/doc/src/rust/custom.md @@ -140,14 +140,14 @@ with a special "pretty-print" name, [`type_of()`] will return that name instead. engine .register_type::() .register_fn("new_ts1", TestStruct1::new) - .register_type_with_name::("MyType") + .register_type_with_name::("TestStruct") .register_fn("new_ts2", TestStruct2::new); let ts1_type = engine.eval::(r#"let x = new_ts1(); x.type_of()"#)?; let ts2_type = engine.eval::(r#"let x = new_ts2(); x.type_of()"#)?; println!("{}", ts1_type); // prints 'path::to::TestStruct' -println!("{}", ts1_type); // prints 'MyType' +println!("{}", ts1_type); // prints 'TestStruct' ``` diff --git a/doc/src/rust/modules/imp-resolver.md b/doc/src/rust/modules/imp-resolver.md index 32a4361e..0b8f789c 100644 --- a/doc/src/rust/modules/imp-resolver.md +++ b/doc/src/rust/modules/imp-resolver.md @@ -13,7 +13,7 @@ which contains only one function: `resolve`. When Rhai prepares to load a module, `ModuleResolver::resolve` is called with the name of the _module path_ (i.e. the path specified in the [`import`] statement). -* Upon success, it should return an [`Rc`][module] (or `Arc` under [`sync`]). +* Upon success, it should return an [`Rc`][module] (or [`Arc`][module] under [`sync`]). The module should call `Module::build_index` on the target module before returning. This method flattens the entire module tree and _indexes_ it for fast function name resolution. @@ -66,7 +66,7 @@ engine.set_module_resolver(Some(MyModuleResolver {})); engine.consume(r#" import "hello" as foo; // this 'import' statement will call - // 'MyModuleResolver::resolve' with "hello" as `path` + // 'MyModuleResolver::resolve' with "hello" as 'path' foo:bar(); "#)?; ``` diff --git a/doc/src/rust/register-raw.md b/doc/src/rust/register-raw.md index 4d326e78..78137c30 100644 --- a/doc/src/rust/register-raw.md +++ b/doc/src/rust/register-raw.md @@ -65,14 +65,14 @@ The function signature passed to `Engine::register_raw_fn` takes the following f where: -| Parameter | Type | Description | -| ----------------------------- | :-----------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| `T` | `impl Clone` | return type of the function | -| `context` | `NativeCallContext` | the current _native call context_ | -| - `context.engine()` | `&Engine` | the current [`Engine`], with all configurations and settings.
This is sometimes useful for calling a script-defined function within the same evaluation context using [`Engine::call_fn`][`call_fn`], or calling a [function pointer]. | -| - `context.imports()` | `Option<&Imports>` | reference to the current stack of [modules] imported via `import` statements (if any) | -| - `context.iter_namespaces()` | `impl Iterator` | iterator of the namespaces (as [modules]) containing all script-defined functions | -| `args` | `&mut [&mut Dynamic]` | a slice containing `&mut` references to [`Dynamic`] values.
The slice is guaranteed to contain enough arguments _of the correct types_. | +| Parameter | Type | Description | +| -------------------------- | :-----------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `T` | `impl Clone` | return type of the function | +| `context` | `NativeCallContext` | the current _native call context_ | +| • `engine()` | `&Engine` | the current [`Engine`], with all configurations and settings.
This is sometimes useful for calling a script-defined function within the same evaluation context using [`Engine::call_fn`][`call_fn`], or calling a [function pointer]. | +| • `imports()` | `Option<&Imports>` | reference to the current stack of [modules] imported via `import` statements (if any) | +| • `iter_namespaces()` | `impl Iterator` | iterator of the namespaces (as [modules]) containing all script-defined functions | +| `args` | `&mut [&mut Dynamic]` | a slice containing `&mut` references to [`Dynamic`] values.
The slice is guaranteed to contain enough arguments _of the correct types_. | ### Return value diff --git a/doc/src/safety/progress.md b/doc/src/safety/progress.md index ff294976..749ac95b 100644 --- a/doc/src/safety/progress.md +++ b/doc/src/safety/progress.md @@ -46,5 +46,7 @@ Operations Count vs. Progress Percentage Notice that the _operations count_ value passed into the closure does not indicate the _percentage_ of work already done by the script (and thus it is not real _progress_ tracking), because it is impossible to determine -how long a script may run. It is possible, however, to calculate this percentage based on an estimated -total number of operations for a typical run. +how long a script may run. + +It is possible, however, to calculate this percentage based on an estimated total number of operations +for a typical run. diff --git a/tests/closures.rs b/tests/closures.rs index fd5f6c56..aa3db7f4 100644 --- a/tests/closures.rs +++ b/tests/closures.rs @@ -195,7 +195,7 @@ fn test_closures_data_race() -> Result<(), Box> { Ok(()) } -type MyType = Rc>; +type TestStruct = Rc>; #[test] #[cfg(not(feature = "no_object"))] @@ -203,18 +203,18 @@ type MyType = Rc>; fn test_closures_shared_obj() -> Result<(), Box> { let mut engine = Engine::new(); - // Register API on MyType + // Register API on TestStruct engine - .register_type_with_name::("MyType") + .register_type_with_name::("TestStruct") .register_get_set( "data", - |p: &mut MyType| *p.borrow(), - |p: &mut MyType, value: INT| *p.borrow_mut() = value, + |p: &mut TestStruct| *p.borrow(), + |p: &mut TestStruct, value: INT| *p.borrow_mut() = value, ) - .register_fn("+=", |p1: &mut MyType, p2: MyType| { + .register_fn("+=", |p1: &mut TestStruct, p2: TestStruct| { *p1.borrow_mut() += *p2.borrow() }) - .register_fn("-=", |p1: &mut MyType, p2: MyType| { + .register_fn("-=", |p1: &mut TestStruct, p2: TestStruct| { *p1.borrow_mut() -= *p2.borrow() }); @@ -234,7 +234,7 @@ fn test_closures_shared_obj() -> Result<(), Box> { let res = engine.eval_ast::(&ast)?; // Make closure - let f = move |p1: MyType, p2: MyType| -> Result<(), Box> { + let f = move |p1: TestStruct, p2: TestStruct| -> Result<(), Box> { let action_ptr = res["action"].clone().cast::(); let name = action_ptr.fn_name(); engine.call_fn::<_, ()>(&mut Scope::new(), &ast, name, (p1, p2)) From fc54fdc907047c155e459784a8d2a761d757b632 Mon Sep 17 00:00:00 2001 From: Stephen Chung Date: Thu, 17 Dec 2020 10:42:20 +0800 Subject: [PATCH 2/5] Emphasize custom syntax are expressions. --- doc/src/engine/custom-syntax.md | 16 +++++++++++++++- tests/syntax.rs | 15 ++++++++++++++- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/doc/src/engine/custom-syntax.md b/doc/src/engine/custom-syntax.md index 876e18a3..856392b0 100644 --- a/doc/src/engine/custom-syntax.md +++ b/doc/src/engine/custom-syntax.md @@ -220,7 +220,7 @@ fn implementation_func( Ok(Dynamic::UNIT) } -// Register the custom syntax (sample): exec |x| -> { x += 1 } while x < 0; +// Register the custom syntax (sample): exec |x| -> { x += 1 } while x < 0 engine.register_custom_syntax( &[ "exec", "|", "$ident$", "|", "->", "$block$", "while", "$expr$" ], // the custom syntax 1, // the number of new variables declared within this custom syntax @@ -228,6 +228,20 @@ engine.register_custom_syntax( )?; ``` +Remember that a custom syntax acts as an _expression_, so it can show up practically anywhere: + +```rust +// Use as an expression: +let foo = (exec |x| -> { x += 1 } while x < 0) * 100; + +// Use as a function call argument: +do_something(exec |x| -> { x += 1 } while x < 0, 24, true); + +// Use as a statement: +exec |x| -> { x += 1 } while x < 0; +// ^ terminate statement with ';' +``` + Step Four - Disable Unneeded Statement Types ------------------------------------------- diff --git a/tests/syntax.rs b/tests/syntax.rs index f2049e86..55272f54 100644 --- a/tests/syntax.rs +++ b/tests/syntax.rs @@ -29,8 +29,11 @@ fn test_custom_syntax() -> Result<(), Box> { context.scope_mut().push(var_name, 0 as INT); + let mut count: INT = 0; + loop { context.eval_expression_tree(stmt)?; + count += 1; let stop = !context .eval_expression_tree(condition)? @@ -48,10 +51,20 @@ fn test_custom_syntax() -> Result<(), Box> { } } - Ok(Dynamic::UNIT) + Ok(count.into()) }, )?; + assert_eq!( + engine.eval::( + r" + let x = 0; + let foo = (exec |x| -> { x += 2 } while x < 42) * 10; + foo + " + )?, + 210 + ); assert_eq!( engine.eval::( r" From 719f0babbf94638c3dccf1547c577fb6f71d2fb5 Mon Sep 17 00:00:00 2001 From: Stephen Chung Date: Fri, 18 Dec 2020 16:07:19 +0800 Subject: [PATCH 3/5] Fix comments parsing. --- RELEASES.md | 1 + src/token.rs | 73 +++++++++++++++++++++++++++-------------------- tests/comments.rs | 57 ++++++++++++++++++++++++++++++++++++ 3 files changed, 100 insertions(+), 31 deletions(-) diff --git a/RELEASES.md b/RELEASES.md index d442c231..bc08d9dc 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -16,6 +16,7 @@ Bug fixes * Constants are no longer propagated by the optimizer if shadowed by a non-constant variable. * Constants passed as the `this` parameter to Rhai functions now throws an error if assigned to. * Generic type parameter of `Engine::register_iterator` is `IntoIterator` instead of `Iterator`. +* Fixes parsing of block comments ending with `**/` or inner blocks starting with `//*`. Breaking changes ---------------- diff --git a/src/token.rs b/src/token.rs index f1c00d14..e6f3588a 100644 --- a/src/token.rs +++ b/src/token.rs @@ -918,41 +918,41 @@ fn eat_next(stream: &mut impl InputStream, pos: &mut Position) -> Option { } /// Scan for a block comment until the end. -fn scan_comment( +fn scan_block_comment( stream: &mut impl InputStream, mut level: usize, pos: &mut Position, - comment: &mut String, + comment: &mut Option, ) -> usize { while let Some(c) = stream.get_next() { pos.advance(); - if !comment.is_empty() { + if let Some(ref mut comment) = comment { comment.push(c); } match c { '/' => { - if let Some(c2) = stream.get_next() { - if !comment.is_empty() { - comment.push(c2); - } + if let Some(c2) = stream.peek_next() { if c2 == '*' { + eat_next(stream, pos); + if let Some(ref mut comment) = comment { + comment.push(c2); + } level += 1; } } - pos.advance(); } '*' => { - if let Some(c2) = stream.get_next() { - if !comment.is_empty() { - comment.push(c2); - } + if let Some(c2) = stream.peek_next() { if c2 == '/' { + eat_next(stream, pos); + if let Some(ref mut comment) = comment { + comment.push(c2); + } level -= 1; } } - pos.advance(); } '\n' => pos.new_line(), _ => (), @@ -1032,11 +1032,16 @@ fn get_next_token_inner( // Still inside a comment? if state.comment_level > 0 { let start_pos = *pos; - let mut comment = String::new(); - state.comment_level = scan_comment(stream, state.comment_level, pos, &mut comment); + let mut comment = if state.include_comments { + Some(String::new()) + } else { + None + }; - if state.include_comments || is_doc_comment(&comment) { - return Some((Token::Comment(comment), start_pos)); + state.comment_level = scan_block_comment(stream, state.comment_level, pos, &mut comment); + + if state.include_comments || is_doc_comment(comment.as_ref().unwrap()) { + return Some((Token::Comment(comment.unwrap()), start_pos)); } } @@ -1282,10 +1287,13 @@ fn get_next_token_inner( ('/', '/') => { eat_next(stream, pos); - let mut comment = match stream.peek_next().unwrap() { - '/' => "///".to_string(), - _ if state.include_comments => "//".to_string(), - _ => String::new(), + let mut comment = match stream.peek_next() { + Some('/') => { + eat_next(stream, pos); + Some("///".to_string()) + } + _ if state.include_comments => Some("//".to_string()), + _ => None, }; while let Some(c) = stream.get_next() { @@ -1293,30 +1301,33 @@ fn get_next_token_inner( pos.new_line(); break; } - - if !comment.is_empty() { + if let Some(ref mut comment) = comment { comment.push(c); } pos.advance(); } - if state.include_comments || is_doc_comment(&comment) { + if let Some(comment) = comment { return Some((Token::Comment(comment), start_pos)); } } ('/', '*') => { state.comment_level = 1; - eat_next(stream, pos); - let mut comment = match stream.peek_next().unwrap() { - '*' => "/**".to_string(), - _ if state.include_comments => "/*".to_string(), - _ => String::new(), + let mut comment = match stream.peek_next() { + Some('*') => { + eat_next(stream, pos); + Some("/**".to_string()) + } + _ if state.include_comments => Some("/*".to_string()), + _ => None, }; - state.comment_level = scan_comment(stream, state.comment_level, pos, &mut comment); - if state.include_comments || is_doc_comment(&comment) { + state.comment_level = + scan_block_comment(stream, state.comment_level, pos, &mut comment); + + if let Some(comment) = comment { return Some((Token::Comment(comment), start_pos)); } } diff --git a/tests/comments.rs b/tests/comments.rs index d7525960..17746a94 100644 --- a/tests/comments.rs +++ b/tests/comments.rs @@ -21,5 +21,62 @@ fn test_comments() -> Result<(), Box> { 42 ); + assert_eq!(engine.eval::<()>("/* Hello world */")?, ()); + + Ok(()) +} + +#[cfg(not(feature = "no_function"))] +#[test] +fn test_comments_doc() -> Result<(), Box> { + let engine = Engine::new(); + + let ast = engine.compile( + r" + /// Hello world + + + fn foo() {} + ", + )?; + + assert_eq!( + ast.iter_functions().next().unwrap().comments[0], + "/// Hello world" + ); + + assert!(engine + .compile( + r" + /// Hello world + let x = 42; + " + ) + .is_err()); + + let ast = engine.compile( + r" + /** Hello world + ** how are you? + **/ + + fn foo() {} + ", + )?; + + assert_eq!( + ast.iter_functions().next().unwrap().comments[0], + "/** Hello world\n ** how are you?\n **/" + ); + + assert!(engine + .compile( + r" + /** Hello world */ + let x = 42; + " + ) + .is_err()); + Ok(()) } From 882b26d2a14bfbb5cf6a2122f42a45911366873e Mon Sep 17 00:00:00 2001 From: Stephen Chung Date: Fri, 18 Dec 2020 16:31:44 +0800 Subject: [PATCH 4/5] Change ScriptFnMetadata to hold references. --- src/ast.rs | 51 +++++++++++++++++++++++++++++-------------------- src/dynamic.rs | 2 +- src/optimize.rs | 2 +- src/parser.rs | 24 +++++++++++------------ 4 files changed, 44 insertions(+), 35 deletions(-) diff --git a/src/ast.rs b/src/ast.rs index e9823156..75435825 100644 --- a/src/ast.rs +++ b/src/ast.rs @@ -83,8 +83,8 @@ pub struct ScriptFnDef { /// Access to external variables. #[cfg(not(feature = "no_closure"))] pub externals: Vec, - /// Comment block for function. - pub fn_comments: Vec, + /// Function doc-comments (if any). + pub comments: Vec, } impl fmt::Display for ScriptFnDef { @@ -107,16 +107,29 @@ impl fmt::Display for ScriptFnDef { } } -/// A type containing a script-defined function's metadata. -#[derive(Debug, Clone, Hash)] -pub struct ScriptFnMetadata { - pub comments: Vec, +/// A type containing the metadata of a script-defined function. +/// +/// Created by [`AST::iter_functions`]. +#[derive(Debug, Eq, PartialEq, Clone, Hash)] +pub struct ScriptFnMetadata<'a> { + /// Function doc-comments (if any). + /// + /// Block doc-comments are kept in a single string slice with line-breaks within. + /// + /// Line doc-comments are kept in one string slice per line without the termination line-break. + /// + /// Leading white-spaces are stripped, and each string slice always starts with the corresponding + /// doc-comment leader: `///` or `/**`. + pub comments: Vec<&'a str>, + /// Function access mode. pub access: FnAccess, - pub fn_name: ImmutableString, - pub params: Vec, + /// Function name. + pub name: &'a str, + /// Function parameters (if any). + pub params: Vec<&'a str>, } -impl fmt::Display for ScriptFnMetadata { +impl fmt::Display for ScriptFnMetadata<'_> { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { write!( f, @@ -126,23 +139,19 @@ impl fmt::Display for ScriptFnMetadata { } else { "" }, - self.fn_name, - self.params - .iter() - .map(|p| p.as_str()) - .collect::>() - .join(", ") + self.name, + self.params.iter().cloned().collect::>().join(", ") ) } } -impl Into for &ScriptFnDef { - fn into(self) -> ScriptFnMetadata { +impl<'a> Into> for &'a ScriptFnDef { + fn into(self) -> ScriptFnMetadata<'a> { ScriptFnMetadata { - comments: self.fn_comments.clone(), + comments: self.comments.iter().map(|s| s.as_str()).collect(), access: self.access, - fn_name: self.name.clone(), - params: self.params.iter().cloned().collect(), + name: &self.name, + params: self.params.iter().map(|s| s.as_str()).collect(), } } } @@ -538,7 +547,7 @@ impl AST { } self } - /// Iterate through all functions + /// Iterate through all function definitions. #[cfg(not(feature = "no_function"))] #[inline(always)] pub fn iter_functions<'a>(&'a self) -> impl Iterator + 'a { diff --git a/src/dynamic.rs b/src/dynamic.rs index 41f2756e..c6efb8b8 100644 --- a/src/dynamic.rs +++ b/src/dynamic.rs @@ -503,7 +503,7 @@ impl Clone for Dynamic { /// /// ## WARNING /// - /// The cloned copy is marked [`AccessType::Normal`] even if the original is constant. + /// The cloned copy is marked read-write even if the original is read-only. fn clone(&self) -> Self { match self.0 { Union::Unit(value, _) => Self(Union::Unit(value, AccessMode::ReadWrite)), diff --git a/src/optimize.rs b/src/optimize.rs index 2ef94938..53be762e 100644 --- a/src/optimize.rs +++ b/src/optimize.rs @@ -868,7 +868,7 @@ pub fn optimize_into_ast( lib: None, #[cfg(not(feature = "no_module"))] mods: Default::default(), - fn_comments: Default::default(), + comments: Default::default(), }) .for_each(|fn_def| { lib2.set_script_fn(fn_def); diff --git a/src/parser.rs b/src/parser.rs index afd0dd5f..f0003abd 100644 --- a/src/parser.rs +++ b/src/parser.rs @@ -2409,14 +2409,14 @@ fn parse_stmt( ) -> Result, ParseError> { use AccessMode::{ReadOnly, ReadWrite}; - let mut fn_comments: Vec = Default::default(); - let mut fn_comments_pos = Position::NONE; + let mut comments: Vec = Default::default(); + let mut comments_pos = Position::NONE; - // Handle doc-comment. + // Handle doc-comments. #[cfg(not(feature = "no_function"))] while let (Token::Comment(ref comment), comment_pos) = input.peek().unwrap() { - if fn_comments_pos.is_none() { - fn_comments_pos = *comment_pos; + if comments_pos.is_none() { + comments_pos = *comment_pos; } if !is_doc_comment(comment) { @@ -2424,16 +2424,16 @@ fn parse_stmt( } if !settings.is_global { - return Err(PERR::WrongDocComment.into_err(fn_comments_pos)); + return Err(PERR::WrongDocComment.into_err(comments_pos)); } if let Token::Comment(comment) = input.next().unwrap().0 { - fn_comments.push(comment); + comments.push(comment); match input.peek().unwrap() { (Token::Fn, _) | (Token::Private, _) => break, (Token::Comment(_), _) => (), - _ => return Err(PERR::WrongDocComment.into_err(fn_comments_pos)), + _ => return Err(PERR::WrongDocComment.into_err(comments_pos)), } } else { unreachable!(); @@ -2492,7 +2492,7 @@ fn parse_stmt( pos: pos, }; - let func = parse_fn(input, &mut new_state, lib, access, settings, fn_comments)?; + let func = parse_fn(input, &mut new_state, lib, access, settings, comments)?; // Qualifiers (none) + function name + number of arguments. let hash = calc_script_fn_hash(empty(), &func.name, func.params.len()); @@ -2651,7 +2651,7 @@ fn parse_fn( lib: &mut FunctionsLib, access: FnAccess, mut settings: ParseSettings, - fn_comments: Vec, + comments: Vec, ) -> Result { #[cfg(not(feature = "unchecked"))] settings.ensure_level_within_max_limit(state.max_expr_depth)?; @@ -2737,7 +2737,7 @@ fn parse_fn( lib: None, #[cfg(not(feature = "no_module"))] mods: Default::default(), - fn_comments, + comments, }) } @@ -2894,7 +2894,7 @@ fn parse_anon_fn( lib: None, #[cfg(not(feature = "no_module"))] mods: Default::default(), - fn_comments: Default::default(), + comments: Default::default(), }; let expr = Expr::FnPointer(fn_name, settings.pos); From 5454ff0cd5ed51e2574a2d386a15eb9dd9734132 Mon Sep 17 00:00:00 2001 From: Stephen Chung Date: Fri, 18 Dec 2020 19:12:30 +0800 Subject: [PATCH 5/5] Revise Rhai logo. --- README.md | 2 + doc/src/about/index.md | 13 +++--- doc/src/images/logo/favicon.png | Bin 0 -> 1238 bytes doc/src/images/logo/favicon.svg | 15 +++++++ .../logo/rhai-banner-transparent-colour.png | Bin 0 -> 22200 bytes .../logo/rhai-banner-transparent-colour.svg | 31 ++++++++++++++ doc/src/images/logo/rhai-colour-black.png | Bin 0 -> 23348 bytes doc/src/images/logo/rhai-colour-black.svg | 39 ++++++++++++++++++ doc/src/images/logo/rhai-colour-white.png | Bin 0 -> 23363 bytes doc/src/images/logo/rhai-colour-white.svg | 34 +++++++++++++++ .../images/logo/rhai-icon-colour-black.png | Bin 0 -> 17621 bytes .../images/logo/rhai-icon-colour-black.svg | 23 +++++++++++ .../images/logo/rhai-icon-colour-white.png | Bin 0 -> 17375 bytes .../images/logo/rhai-icon-colour-white.svg | 23 +++++++++++ .../logo/rhai-icon-transparent-black.png | Bin 0 -> 3991 bytes .../logo/rhai-icon-transparent-black.svg | 11 +++++ .../logo/rhai-icon-transparent-colour.png | Bin 0 -> 15548 bytes .../logo/rhai-icon-transparent-colour.svg | 14 +++++++ .../logo/rhai-icon-transparent-white.png | Bin 0 -> 4496 bytes .../logo/rhai-icon-transparent-white.svg | 11 +++++ .../rhai-logo-transparent-colour-black.png | Bin 0 -> 20505 bytes .../rhai-logo-transparent-colour-black.svg | 28 +++++++++++++ .../rhai-logo-transparent-colour-white.png | Bin 0 -> 20664 bytes .../rhai-logo-transparent-colour-white.svg | 28 +++++++++++++ .../logo/rhai-logo-transparent-sil-black.png | Bin 0 -> 7392 bytes .../logo/rhai-logo-transparent-sil-black.svg | 25 +++++++++++ .../logo/rhai-logo-transparent-sil-white.png | Bin 0 -> 8310 bytes .../logo/rhai-logo-transparent-sil-white.svg | 25 +++++++++++ doc/src/images/logo/rhai-sil-black.png | Bin 0 -> 11249 bytes doc/src/images/logo/rhai-sil-black.svg | 36 ++++++++++++++++ doc/src/images/logo/rhai-sil-white.png | Bin 0 -> 12297 bytes doc/src/images/logo/rhai-sil-white.svg | 29 +++++++++++++ doc/src/images/rhai.png | Bin 5158 -> 0 bytes doc/src/images/rhai_logo.png | Bin 10280 -> 0 bytes doc/theme/favicon.png | Bin 0 -> 1238 bytes doc/theme/favicon.svg | 12 ++++++ 36 files changed, 394 insertions(+), 5 deletions(-) create mode 100644 doc/src/images/logo/favicon.png create mode 100644 doc/src/images/logo/favicon.svg create mode 100644 doc/src/images/logo/rhai-banner-transparent-colour.png create mode 100644 doc/src/images/logo/rhai-banner-transparent-colour.svg create mode 100644 doc/src/images/logo/rhai-colour-black.png create mode 100644 doc/src/images/logo/rhai-colour-black.svg create mode 100644 doc/src/images/logo/rhai-colour-white.png create mode 100644 doc/src/images/logo/rhai-colour-white.svg create mode 100644 doc/src/images/logo/rhai-icon-colour-black.png create mode 100644 doc/src/images/logo/rhai-icon-colour-black.svg create mode 100644 doc/src/images/logo/rhai-icon-colour-white.png create mode 100644 doc/src/images/logo/rhai-icon-colour-white.svg create mode 100644 doc/src/images/logo/rhai-icon-transparent-black.png create mode 100644 doc/src/images/logo/rhai-icon-transparent-black.svg create mode 100644 doc/src/images/logo/rhai-icon-transparent-colour.png create mode 100644 doc/src/images/logo/rhai-icon-transparent-colour.svg create mode 100644 doc/src/images/logo/rhai-icon-transparent-white.png create mode 100644 doc/src/images/logo/rhai-icon-transparent-white.svg create mode 100644 doc/src/images/logo/rhai-logo-transparent-colour-black.png create mode 100644 doc/src/images/logo/rhai-logo-transparent-colour-black.svg create mode 100644 doc/src/images/logo/rhai-logo-transparent-colour-white.png create mode 100644 doc/src/images/logo/rhai-logo-transparent-colour-white.svg create mode 100644 doc/src/images/logo/rhai-logo-transparent-sil-black.png create mode 100644 doc/src/images/logo/rhai-logo-transparent-sil-black.svg create mode 100644 doc/src/images/logo/rhai-logo-transparent-sil-white.png create mode 100644 doc/src/images/logo/rhai-logo-transparent-sil-white.svg create mode 100644 doc/src/images/logo/rhai-sil-black.png create mode 100644 doc/src/images/logo/rhai-sil-black.svg create mode 100644 doc/src/images/logo/rhai-sil-white.png create mode 100644 doc/src/images/logo/rhai-sil-white.svg delete mode 100644 doc/src/images/rhai.png delete mode 100644 doc/src/images/rhai_logo.png create mode 100644 doc/theme/favicon.png create mode 100644 doc/theme/favicon.svg diff --git a/README.md b/README.md index 8893d420..b812b5c4 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,8 @@ Rhai - Embedded Scripting for Rust [![chat](https://img.shields.io/discord/767611025456889857.svg?logo=discord)](https://discord.gg/HquqbYFcZ9) [![Reddit](https://img.shields.io/reddit/subreddit-subscribers/Rhai?logo=reddit)](https://www.reddit.com/r/Rhai) +![Rhai logo](https://schungx.github.io/rhai/images/logo/rhai-banner-transparent-colour.svg) + Rhai is an embedded scripting language and evaluation engine for Rust that gives a safe and easy way to add scripting to any application. diff --git a/doc/src/about/index.md b/doc/src/about/index.md index 869016b9..5932e802 100644 --- a/doc/src/about/index.md +++ b/doc/src/about/index.md @@ -3,7 +3,7 @@ What is Rhai {{#include ../links.md}} -![Rhai Logo]({{rootUrl}}/images/rhai_logo.png) +![Rhai Logo]({{rootUrl}}/images/logo/rhai-banner-transparent-colour.svg) Rhai is an embedded scripting language and evaluation engine for Rust that gives a safe and easy way to add scripting to any application. @@ -35,9 +35,12 @@ and, in particular, a popular kind of milk tea consumed in India. Later, when the novel implementation technique behind ChaiScript was ported from C++ to Rust, logically the `C` was changed to an `R` to make it "RhaiScript", or just "Rhai". -### On the origin of the temporary Rhai logo +### On the origin of the semi-official Rhai logo -One of Rhai's maintainers, Stephen Chung, was thinking about a logo when he accidentally -came across a copy of _Catcher in the Rye_ in a restaurant. The rest was history. +One of Rhai's maintainers, [Stephen Chung](https://github.com/schungx), was thinking about a logo when he accidentally +came across a copy of _Catcher in the Rye_ in a restaurant, and drew the first version +of the logo. -It is temporary until it becomes official, that is... +Then [`@semirix`](https://github.com/semirix) refined it to the current version. + +The plan is to make the logo official together with a `1.0` release. diff --git a/doc/src/images/logo/favicon.png b/doc/src/images/logo/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..f5cf9cac4e07a5a5d65d6b6d0607e08fa1159451 GIT binary patch literal 1238 zcmV;{1S$K8P)-T#jd)wBule_LyR5GvSE{HSOb$IxF6ItXj3t{cFw32}6OpM&VIK z)APcU!qcmH&Ejq0P9+sv7Csg3*X4r3x0W6+^NYpFGJjdDM?zy@YZG=Qt2kc8N=nZN z%gb?R(go%BKGsW|iR@fhVvl$?1|fn3a52R=WB3`AzW8N$@G&4OYUF!M`LpCCSCLtx zh|UU0Qsn6uwIJ0K5>?R?GSU>S{{QW(p$_@V)tv!ocrwkmUT|!|_oiun9-8L&5!fH$ zB3sGN9l-Fr=$jSIy$`MHaCTYI;yZA@0bLJTOplc$ySPnN;q?SsqR?>-O^fB8{qA#o z50N$bsw>#tgFZRmy7U8vFK6^uLqgdA000SaNLh0L01FcU01FcV0GgZ_0008{NklA=YA=RILiSwArXA;vWz)z31Hbxp;3TE|lIe!BxK1yJznG-p6;obKk%g zwy*){o7ri7`{MLQIPAY3tiF1F+RV-YNIKHm`Nli{n}F(z=ca*kNcDL$AsuN=yg9Up zp#@aSN5_HBFf-s90MaBNV4}7At?R?^wT2a-@KXvmdAhFf{fgMH9A7Hjl;hN}d_y^q zKc2c5^j&>S2ip7I`=G8rdjRZGv+ch2zIShwauzv|KRUdte(>LjfN*eM9c+kL#Zz4m z{}mvA`1Gz#6QCTYW8u(__G1@+SNPA0gmTQr!a<9LgQoCVbi&In zqI$d_d_J9@90wSkS`v{U)~!zGC-2A8{9sfIP$VasdK9>)DYu#zR?Yf*q($Jw*vUVO zTCgFk&27`#%iZ#s`v;U|;9sB|c_Zhyumym>0HzX~gBPaeB>(^b07*qoM6N<$f;Nv^ AzyJUM literal 0 HcmV?d00001 diff --git a/doc/src/images/logo/favicon.svg b/doc/src/images/logo/favicon.svg new file mode 100644 index 00000000..16aeb468 --- /dev/null +++ b/doc/src/images/logo/favicon.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/doc/src/images/logo/rhai-banner-transparent-colour.png b/doc/src/images/logo/rhai-banner-transparent-colour.png new file mode 100644 index 0000000000000000000000000000000000000000..8d478bdcffff7cd0c87693c238e8f97966811352 GIT binary patch literal 22200 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 E9~PWf_y7O^ literal 0 HcmV?d00001 diff --git a/doc/src/images/logo/rhai-banner-transparent-colour.svg b/doc/src/images/logo/rhai-banner-transparent-colour.svg new file mode 100644 index 00000000..57ee1693 --- /dev/null +++ b/doc/src/images/logo/rhai-banner-transparent-colour.svg @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/src/images/logo/rhai-colour-black.png b/doc/src/images/logo/rhai-colour-black.png new file mode 100644 index 0000000000000000000000000000000000000000..b874a27eea61bded6e78b6167f48bfc8ec853724 GIT binary patch literal 23348 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/src/images/logo/rhai-colour-white.png b/doc/src/images/logo/rhai-colour-white.png new file mode 100644 index 0000000000000000000000000000000000000000..db83cee0cf6f646dd3900359aede760f5f221e34 GIT binary patch literal 23363 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%0D}gM>%iu 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 literal 0 HcmV?d00001 diff --git a/doc/src/images/logo/rhai-colour-white.svg b/doc/src/images/logo/rhai-colour-white.svg new file mode 100644 index 00000000..9008b4dd --- /dev/null +++ b/doc/src/images/logo/rhai-colour-white.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/src/images/logo/rhai-icon-colour-black.png b/doc/src/images/logo/rhai-icon-colour-black.png new file mode 100644 index 0000000000000000000000000000000000000000..55c7d7149a6115e5cc42a7e90086d1bb8a499316 GIT binary patch literal 17621 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 bdVlJlu;0C$y6MLTP=I*4`njxgN@xNAVnwNU literal 0 HcmV?d00001 diff --git a/doc/src/images/logo/rhai-icon-colour-black.svg b/doc/src/images/logo/rhai-icon-colour-black.svg new file mode 100644 index 00000000..05db75f0 --- /dev/null +++ b/doc/src/images/logo/rhai-icon-colour-black.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/src/images/logo/rhai-icon-colour-white.png b/doc/src/images/logo/rhai-icon-colour-white.png new file mode 100644 index 0000000000000000000000000000000000000000..4af8351fff70c4d330db9c0e079885b55b51b574 GIT binary patch literal 17375 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 literal 0 HcmV?d00001 diff --git a/doc/src/images/logo/rhai-icon-colour-white.svg b/doc/src/images/logo/rhai-icon-colour-white.svg new file mode 100644 index 00000000..fde472a9 --- /dev/null +++ b/doc/src/images/logo/rhai-icon-colour-white.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/src/images/logo/rhai-icon-transparent-black.png b/doc/src/images/logo/rhai-icon-transparent-black.png new file mode 100644 index 0000000000000000000000000000000000000000..c1d0c712e945159cbb8a1b52e5949c2df52a1455 GIT binary patch literal 3991 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 + + + + + + + + + + diff --git a/doc/src/images/logo/rhai-icon-transparent-colour.png b/doc/src/images/logo/rhai-icon-transparent-colour.png new file mode 100644 index 0000000000000000000000000000000000000000..c7a54fc49a5121c237acb9dde87244a2e1cb92a1 GIT binary patch literal 15548 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 + + + + + + + + + + + + + diff --git a/doc/src/images/logo/rhai-icon-transparent-white.png b/doc/src/images/logo/rhai-icon-transparent-white.png new file mode 100644 index 0000000000000000000000000000000000000000..cd63ff1e92bad6b3173690e05f814d36d1336918 GIT binary patch literal 4496 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 D7&1Kh literal 0 HcmV?d00001 diff --git a/doc/src/images/logo/rhai-icon-transparent-white.svg b/doc/src/images/logo/rhai-icon-transparent-white.svg new file mode 100644 index 00000000..6648a7ae --- /dev/null +++ b/doc/src/images/logo/rhai-icon-transparent-white.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/doc/src/images/logo/rhai-logo-transparent-colour-black.png b/doc/src/images/logo/rhai-logo-transparent-colour-black.png new file mode 100644 index 0000000000000000000000000000000000000000..9d2f9efb848b96081f741ae875d9bdacf0dd1981 GIT binary patch literal 20505 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/src/images/logo/rhai-logo-transparent-colour-white.png b/doc/src/images/logo/rhai-logo-transparent-colour-white.png new file mode 100644 index 0000000000000000000000000000000000000000..028f6ad66753e8720657f8eab00b3f2bcf6f9fe5 GIT binary patch literal 20664 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 IM6N<$f*$V!761SM literal 0 HcmV?d00001 diff --git a/doc/src/images/logo/rhai-logo-transparent-colour-white.svg b/doc/src/images/logo/rhai-logo-transparent-colour-white.svg new file mode 100644 index 00000000..3055938d --- /dev/null +++ b/doc/src/images/logo/rhai-logo-transparent-colour-white.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/src/images/logo/rhai-logo-transparent-sil-black.png b/doc/src/images/logo/rhai-logo-transparent-sil-black.png new file mode 100644 index 0000000000000000000000000000000000000000..97b7d1227dbbd34e4bec6258ad3342d91dcb3b02 GIT binary patch literal 7392 zcmbVxXH*kk&^{s5gcf=if=Ckq>4YW(3?djQqSPP?(j-Xl2{j1PR6x2&Zw3`m5Qre6 zAR;|fLs0}m69^sN=hydQS&o|)%9JG*mtW_E5O()=h5ea-Gh?-A-yb z*-VU#38lUl`-bP{6qP^;-aY8?Hp=vHWcXoZ(;NGz)x{sXUIL>4Ha}~)(=#5&DEnS= zDqJsXyi-`-zZIghzPKMATF?({MA&}e-*NnWXDd{iAKiDE&pyR1@69|amXdw@p7LxW zlj`bxik93=aE)z4|FLIZFS8-G*?9K4(a=`MI$wXvVk9Zi{{ z3R_8CUoJ-7s<~|7g7V}Fl&scp?7DKLpQ*Rk*KLsg=dSLkX~JUyTKbuVsah}VW#`97tY$G-+F=j1~Rc&SmJ9C8{y)#9^kq-$X$DKx?265 zZNFzEA8;@DVqcRZ+Uvt^nR}#Y&aYhv@ysmL?n}Q2VWZ`DE>B-8d+iE3@YcW_4BZBB zV7I-R`t)qeTQlp~9Xi|M@4l>NNk0pY*ZjiS(^dDY#^4UG`c1b)dXIB#`2=&ghGv+m9HR&kvY0|b`FKn!TXKp%bS zy%>we_L>-UIY#lefU~hz1q(>p@H!c)Ec-{=fezj*edRHflSwREpH>_|i%kn%Ox+dr z^LzL6Nzl{Q-SsW)6#(~4D@79@<+j>Nu@$3{z$#V3#G%l^X#~lY#Kvs_g=Qq$Y6JwT z#y!E|&W^nmTJH{^oy_&0TE&C|RVf|527)tNf4BC&Tog zVByRI@IS3xE;pUmPNl=Rbg?Rpvjy6U6v`09pxY zH;n-H%7OcZnbc<(V6!(q;9#DP1lIiAewK(s(7AEwo#zFBIfZvy^mF^W&q1N$5!ouU zDqO^P74e-j7Yg%mIJ(zD_&k+atH;oi8-T;c?Jv}cibL2egpj$ajDd#|KEU!HY{>XX zAS@!z((GYcGnjw)yOb0ZdP(Gxol`L~CsA@&za~UD$vKKCF&qEzj}B z#9{k?#z4Lq!r{$R`ftGpvZ%t~@{T&fLz>0woman&TpSq@6+INDAdBi3HsG2oLNzIE@WE;kedyen>vx2 z3&G*;ywLfxIU`W9)`W2bj?{Gx(YdHMng70RUSEA4IJ?{u4s!rAj9FW zc$A9_$bN5x!(PhrH91cbhgxVFu~)Rz+j+jb$#8T*-+}%K&dU5N2BefeyF{aE zw{sPf1CoYR<^|5RP6^IIVG8=_*y*!uTL6hQSIflmr&4mrB2x#&$$CTpGgH|dpS^H zMQRQrL;90&MX^zolUwFcM07KdtWg7){)241e(5CwNPH7Wn`QrtY z`2AdmsqW4969a&QsjL`azG1BcUs1o%?boznu!4V_Hu?d#n=pYvx-+83!u>Dgft0{C zKOZg37_hMS!?%b6`mgJY!PIr~jfmUknwS_^&c({^5Rm{fhaAH5XRh+Q7t>1X!f~1B6UxjezGnkHH_G3KWd1c1^nw*!;g)l>XhZ9Vb!(Y8 zsynR}P2h5kx4qVjiNSc<)(ipc!7M%vh5^C!dnWl&J}`=AU1~&@<-N$}<4gki-03X{ zBe?sSsSam40rPmm#|*Zuz4kxTE>AL9@M-b{Hvk&8DgJ~35| zr&}?O@N51>IyQDJhN?8kN>t<+8(WCnTR7{UA7du%@hO5ZCVU9ZfIl@xHmH3^RK<8a z%JVRjsCfVN`TqK=5tB>Mz6U~=8g^^!Ar0wPKH?)-V{<6C7x%@4R8o?%MHE;u76tU z11zBb71%JAw;UzxT`dOP4+aK*evuZWFVC2%F=89-Fm*b(Gjq0_zECP8>g zxYj(e-h86ND4&!skX@s>lgNTBA9B4V`P7`>^n}@u}X&nY( z5E=A7?X3ch0$?3LVRV&ROTr;$c{GbW?$b9iiXw;!moXyP6;8?}c!^aH2a@I*00vY) zr$JdIT=jxe(};NwCz2+q-Y(J)D!OGtqCs8%=<*O}W$=s^M7oRmQKuK*$e&AT6YHpl z!)4380Q7;?s}hhDD)a+WHw02yV*f+JW2BTILVW$4LzM1B0qLD?&jOr@Z$01cXp=j< z+CK)Iz~6e)59kj%bXn~$?6@CiGhj>jMQ9}Ufab9SgzP%K(FsnJF6CL@`e^9Mj-0;R zuri{i1~9^W#7D{SVv+(>(~e}`76c`CUeHx=QFz9;DY^WG&`x_u6GkJkvgcODx^ddi zZ~=Is+jTN?2MS{dJEsHQb3@6IeXn(RwZN1n{{m?j_$^-|p{NxogRxckRgV%%^z$-qkhZ|}`4oE$eu z0WA9rjF>YN5TchalG{s*PrnPr(;pmSS}XO^a_TRj5jMbV#v^Wx!uPI_cKSW6Vg7D( zt>4(vu(|K=C*>}iuqNBX{t7omJl6)SNgle}dQ17ZM~-*ET(_(zE>V8Nz^ zapItihxy-SuLvRJr|h@_Q(>czwI4Bl`*edzGe`YLn_QI|NsRnseh8oL%r*m@iqYBX zu@(yS^j2#O)4%Xxc!)wcQ*Rf=#kE^{_b$6M=1|15)ZW}=PJ{n2;7A6Am}?6b1lcF+ z9FA-FI)y6p+R2i+Dq(|39|%EM)6ZM4SNhU#{`SdgmZ+^T(C_oBQ5~z#TqtGT)22M^ z*!vie70SX3VAkb&@O4>lJa9N>w9E_r$FtI6i;DMY=I) z%*G<A+>B-*eIRXD^UetF8TS!Dvr*QN>~tJcznGSLS@%9mCsyur5W`$ zKHn${t<5pnL%1-ZLv2(Ot~<$F7VWWYKHLi{Qv0xW##GxVF8&@mD-$B=*mlYytC$w$im0Dw)n<`)0pxb!m zl)=GUFz_(atwTpmli@84>8)N+{cLQa?RtMvRM=dQV}j9ISXAJL)3E9uk6$z1GL6Rb z@&q5eb#qq0;i+Yf>&(?$)^NaNZ$-hR-YSv%n3}t2cfAE>J2n>dBOIBJKz8-5<7v-g z`_v+|^-p<$p6cT-Pu|wLvN_W(i~k9saTvuk15ek@0IF!axK&0u^weoN2A{B=1f*=m@*a$31(IHVI}Qi#$pU>Ah&X2l)hyWV4pX=8 z=$$jjd_n?kUa)cxKQe*i7tB(BXZj@mcrfK%^QB~r7BEcjQ?D_x?UwjKXs(N%r&iu! zu%23o%oB%tn(bw3ggUs1!`LE3l}megk(L-Y=B<30qM0d2Lcvby%};W7^yRw(v8>No z_aZU6FFT^ZiDzJx^|9FL>rJjss5r~Qb

A13D|I4Zgwl2KzFMVEi$dXZg@Vzjpk7 zx2R(|r)-hqxuZYko`80i@4M_UiZ6d8Z0;oU?O}ZW%JBMK;v%V1ky?l7oV~iQU3DHX z!f;fR8X2NWKfD~s+ekLM@|<@0JL32ZHtzlI&c~r(a>(3I!ipKioq5y7{~6}^`^MhY z*77kv*&;2hkV#Xwxd5#Pw{zqpiWf+_r9BGy-g3zXhtbko79d(JttkuYv=t&@fKn4nAQTuuei@=5ZU2^9Wd+LQ&mLVGe(@X7ptON{eC+*3riks-8>sagzTucsZtCb^lwZt0rY6YpniRo(%c>wRVfhg8KlTtq<#EMBa~1 z&?$wYivkRJbW^4|>QmLf&vktD=;;z5crvGi$!=7+w0aAB?%dTxE2{-W3i2|P1K4-> z4%=c{KjwAl?0FRn&N)b{*Bc|JC%1@fsY=mR_arK2sVna!vLVjHTJ%!u)d|)=q4S#2 zw(y(*%f76zCCk^VZoVxi=cwKmjY>ML=`eOMSt(p(%saID46zF0!ukNgnCf~-bv5X* z;Sx84vvOC;CyK`{nj_qs*WFdWU5KgCubOcxFUoVkBA#9Rmv-FPHdM)y)O{owr#wtDL5II?RQXWXA)kt@?=rla)Y|h)TfW!mpp#?=X+%K z-d?K9%lzP}x&rJpZB*y;8v{DCNJD^ixf&VkQk9Sb9M8b}B$^5~EFIoeJ@Zx}Knhc|1pn}A;z05U%RU%=$ z%>vai6}-knOs^9x8y}ByBP{~do%@e_&L<3T5r70!f<}U^i-<>wO1x@kIc0HZ(?O_S zRPa*bo#nY<5gch|SmgI$qS;Vnf?+L`ei-iMUU`cs|E}-Lijr~9c>b}4zR6STS&Ha_ zax`r_MsOY}5v%6K*jwgtSUVfdU&al< zHu5#?-9gfouNEzW#G=*l){qC+<1x1EcGeL-=kwyvl1(dRib{I4GZVi|%T>a@ce

tidudLF<5vDUg~Pn2w)V% zE1{Vie-(7d03J~Zs}!UE*c(lCa(Xp~;P}j2-#Axi7bX@cNS0zUWKCPYyRn#B1{Eck zdvQNq>3uGNSqEM&Tf<2gl}y|yS<^TADM$?qo)~Y-Ab2vhaK9a<6Tld%#PF7FvKMjj zIfgTxc%y7hpWU#Y$LJx4c`x=dzSdN<N9bam5Z>tvHFH2oM&-5=cx#Mb zLCQq3If?$L@rNidIjBm~Ledbk4%c;+;x%YrA3d2dXiXH&?|B-e9|7FUaB2NO}L6^Jqg$9$a<~3ZT<0jr)Mv)kqQz9UEc0tud?k;~+o@MP2 z-m|~gd`EDzj;=eI8e!?xT-IC&@{rUJsSWWzVaks11GS;bZz2S~`pS73=^~J;CR%y} z9_ykLV;0u$-Ea@G^n=2tnwdfAUeY3N?OMp$>0`|{b!9tzQ=SVRGABOiyOSW81z?8_ zyN~KJr;3;f070a{4)dJ1%(?vH(60H-qov3M!9H8ChRp2d3mH#+KzOEN=ejv*2(bJR zA^i7)3~%^(Oh}IHPA&Ti*kMA4V4BB(yA0Ish;OoQ#pWBsN3JYgywVl17a6&Uhs;J5 zGSJQQ{uT9cRE043s;NKucaJD?Y_3JoQ>t;J8pl0m$)-B9hJ0}y25>S#Pu-zvlknCb zTc;kmt|fBkU)FE!du}Y@>YU0qni4)$LRF*siyzcTLfy5OkS>gK^25#G4Iz|O$^6|H zAON*49M$f&g=WNeGkK^q=9~ZayvMlViMm6Yzf%bU{1lKaaF+Tz)ynM}32fdF>e1O) z+|E1c@IGT=Gr~r?o0VhH&9=8!tlQSs5?MuZ4mZAzvTREw1WhLO)vFryGseS46d_R(CYbDQ8OdUWY6)m{Ah@cO)X<3!2rK=uloYY z5!P<*TP3lxb@0`R(b2a`GNT2&alF|qftElkqs1E2R`eeWjxw?VzI{B0ntu4`69bG= z{oSK!;n&=jsXc(FaLi3N%YTvq_fd`gElA_@yR|xpT30~h1wnbQ z26c)W{VJMdD3bTU4>cz6ha;jY0C?4}usuerYb*Y$sq(r9TP$i&xu+B7bzeTa{{rux z&e?qxrBiO3W1wK|$K}o!vGYfVlv@dd7|0iCN9mj)-84ODYIl*RhAEF5&O&)@In5IC zd(3EU$yS{+&?1Ud|I)9!L-9JvJH?PERs$~xj21z~CVVdISAJ@=5RK%E)*jSo3TRB! z7i_N~QOez+L0Y4nG8u9hWh(BH4dC(|j7tgDfC;5(=NqFjf8ODvcUh5tkD7Gp31@^? z61n@n5S1&TZ$&kPf8-0kvI0x5d!H?%DSS{P<$1uQ<}%nj^5iHh`!mfAn)R+3m!1(> zk{4O?R4DO~(`dJ0ug<^j*oY+ZO_jb8(DuuI=&*%PrkI`}N-$a2jaiK(-z9NjC8=1m zUCe>VMuy9(II(rQhkU~S0ZyKIz1Z`~6eIN4ig8)e3Q!8^cELo)|L9ZnPRe3sJ>IS7$_uu zf5$7Sk0TdS6lm=gYj!)Er>L)BIl-I zed%v?Hgt^Hdg=WERQ+V;!2paLUd`HS?OpntR!pQlGs!7pu3z3DdwblVIe>4Ou@cK1|vjBeKMQlNOd!XE`V#20VE^3$M^KklzLr`a6g zC27XAS!pN5HLk0IUL(N}$cM73DB7Ed1F*mKB$PCy(taixhp2o+Z_b#Rb`tIIw2@mw z$c~5Fq-VhEZb)o@v-%wY_72`awQ%~35q8C(&P(C^Bac zj+_fR+^RS4&SoP2wpwu{-72?D!i(ih*7mJ8ks5!~0DR%$7pVU1v8WSUPc%1<% G`hNhR0o;)Q literal 0 HcmV?d00001 diff --git a/doc/src/images/logo/rhai-logo-transparent-sil-black.svg b/doc/src/images/logo/rhai-logo-transparent-sil-black.svg new file mode 100644 index 00000000..565c24ba --- /dev/null +++ b/doc/src/images/logo/rhai-logo-transparent-sil-black.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/src/images/logo/rhai-logo-transparent-sil-white.png b/doc/src/images/logo/rhai-logo-transparent-sil-white.png new file mode 100644 index 0000000000000000000000000000000000000000..99049d1817d225b9e5867ce9a7220ada8446cd5d GIT binary patch literal 8310 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 RX5L%_;Mc5->#n*#{2vnw + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/src/images/logo/rhai-sil-black.png b/doc/src/images/logo/rhai-sil-black.png new file mode 100644 index 0000000000000000000000000000000000000000..92b0b7e6f8acb6e0c8a9be82404a2c8beaa3373b GIT binary patch literal 11249 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/src/images/logo/rhai-sil-white.png b/doc/src/images/logo/rhai-sil-white.png new file mode 100644 index 0000000000000000000000000000000000000000..c1466588a3ce31c7b8b0415d6e79dabdf862e87e GIT binary patch literal 12297 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/src/images/rhai.png b/doc/src/images/rhai.png deleted file mode 100644 index 73d16a99e6fd65d5a44ee093098571ba2bd1ede4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5158 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 U5WF%)4FCWD07*qoM6N<$f+NY&3IG5A diff --git a/doc/src/images/rhai_logo.png b/doc/src/images/rhai_logo.png deleted file mode 100644 index af45aa7f65b4374f165852e3ad0391573e7c08ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10280 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 Cm=(eR diff --git a/doc/theme/favicon.png b/doc/theme/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..f5cf9cac4e07a5a5d65d6b6d0607e08fa1159451 GIT binary patch literal 1238 zcmV;{1S$K8P)-T#jd)wBule_LyR5GvSE{HSOb$IxF6ItXj3t{cFw32}6OpM&VIK z)APcU!qcmH&Ejq0P9+sv7Csg3*X4r3x0W6+^NYpFGJjdDM?zy@YZG=Qt2kc8N=nZN z%gb?R(go%BKGsW|iR@fhVvl$?1|fn3a52R=WB3`AzW8N$@G&4OYUF!M`LpCCSCLtx zh|UU0Qsn6uwIJ0K5>?R?GSU>S{{QW(p$_@V)tv!ocrwkmUT|!|_oiun9-8L&5!fH$ zB3sGN9l-Fr=$jSIy$`MHaCTYI;yZA@0bLJTOplc$ySPnN;q?SsqR?>-O^fB8{qA#o z50N$bsw>#tgFZRmy7U8vFK6^uLqgdA000SaNLh0L01FcU01FcV0GgZ_0008{NklA=YA=RILiSwArXA;vWz)z31Hbxp;3TE|lIe!BxK1yJznG-p6;obKk%g zwy*){o7ri7`{MLQIPAY3tiF1F+RV-YNIKHm`Nli{n}F(z=ca*kNcDL$AsuN=yg9Up zp#@aSN5_HBFf-s90MaBNV4}7At?R?^wT2a-@KXvmdAhFf{fgMH9A7Hjl;hN}d_y^q zKc2c5^j&>S2ip7I`=G8rdjRZGv+ch2zIShwauzv|KRUdte(>LjfN*eM9c+kL#Zz4m z{}mvA`1Gz#6QCTYW8u(__G1@+SNPA0gmTQr!a<9LgQoCVbi&In zqI$d_d_J9@90wSkS`v{U)~!zGC-2A8{9sfIP$VasdK9>)DYu#zR?Yf*q($Jw*vUVO zTCgFk&27`#%iZ#s`v;U|;9sB|c_Zhyumym>0HzX~gBPaeB>(^b07*qoM6N<$f;Nv^ AzyJUM literal 0 HcmV?d00001 diff --git a/doc/theme/favicon.svg b/doc/theme/favicon.svg new file mode 100644 index 00000000..4d5eaf02 --- /dev/null +++ b/doc/theme/favicon.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + +