Commit Graph

78 Commits

Author SHA1 Message Date
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