Commit Graph

130 Commits

Author SHA1 Message Date
Sebastian Schmidt
3da6019dae Add Context trait
* Rename `HashMapConfiguration` to `HashMapContext`
 * Rename `EmptyConfiguration` to `EmptyContext`
 * Implement `Context` for both predefined contexts
 * Update tests and doctests

Relates to #22
2019-03-27 17:45:06 +01:00
Sebastian Schmidt
fd879193b6 Rename Error to EvalexprError and add EvalexprResult
Relates to #27
2019-03-27 16:33:46 +01:00
Sebastian Schmidt
8a49bf9c11 Get rid of some unwraps
Relates to #14
2019-03-27 16:16:40 +01:00
Sebastian Schmidt
49da58976e Improve serde readme
Relates to #18
2019-03-23 15:39:19 +02:00
Sebastian Schmidt
b302ad112d Format code 2019-03-23 15:34:24 +02:00
Sebastian Schmidt
cba49f7bba Rename Error::Custom to Error::CustomMessage 2019-03-23 15:30:34 +02:00
Sebastian Schmidt
16a79cd567 Remove serde:🇩🇪:Error implementation for error::Error
Serde forces us to be generic over which error our visitor returns, so we cannot return our error type.
So the implementation of serde's error trait is useless to us at this state.

Relates to #18
2019-03-23 15:27:18 +02:00
Sebastian Schmidt
a7ca4c717d Implement, test and document serde Deserialize for expressions
Relates to #18
2019-03-23 15:20:43 +02:00
Sebastian Schmidt
3d440524a5 Fix checking for serde feature flag in code
Relates to #18
2019-03-23 14:29:53 +02:00
Sebastian Schmidt
a4d1a34a0c Implement Display and std::error::Error for Error
Relates to #19
2019-03-23 14:27:44 +02:00
Sebastian Schmidt
16bde54aa5 Implement display for Token and PartialToken
Relates to #19
2019-03-23 14:22:50 +02:00
Sebastian Schmidt
5e491f6771 Add serde feature
Relates to #18
2019-03-23 12:46:52 +02:00
Sebastian Schmidt
3a816fa7e7 Add highlighting to readme 2019-03-21 09:40:50 +02:00
Sebastian Schmidt
1375134e9f Document operations on values
Relates to #16
2019-03-20 17:30:37 +02:00
Sebastian Schmidt
d3deef1f53 Provide more methods for value conversions
+ Provide is_[type] for each value type
 + Provide as_[type] for each value type

Related to #16
2019-03-20 17:30:14 +02:00
Sebastian Schmidt
d4359d71bf Document the shortcut functions for direct evaluation into types
Related to #15
2019-03-20 17:06:47 +02:00
Sebastian Schmidt
c980e49014 Add shortcut functions to evaluate Node into value types
+ Add functions `Node::eval_[type]` and `Node::eval_[type]_with_configuration` to evaluate a node directly into a value type

Partially implements #15
2019-03-20 16:57:21 +02:00
Sebastian Schmidt
e337520805 Introduce TupleType type alias for representing tuples 2019-03-20 16:40:57 +02:00
Sebastian Schmidt
98ca788910 Reword documentation of shortcut methods to be more direct
Changed `expecting a type` to `into a type` to be more clear that the function actually returns a result of the respecting type.

Related to #15
2019-03-20 16:34:23 +02:00
Sebastian Schmidt
2dac0576a7 Add shortcut functions for evaluating directly into a value type
+ Added shortcut functions `eval_[type]` and `eval_[type]_with_configuration` for each value type
 + Added integration tests for the above

 Partially implements #15
2019-03-20 16:29:50 +02:00
Sebastian Schmidt
5549f1bba5 Make internal value type aliases for float and int public 2019-03-20 16:18:52 +02:00
Sebastian Schmidt
36a65c470b Refactor lib.rs
* Move tests into integration test folder
 * Move crate methods into interface module
