Sebastian Schmidt
6a30bd24e2
Format code.
2021-06-22 11:43:58 +02:00
Sebastian Schmidt
bd9a314baa
Increase test coverage.
2021-06-22 11:41:51 +02:00
Sebastian Schmidt
936960ee3a
Change lints to nightly and include benches.
2021-06-22 10:38:12 +02:00
Sebastian Schmidt
dc9cd98cec
Improve syntax of documentation.
2021-06-15 08:38:37 +03:00
Sebastian Schmidt
aeb822db9c
Move MRSV statement higher up in readme.
2021-06-02 17:51:51 +03:00
Sebastian Schmidt
63b8a43bd6
Update MSRV.
2021-06-02 17:43:37 +03:00
Sebastian Schmidt
0e3fbc17d4
Ad MSRV and github CI script.
2021-06-02 17:04:49 +03:00
Sebastian Schmidt
f880482f06
Move predefined module into context module.
2021-06-02 16:50:37 +03:00
ISibboI
1532c65a3d
Merge pull request #80 from olback/math-consts-context
...
Add math consts context
2021-06-02 16:46:29 +03:00
Edwin Svensson
9f691206dd
move to new 'predefined' module and add link to f64 docs
2021-05-31 01:13:24 +02:00
Edwin Svensson
10a388aaf3
'namespace' & document math functions
2021-05-31 01:04:33 +02:00
Edwin Svensson
ec880155c7
add math consts context
2021-05-30 11:08:59 +02:00
Edwin Svensson
8491bc61fc
add common math functions
2021-05-30 08:52:28 +02:00
Sebastian Schmidt
b4974a8a2b
Prepare for 6.0.0.
2021-05-28 15:14:52 +03:00
Sebastian Schmidt
77e148fcd4
Ensure that Function implements Send and Sync.
...
Relates to #76
2021-05-28 14:27:41 +03:00
Sebastian Schmidt
bee98999db
Make Function clone.
...
To achieve this, the function type wrapped by Function was changed to remove the `Box`.
Relates to #73
2021-05-28 14:12:26 +03:00
Sebastian Schmidt
9fc86a934f
Change context trait.
...
Instead of one catchall trait for contexts, there are now several:
* `Context` is now a "use-only" context, allowing only to retrieve variable names and call functions.
* `ContextWithMutableVariables` also allows to mutate variables.
* `ContextWithMutableFunctions` also allows to mutate functions. However this is not used anywhere at the moment. It will come in handy when the evalexpr language gets a function definition feature.
* `GetFunctionContext` also allows to retrieve functions as `Function` type. This is uncommented at the moment, as it does not have any use in the crate as of now, and likely also not with planned future features.
Additionally, this commit makes functions generic over the context type, as opposed to having a dynamic reference to a context type.
Relates to #73
2021-05-28 10:27:32 +03:00
Sebastian Schmidt
fd3063fc64
Reduce unwrap()s.
...
Relates to #14
2021-05-28 09:40:58 +03:00
Sebastian Schmidt
862bfae920
Add #![forbid(unsafe_code)]
...
Closes #70
2021-05-28 09:30:26 +03:00
Sebastian Schmidt
7bc05e0770
Make node cloneable.
2021-05-28 09:09:04 +03:00
Sebastian Schmidt
6e5ff8615a
Fix lints and benches.
2021-05-28 09:07:26 +03:00
Sebastian Schmidt
1316ae63d0
Update code formatting.
2021-05-28 08:56:21 +03:00
Sebastian Schmidt
43e0256550
Fix != was wrongfully parsed as Token::Eq
...
Fixes #68
2019-08-30 12:48:00 +03:00
Sebastian Schmidt
6163972382
Reformat code examples to reduce horizontal scrolling
2019-08-30 10:07:48 +03:00
Sebastian Schmidt
b8d7344cc5
Improve documentation
2019-08-30 10:03:31 +03:00
Sebastian Schmidt
4571f3a578
Update aggregation operator documentation
...
Relates to #44
2019-08-30 09:16:43 +03:00
Sebastian Schmidt
a36d4d3815
Use mutable contexts in eval methods of Node
...
This was forgotten when closing #45 .
Relates to #45
2019-08-29 18:06:39 +03:00
Sebastian Schmidt
2d1704b9a3
Implement better error messages for addition with incompatible types
...
Implements #60
2019-08-29 16:36:35 +03:00
Sebastian Schmidt
2ec3dc74c1
Make operator enum public
...
This is required for better error messages.
Relates to #60
2019-08-29 16:28:43 +03:00
Sebastian Schmidt
88719317a5
Fix documentation of error constructors
...
Fixes #61
2019-08-29 16:11:20 +03:00
Sebastian Schmidt
0e2ca4a489
Add but not use WrongTypeCombinationError
...
Relates to #60
2019-08-29 13:49:56 +03:00
Sebastian Schmidt
a3faefb893
Fix panic when adding number to string
...
For no reason, unwraps were used in the operator module.
Fixes #59
2019-08-29 13:36:18 +03:00
Sebastian Schmidt
d8eed924cc
Add documentation about operator assignments
2019-08-29 13:21:54 +03:00
Sebastian Schmidt
b7233a3337
Implement operator assignments
...
Implements #34
2019-08-29 13:10:12 +03:00
Sebastian Schmidt
b9c4b34a2f
Make builtin len support tuples
...
Implements #41
2019-08-29 11:10:54 +03:00
Sebastian Schmidt
95ba26a2cd
Fix doctest for context creation macro
...
Relates to #48
2019-08-29 10:50:32 +03:00
Sebastian Schmidt
60b6cdf180
Add documentation about context creation macro
...
Implements #48
2019-08-29 10:47:58 +03:00
Sebastian Schmidt
3670bcaf63
Add comments to code in docs
2019-08-29 10:33:12 +03:00
Sebastian Schmidt
88559d5493
Add some information about contexts to docs
2019-08-29 10:30:55 +03:00
Sebastian Schmidt
2399df16a1
Run rustfmt
2019-08-29 10:02:05 +03:00
Sebastian Schmidt
6ace829117
Create mutable context when using eval functions without context
...
While this is a tiny hit on performance, it is something that the user probably wants.
It specifically prevents the user from seeing ContextNotManipulable errors when using the full power of evalexpr in the simplest eval calls.
Implements #45
2019-08-29 09:44:14 +03:00
Sebastian Schmidt
6b1706f68f
Run rustfix
...
Relates to #55
2019-08-29 09:03:31 +03:00
Sebastian Schmidt
fa0a021d71
Update use statements to Rust 2018
...
Relates to #55
2019-08-29 09:02:15 +03:00
Sebastian Schmidt
0c5d032b37
Merge remote-tracking branch 'origin/master'
2019-08-29 08:57:07 +03:00
Sebastian Schmidt
2ee1f8f62c
Deny missing docs
2019-08-29 08:56:58 +03:00
Sebastian Schmidt
e6c19077b6
Implement value decomposition API
...
* Removed expect_... methods and replaced them with .as_...() methods. This removes the need to import the free-standing methods every time and makes the code cleaner.
* Changed all the examples appropriately.
Implements #53
2019-08-29 08:56:49 +03:00
Atul Bhosale
311c70a823
Update crate for Rust 2018 using 'cargo fix --edition'
2019-06-06 23:23:30 +05:30
Sebastian Schmidt
502ec0adce
Format code
2019-05-04 13:54:19 +02:00
Sebastian Schmidt
6f533ca925
Merge branch '52_remove_automatic_function_argument_decomposition'
2019-05-04 13:53:47 +02:00
Sebastian Schmidt
f6c2ef2fb6
Remove automatic function argument decomposition
...
Relates to #52
2019-05-04 13:43:29 +02:00
Sebastian Schmidt
2ca7209d22
Remove debug output
2019-05-04 13:43:05 +02:00
Sebastian Schmidt
21b308f3ae
Format code
2019-04-26 17:37:59 +02:00
ISibboI
b85e8e1b75
Merge pull request #49 from lovasoa/master
...
Use the new context macro in the README examples
2019-04-26 17:36:15 +02:00
Sebastian Schmidt
bc826e5bf2
Use context_map macro in lib.rs documentation as well
...
Should have used `cargo sync-readme` to begin with, but that was not
documented at the time of this pull request.
2019-04-26 17:33:59 +02:00
Sebastian Schmidt
8432058052
Execute serde doctest only if serde_support
is enabled
...
Relates to #50
2019-04-24 18:36:30 +02:00
Sebastian Schmidt
6f77471354
Fixed aggregation operator
...
Manage sequence operators, which currently are `Chain` and `Token` on the stack without ever inserting unfinished sequence operator nodes into another node.
Relates to #44
2019-04-22 19:08:55 +02:00
Sebastian Schmidt
2e929ae0fe
Replace manual type_id
with builtin function of trait Any
...
Relates to #44
2019-04-22 16:24:26 +02:00
Sebastian Schmidt
d576cec9b9
Add flattening of operator chains when building operator tree
...
Relates to #44
2019-04-22 16:20:33 +02:00
Sebastian Schmidt
531b7b72a0
Make Operator::max_argument_amount
optional
...
Relates to #44
2019-04-22 16:17:02 +02:00
Sebastian Schmidt
0eaeb3f6ab
Improve context_map macro docs
...
Relates to #48
2019-04-16 20:52:18 +02:00
Ophir LOJKINE
bb827c55ce
Add a macro for easy context definition
2019-04-15 00:07:07 +02:00
Sebastian Schmidt
6c078c49e5
Refactor operators into an enum
...
(This commit is not formatted properly)
Relates to #46
2019-04-14 16:54:35 +02:00
Sebastian Schmidt
697fbb5d45
Implement iterators over variable and function identifiers
...
Relates to #37
2019-04-13 20:16:05 +02:00
Sebastian Schmidt
83386c03d3
Improve documentation of builtin functions
...
Relates to #38
2019-04-13 18:12:33 +02:00
ISibboI
2f7d1c2dfe
Merge pull request #38 from bittrance/string-operators
...
String operators and builtin functions
2019-04-13 18:02:24 +02:00
Quest
dbf3949af6
Namespace string builtins into "str::".
2019-04-12 23:45:29 +02:00
Quest
d72334c246
Rename builtin upcase,downcase -> to_uppercase, to_lowercase.
2019-04-12 23:45:29 +02:00
Quest
7c6b6d4319
Rename matches,replace -> regex_{matches,replace}.
...
Also simplify their error handling.
2019-04-12 23:45:29 +02:00
Quest
be54931f76
Builtin string functions - downcase, len, match(regex), replace(regex), trim, upcase. New dependency regex.
2019-04-12 23:35:33 +02:00
Sebastian Schmidt
e328adb97b
Implement Node::iter_identifiers()
...
This commit implements an iterator over the identifiers in an expression.
The identifiers are iterated pre-order, meaning that higher nodes in the tree are emitted first.
The identifier iterator is based on a general iterator over all nodes in an operator tree, which can be used for further featues.
Relates to #37
2019-04-12 19:27:34 +02:00
Sebastian Schmidt
7545d1f31e
Fix ExpectedNumber
error message
...
Relates to #40
2019-04-12 18:48:27 +02:00
Sebastian Schmidt
15313f7341
Update target release
2019-04-12 18:45:46 +02:00
Quest
a9c45307dd
Support addition and comparison of strings.
2019-04-05 23:07:54 +02:00
Sebastian Schmidt
2caf000584
Export expect_function_argument_amount
2019-03-31 15:46:22 +02:00
Sebastian Schmidt
67d68cd974
Add string constants
...
* Implement string parsing in tokenizer
* Implement escape sequences `\"` and `\\`
* Document changes
* Update change log
Relates to #35
2019-03-30 11:54:26 +01:00
Sebastian Schmidt
c63206fa17
Add derive(Default)
to HashMapContext
2019-03-28 15:44:25 +01:00
Sebastian Schmidt
17bedddb11
Add serde support for HashMapContext
...
Relates to #33
2019-03-28 15:40:02 +01:00
Sebastian Schmidt
606c358cc9
Make operator table one-columned
2019-03-28 15:01:20 +01:00
Sebastian Schmidt
aeb584edca
Add quickstart documentation with chain and assign features
2019-03-28 12:09:46 +01:00
Sebastian Schmidt
44152533c3
Set release target to major
2019-03-28 11:49:06 +01:00
Sebastian Schmidt
ab49531306
Document chain operator
...
Relates to #26
2019-03-28 11:46:56 +01:00
Sebastian Schmidt
9d27969eac
Implement and test chain operator
...
Relates to #26
2019-03-28 11:34:54 +01:00
Sebastian Schmidt
4838a21a57
Add default implementation for Operator::is_left_to_right
2019-03-28 11:14:55 +01:00
Sebastian Schmidt
83269068a2
Add the assignment operator
...
Relates to #25
2019-03-28 11:12:47 +01:00
Sebastian Schmidt
13420ed745
Document the empty type
...
Relates to #28
2019-03-28 10:38:16 +01:00
Sebastian Schmidt
5bc4bcb702
Add crate level shortcut evaluations for Value::Empty
...
Relates to #28
2019-03-28 10:32:42 +01:00
Sebastian Schmidt
7d36ebe8df
Add Node
shortcut evaluations for Value::Empty
...
Relates to #28
2019-03-28 10:26:49 +01:00
Sebastian Schmidt
a7b5f602d5
Do not require expressions to have content
...
* Make parser return implicit toplevel node
* Make `RootNode` return `Value::Empty` if it has no arguments instead of failing
Relates to #28
2019-03-28 10:10:16 +01:00
Sebastian Schmidt
88ab1e1987
Add Value::Empty
and ValueType::Empty
...
Relates to #28
2019-03-28 09:56:44 +01:00
Sebastian Schmidt
3c108d5960
Add crate shortcut methods to eval with context mut
...
Relates to #30
2019-03-28 09:48:12 +01:00
Sebastian Schmidt
e266f4fc0d
Merge ContextMut
with Context
and add eval_<type>_with_context_mut
methods
...
Trait objects of `ContextMut` cannot be converted into `Context`, even though `ContextMut` requires `Context`.
Relates to #30
2019-03-28 09:22:48 +01:00
Sebastian Schmidt
6bd68e6491
Add eval_mut
function to Operator
trait
...
Relates to #30
2019-03-28 08:52:49 +01:00
Sebastian Schmidt
0acbcd8958
Format code
2019-03-28 08:44:04 +01:00
Sebastian Schmidt
ece22c6b35
Fix typo
2019-03-28 08:41:46 +01:00
Sebastian Schmidt
83451a9028
Use as_number in quickstart example
...
Otherwise the example would not allow mixed float and int arguments.
2019-03-28 08:41:16 +01:00
Sebastian Schmidt
6f31d69d7d
Prepare 2.0.0 release
2019-03-27 19:14:24 +01:00
Sebastian Schmidt
d77fa15864
Use EvalexprResult<T>
everywhere
...
Relates to #31
2019-03-27 19:09:58 +01:00
Sebastian Schmidt
d5544cdbf2
Add eval_number[_with_context] crate methods
...
Relates to #20
2019-03-27 18:59:06 +01:00
Sebastian Schmidt
720b2f90c2
Add Node::eval_number[_with_context] methods
...
Relates to #20
2019-03-27 18:55:51 +01:00
Sebastian Schmidt
7d0abc8406
Rename as_float
to as_number
and add strict as_float
...
Relates to #20
2019-03-27 18:49:02 +01:00