Merge pull request #49 from lovasoa/master
Use the new context macro in the README examples
This commit is contained in:
commit
b85e8e1b75
29
README.md
29
README.md
@ -64,10 +64,10 @@ And you can use **variables** and **functions** in expressions like this:
|
||||
use evalexpr::*;
|
||||
use evalexpr::error::expect_number;
|
||||
|
||||
let mut context = HashMapContext::new();
|
||||
context.set_value("five".into(), 5.into()).unwrap(); // Do proper error handling here
|
||||
context.set_value("twelve".into(), 12.into()).unwrap(); // Do proper error handling here
|
||||
context.set_function("f".into(), Function::new(Some(1) /* argument amount */, Box::new(|arguments| {
|
||||
let context = context_map! {
|
||||
"five" => 5,
|
||||
"twelve" => 12,
|
||||
"f" => Function::new(Some(1) /* argument amount */, Box::new(|arguments| {
|
||||
if let Value::Int(int) = arguments[0] {
|
||||
Ok(Value::Int(int / 2))
|
||||
} else if let Value::Float(float) = arguments[0] {
|
||||
@ -75,8 +75,8 @@ context.set_function("f".into(), Function::new(Some(1) /* argument amount */, Bo
|
||||
} else {
|
||||
Err(EvalexprError::expected_number(arguments[0].clone()))
|
||||
}
|
||||
}))).unwrap(); // Do proper error handling here
|
||||
context.set_function("avg".into(), Function::new(Some(2) /* argument amount */, Box::new(|arguments| {
|
||||
})),
|
||||
"avg" => Function::new(Some(2) /* argument amount */, Box::new(|arguments| {
|
||||
expect_number(&arguments[0])?;
|
||||
expect_number(&arguments[1])?;
|
||||
|
||||
@ -85,7 +85,8 @@ context.set_function("avg".into(), Function::new(Some(2) /* argument amount */,
|
||||
} else {
|
||||
Ok(Value::Float((arguments[0].as_number()? + arguments[1].as_number()?) / 2.0))
|
||||
}
|
||||
}))).unwrap(); // Do proper error handling here
|
||||
}))
|
||||
}.unwrap(); // Do proper error handling here
|
||||
|
||||
assert_eq!(eval_with_context("five + 8 > f(twelve)", &context), Ok(Value::from(true)));
|
||||
// `eval_with_context` returns a variant of the `Value` enum,
|
||||
@ -102,10 +103,11 @@ use evalexpr::*;
|
||||
|
||||
let precompiled = build_operator_tree("a * b - c > 5").unwrap(); // Do proper error handling here
|
||||
|
||||
let mut context = HashMapContext::new();
|
||||
context.set_value("a".into(), 6.into()).unwrap(); // Do proper error handling here
|
||||
context.set_value("b".into(), 2.into()).unwrap(); // Do proper error handling here
|
||||
context.set_value("c".into(), 3.into()).unwrap(); // Do proper error handling here
|
||||
let mut context = context_map! {
|
||||
"a" => 6,
|
||||
"b" => 2,
|
||||
"c" => 3
|
||||
}.unwrap(); // Do proper error handling here
|
||||
assert_eq!(precompiled.eval_with_context(&context), Ok(Value::from(true)));
|
||||
|
||||
context.set_value("c".into(), 8.into()).unwrap(); // Do proper error handling here
|
||||
@ -344,8 +346,9 @@ Example parsing with [ron format](docs.rs/ron):
|
||||
extern crate ron;
|
||||
use evalexpr::*;
|
||||
|
||||
let mut context = HashMapContext::new();
|
||||
context.set_value("five".into(), 5.into()).unwrap(); // Do proper error handling here
|
||||
let mut context = context_map!{
|
||||
"five" => 5
|
||||
}.unwrap(); // Do proper error handling here
|
||||
|
||||
// In ron format, strings are surrounded by "
|
||||
let serialized_free = "\"five * five\"";
|
||||
|
29
src/lib.rs
29
src/lib.rs
@ -51,10 +51,10 @@
|
||||
//! use evalexpr::*;
|
||||
//! use evalexpr::error::expect_number;
|
||||
//!
|
||||
//! let mut context = HashMapContext::new();
|
||||
//! context.set_value("five".into(), 5.into()).unwrap(); // Do proper error handling here
|
||||
//! context.set_value("twelve".into(), 12.into()).unwrap(); // Do proper error handling here
|
||||
//! context.set_function("f".into(), Function::new(Some(1) /* argument amount */, Box::new(|arguments| {
|
||||
//! let context = context_map! {
|
||||
//! "five" => 5,
|
||||
//! "twelve" => 12,
|
||||
//! "f" => Function::new(Some(1) /* argument amount */, Box::new(|arguments| {
|
||||
//! if let Value::Int(int) = arguments[0] {
|
||||
//! Ok(Value::Int(int / 2))
|
||||
//! } else if let Value::Float(float) = arguments[0] {
|
||||
@ -62,8 +62,8 @@
|
||||
//! } else {
|
||||
//! Err(EvalexprError::expected_number(arguments[0].clone()))
|
||||
//! }
|
||||
//! }))).unwrap(); // Do proper error handling here
|
||||
//! context.set_function("avg".into(), Function::new(Some(2) /* argument amount */, Box::new(|arguments| {
|
||||
//! })),
|
||||
//! "avg" => Function::new(Some(2) /* argument amount */, Box::new(|arguments| {
|
||||
//! expect_number(&arguments[0])?;
|
||||
//! expect_number(&arguments[1])?;
|
||||
//!
|
||||
@ -72,7 +72,8 @@
|
||||
//! } else {
|
||||
//! Ok(Value::Float((arguments[0].as_number()? + arguments[1].as_number()?) / 2.0))
|
||||
//! }
|
||||
//! }))).unwrap(); // Do proper error handling here
|
||||
//! }))
|
||||
//! }.unwrap(); // Do proper error handling here
|
||||
//!
|
||||
//! assert_eq!(eval_with_context("five + 8 > f(twelve)", &context), Ok(Value::from(true)));
|
||||
//! // `eval_with_context` returns a variant of the `Value` enum,
|
||||
@ -89,10 +90,11 @@
|
||||
//!
|
||||
//! let precompiled = build_operator_tree("a * b - c > 5").unwrap(); // Do proper error handling here
|
||||
//!
|
||||
//! let mut context = HashMapContext::new();
|
||||
//! context.set_value("a".into(), 6.into()).unwrap(); // Do proper error handling here
|
||||
//! context.set_value("b".into(), 2.into()).unwrap(); // Do proper error handling here
|
||||
//! context.set_value("c".into(), 3.into()).unwrap(); // Do proper error handling here
|
||||
//! let mut context = context_map! {
|
||||
//! "a" => 6,
|
||||
//! "b" => 2,
|
||||
//! "c" => 3
|
||||
//! }.unwrap(); // Do proper error handling here
|
||||
//! assert_eq!(precompiled.eval_with_context(&context), Ok(Value::from(true)));
|
||||
//!
|
||||
//! context.set_value("c".into(), 8.into()).unwrap(); // Do proper error handling here
|
||||
@ -331,8 +333,9 @@
|
||||
//! extern crate ron;
|
||||
//! use evalexpr::*;
|
||||
//!
|
||||
//! let mut context = HashMapContext::new();
|
||||
//! context.set_value("five".into(), 5.into()).unwrap(); // Do proper error handling here
|
||||
//! let mut context = context_map!{
|
||||
//! "five" => 5
|
||||
//! }.unwrap(); // Do proper error handling here
|
||||
//!
|
||||
//! // In ron format, strings are surrounded by "
|
||||
//! let serialized_free = "\"five * five\"";
|
||||
|
Loading…
Reference in New Issue
Block a user