2019-03-20 15:48:05 +02:00
Sebastian Schmidt
4177ae7e77 Prepare 1.0.0 release 2019-03-20 15:04:59 +02:00
Sebastian Schmidt
6f17e481aa Ensure no-panic for operators
Partially implements #11
2019-03-20 12:52:11 +02:00
Sebastian Schmidt
58e8603194 Rename Node::eval to Node::eval_with_configuration for consistency.
* Rename `Node::eval` to `Node::eval_with_configuration`
 + Add `Node::eval` that calls `Node::eval_with_configuration` with an `EmptyConfiguration`
 + Improve documentation of `Node` and the changed methods

Implements #5
2019-03-20 11:58:08 +02:00
Sebastian Schmidt
e387d3370b Fix a typo 2019-03-20 11:50:09 +02:00
Sebastian Schmidt
1ae674a693 Replace TypeError with more detailed errors
Implements #9
2019-03-20 11:42:17 +02:00
Sebastian Schmidt
38c4c35a0b Document all remaining public members
Implements #6
2019-03-20 11:32:55 +02:00
Sebastian Schmidt
cdcd24e7b6 Document value type
Implements #6 partially
2019-03-19 20:31:03 +02:00
Sebastian Schmidt
6fe5a8cdef Document toplevel functions
Implements #6
2019-03-19 20:24:11 +02:00
Sebastian Schmidt
4a32062089 Warn for missing docs 2019-03-19 20:13:04 +02:00
Sebastian Schmidt
827c7440be Format code and sync readme 2019-03-19 20:12:30 +02:00
Sebastian Schmidt
92da684c69 Implement min and max builtin functions
Implement #8, partially implement #1
2019-03-19 20:08:23 +02:00
Sebastian Schmidt
bcfce4aaec Add trailing commas to match arm blocks 2019-03-19 19:06:37 +02:00
Sebastian Schmidt
f0ab317961 Test functions with arbitrary argument amount
Implements #7
2019-03-19 19:05:21 +02:00
Sebastian Schmidt
fd3243e555 Implement functions with arbitrary argument amount
Implements #7
2019-03-19 18:58:53 +02:00
Sebastian Schmidt
8e898044c0 Document the aggregation operator
Documents #4
2019-03-19 18:49:59 +02:00
Sebastian Schmidt
55e8b51228 Add exponentiation operator
+ Add hat token
 + Add exponentiation operator
 + Document exponentiation operator
 + Test exponentiation operator

Implements #3
2019-03-19 18:42:50 +02:00
Sebastian Schmidt
93e8d867b4 Add exponentation operator
+ Add hat token
 + Add exponentation operator

Implements #3
2019-03-19 18:32:10 +02:00
Sebastian Schmidt
c631171ff0 Add comma operator and display implementations
+ Add comma token
 + Add tuple operator
 + Add tuple value type
 + Implement display for `tree::Node` and all related types
 + Add support for right-to-left chaining of operators with same precedence

The priority of chaining of operators with the same precedence remains left-to-right.
Only if two consecutive operators with the same precedence are right-to-left, they will be ordered right-to-left.

Implements #4.
2019-03-19 18:24:36 +02:00
Sebastian Schmidt
265b1214b0 Improve documentation about precedence and operators and README introduction 2019-03-19 16:47:17 +02:00
Sebastian Schmidt
c58d5dcda5 Test if functions can actually be called with multiple arguments 2019-03-19 12:47:01 +02:00
Sebastian Schmidt
dc8c818789 Move function module to folder to match module style of this repo 2019-03-19 12:29:03 +02:00
Sebastian Schmidt
7896253fb9 Complete reimplementation 2019-03-19 12:27:43 +02:00
Sebastian Schmidt
ed73f779e9 Add explanation about functions and precedences 2019-03-19 12:22:06 +02:00
Sebastian Schmidt
2b9d50909e Add quickstart guide and detailed explanation of features 2019-03-19 12:01:06 +02:00
Sebastian Schmidt
a51680da08 Add precedences to operators in docs 2019-03-19 11:03:34 +02:00
Sebastian Schmidt
33d26aceb0 Check how github renders readme 2019-03-19 10:43:52 +02:00
Sebastian Schmidt
79d8084baa Add proper documentation 2019-03-18 19:51:20 +02:00
Sebastian Schmidt
d2336cb59d Implement function to build operator tree 2019-03-18 19:25:43 +02:00
Sebastian Schmidt
879f1fcd22 Evaluate arbitrary functions 2019-03-18 19:22:44 +02:00
Sebastian Schmidt
22d0d2c3d0 Format code and specify exports 2019-03-18 18:02:45 +02:00
Sebastian Schmidt
b3a616c39a Working on implementing functions 2019-03-15 20:26:25 +02:00
Sebastian Schmidt
3351d19db3 Tested configuration 2019-03-15 19:46:00 +02:00
Sebastian Schmidt
b1abbd6cfd Implemented configuration 2019-03-15 19:29:36 +02:00
Sebastian Schmidt
406bfe0e05 rustfmt 2019-03-15 19:22:14 +02:00
Sebastian Schmidt
bb74bee382 Implemented boolean expressions 2019-03-15 19:19:59 +02:00
Sebastian Schmidt
a1ba054609 Implemented mod and replaced Braced with RootNode 2019-03-15 18:34:40 +02:00
Sebastian Schmidt
1bc2909c1b Implemented and tested braces 2019-03-15 18:27:10 +02:00
Sebastian Schmidt
879fc4fe3d Tested separate int and float types 2019-03-15 17:43:26 +02:00
Sebastian Schmidt
0ee4946eaf Implemented separate int and float types 2019-03-15 17:40:38 +02:00
Sebastian Schmidt
22490f5036 Tested arithmetic precedence 2019-03-15 17:24:45 +02:00
Sebastian Schmidt
3975a17f0b Fixed warnings and removed unused dependencies. 2019-03-15 17:21:34 +02:00
Sebastian Schmidt
045313f076 More test cases 2019-03-15 17:18:20 +02:00
Sebastian Schmidt
b38c102c1d Complete rewrite of crate. Simple tokenizer and treeifyer (Or however the compiler people call these.). 2019-03-15 17:14:27 +02:00
Sebastian Schmidt
c313ec8ce5 Deciding to try a reboot 2019-03-15 13:42:18 +02:00
Sebastian Schmidt
f3d6c2b7ed Updated readme 2019-03-15 13:12:18 +02:00
Sebastian Schmidt
1e5e9a3ae9 Added converge builtin function 2019-03-15 12:04:01 +02:00
fengcen
0c4413836d fix #2 2018-08-24 09:09:55 +08:00
fengcen
daf3f5bd4a allow null to compare 2017-12-07 07:24:12 +08:00
fengcen
ce671d0f0a update serde to version 0.9, bump version 0.4.0 2017-02-13 08:26:47 +08:00
fengcen
ed7398ca30 fix bench. 2016-11-22 08:32:04 +08:00
fengcen
c2e3401c74 fix compile in stable. 2016-11-22 07:51:18 +08:00
fengcen
3cb3197f6f add . and [] support. 2016-11-21 09:14:40 +08:00
fengcen
032e57df43 add Expr builder. add ExecOptions. add len() 2016-11-20 16:04:06 +08:00
fengcen
fa9c6a4430 change readme. 2016-11-18 12:03:03 +08:00
fengcen
3c19414593 format code. 2016-11-17 23:53:17 +08:00
fengcen
3729348632 remove redundant code. 2016-11-17 08:35:02 +08:00
fengcen
638b0d8af2 update document link. rename error. 2016-11-17 00:28:54 +08:00
fengcen
1d84eea270 init repository. 2016-11-17 00:12:26 +08:00