dentaku_zevo 3.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +14 -0
- data/.pryrc +2 -0
- data/.rubocop.yml +114 -0
- data/.travis.yml +10 -0
- data/CHANGELOG.md +281 -0
- data/Gemfile +4 -0
- data/LICENSE +21 -0
- data/README.md +342 -0
- data/Rakefile +31 -0
- data/dentaku.gemspec +32 -0
- data/lib/dentaku/ast/access.rb +47 -0
- data/lib/dentaku/ast/arithmetic.rb +241 -0
- data/lib/dentaku/ast/array.rb +41 -0
- data/lib/dentaku/ast/bitwise.rb +42 -0
- data/lib/dentaku/ast/case/case_conditional.rb +38 -0
- data/lib/dentaku/ast/case/case_else.rb +35 -0
- data/lib/dentaku/ast/case/case_switch_variable.rb +35 -0
- data/lib/dentaku/ast/case/case_then.rb +35 -0
- data/lib/dentaku/ast/case/case_when.rb +39 -0
- data/lib/dentaku/ast/case.rb +81 -0
- data/lib/dentaku/ast/combinators.rb +50 -0
- data/lib/dentaku/ast/comparators.rb +89 -0
- data/lib/dentaku/ast/datetime.rb +8 -0
- data/lib/dentaku/ast/function.rb +56 -0
- data/lib/dentaku/ast/function_registry.rb +98 -0
- data/lib/dentaku/ast/functions/all.rb +23 -0
- data/lib/dentaku/ast/functions/and.rb +25 -0
- data/lib/dentaku/ast/functions/any.rb +23 -0
- data/lib/dentaku/ast/functions/avg.rb +13 -0
- data/lib/dentaku/ast/functions/count.rb +26 -0
- data/lib/dentaku/ast/functions/duration.rb +51 -0
- data/lib/dentaku/ast/functions/enum.rb +37 -0
- data/lib/dentaku/ast/functions/filter.rb +23 -0
- data/lib/dentaku/ast/functions/if.rb +51 -0
- data/lib/dentaku/ast/functions/map.rb +23 -0
- data/lib/dentaku/ast/functions/max.rb +5 -0
- data/lib/dentaku/ast/functions/min.rb +5 -0
- data/lib/dentaku/ast/functions/mul.rb +12 -0
- data/lib/dentaku/ast/functions/not.rb +5 -0
- data/lib/dentaku/ast/functions/or.rb +25 -0
- data/lib/dentaku/ast/functions/pluck.rb +30 -0
- data/lib/dentaku/ast/functions/round.rb +5 -0
- data/lib/dentaku/ast/functions/rounddown.rb +8 -0
- data/lib/dentaku/ast/functions/roundup.rb +8 -0
- data/lib/dentaku/ast/functions/ruby_math.rb +55 -0
- data/lib/dentaku/ast/functions/string_functions.rb +212 -0
- data/lib/dentaku/ast/functions/sum.rb +12 -0
- data/lib/dentaku/ast/functions/switch.rb +8 -0
- data/lib/dentaku/ast/functions/xor.rb +44 -0
- data/lib/dentaku/ast/grouping.rb +23 -0
- data/lib/dentaku/ast/identifier.rb +52 -0
- data/lib/dentaku/ast/literal.rb +30 -0
- data/lib/dentaku/ast/logical.rb +8 -0
- data/lib/dentaku/ast/negation.rb +54 -0
- data/lib/dentaku/ast/nil.rb +13 -0
- data/lib/dentaku/ast/node.rb +28 -0
- data/lib/dentaku/ast/numeric.rb +8 -0
- data/lib/dentaku/ast/operation.rb +39 -0
- data/lib/dentaku/ast/string.rb +15 -0
- data/lib/dentaku/ast.rb +39 -0
- data/lib/dentaku/bulk_expression_solver.rb +128 -0
- data/lib/dentaku/calculator.rb +169 -0
- data/lib/dentaku/date_arithmetic.rb +45 -0
- data/lib/dentaku/dependency_resolver.rb +24 -0
- data/lib/dentaku/exceptions.rb +102 -0
- data/lib/dentaku/flat_hash.rb +38 -0
- data/lib/dentaku/parser.rb +349 -0
- data/lib/dentaku/print_visitor.rb +101 -0
- data/lib/dentaku/string_casing.rb +7 -0
- data/lib/dentaku/token.rb +36 -0
- data/lib/dentaku/token_matcher.rb +138 -0
- data/lib/dentaku/token_matchers.rb +29 -0
- data/lib/dentaku/token_scanner.rb +183 -0
- data/lib/dentaku/tokenizer.rb +110 -0
- data/lib/dentaku/version.rb +3 -0
- data/lib/dentaku/visitor/infix.rb +82 -0
- data/lib/dentaku.rb +69 -0
- data/spec/ast/addition_spec.rb +62 -0
- data/spec/ast/all_spec.rb +25 -0
- data/spec/ast/and_function_spec.rb +35 -0
- data/spec/ast/and_spec.rb +32 -0
- data/spec/ast/any_spec.rb +23 -0
- data/spec/ast/arithmetic_spec.rb +91 -0
- data/spec/ast/avg_spec.rb +37 -0
- data/spec/ast/case_spec.rb +84 -0
- data/spec/ast/comparator_spec.rb +87 -0
- data/spec/ast/count_spec.rb +40 -0
- data/spec/ast/division_spec.rb +35 -0
- data/spec/ast/filter_spec.rb +25 -0
- data/spec/ast/function_spec.rb +69 -0
- data/spec/ast/map_spec.rb +27 -0
- data/spec/ast/max_spec.rb +33 -0
- data/spec/ast/min_spec.rb +33 -0
- data/spec/ast/mul_spec.rb +43 -0
- data/spec/ast/negation_spec.rb +48 -0
- data/spec/ast/node_spec.rb +43 -0
- data/spec/ast/numeric_spec.rb +16 -0
- data/spec/ast/or_spec.rb +35 -0
- data/spec/ast/pluck_spec.rb +32 -0
- data/spec/ast/round_spec.rb +35 -0
- data/spec/ast/rounddown_spec.rb +35 -0
- data/spec/ast/roundup_spec.rb +35 -0
- data/spec/ast/string_functions_spec.rb +217 -0
- data/spec/ast/sum_spec.rb +43 -0
- data/spec/ast/switch_spec.rb +30 -0
- data/spec/ast/xor_spec.rb +35 -0
- data/spec/benchmark.rb +70 -0
- data/spec/bulk_expression_solver_spec.rb +201 -0
- data/spec/calculator_spec.rb +898 -0
- data/spec/dentaku_spec.rb +52 -0
- data/spec/exceptions_spec.rb +9 -0
- data/spec/external_function_spec.rb +106 -0
- data/spec/parser_spec.rb +166 -0
- data/spec/print_visitor_spec.rb +66 -0
- data/spec/spec_helper.rb +71 -0
- data/spec/token_matcher_spec.rb +134 -0
- data/spec/token_scanner_spec.rb +49 -0
- data/spec/token_spec.rb +16 -0
- data/spec/tokenizer_spec.rb +359 -0
- data/spec/visitor/infix_spec.rb +31 -0
- data/spec/visitor_spec.rb +138 -0
- metadata +335 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: d7c9f8852e6d9afdac9c55605bade0c06e0eab6f4e6abd86fcabe64ed839b6b1
|
4
|
+
data.tar.gz: 3ebbbf999b825dcd7fba39045756bb52745588e6b4c1148eb232ea2a28270f39
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 614f78757cef069932968d4a37a13ba1360875a34bea99df90ae2808ffe776180b976e54bf4ec6d84aa347a8731ec212c49476e800dc1a372d16645f7b7f3421
|
7
|
+
data.tar.gz: 8f86743fbd6f6363fa14dd30886e37446d791212a8b9d28bda0f7c79a3c16fa8e5453a762e99d00b9704c9f45591dc52926afccd73c9e0906b8bcd633434c412
|
data/.gitignore
ADDED
data/.pryrc
ADDED
data/.rubocop.yml
ADDED
@@ -0,0 +1,114 @@
|
|
1
|
+
AllCops:
|
2
|
+
TargetRubyVersion: 2.6
|
3
|
+
# RuboCop has a bunch of cops enabled by default. This setting tells RuboCop
|
4
|
+
# to ignore them, so only the ones explicitly set in this file are enabled.
|
5
|
+
DisabledByDefault: true
|
6
|
+
|
7
|
+
# Prefer &&/|| over and/or.
|
8
|
+
Style/AndOr:
|
9
|
+
Enabled: true
|
10
|
+
|
11
|
+
# Align `when` with `case`.
|
12
|
+
Layout/CaseIndentation:
|
13
|
+
Enabled: true
|
14
|
+
|
15
|
+
# Align comments with method definitions.
|
16
|
+
Layout/CommentIndentation:
|
17
|
+
Enabled: true
|
18
|
+
|
19
|
+
# No extra empty lines.
|
20
|
+
Layout/EmptyLines:
|
21
|
+
Enabled: true
|
22
|
+
|
23
|
+
# In a regular class definition, no empty lines around the body.
|
24
|
+
Layout/EmptyLinesAroundClassBody:
|
25
|
+
Enabled: true
|
26
|
+
|
27
|
+
# In a regular method definition, no empty lines around the body.
|
28
|
+
Layout/EmptyLinesAroundMethodBody:
|
29
|
+
Enabled: true
|
30
|
+
|
31
|
+
# In a regular module definition, no empty lines around the body.
|
32
|
+
Layout/EmptyLinesAroundModuleBody:
|
33
|
+
Enabled: true
|
34
|
+
|
35
|
+
# Use Ruby >= 1.9 syntax for hashes. Prefer { a: :b } over { :a => :b }.
|
36
|
+
Style/HashSyntax:
|
37
|
+
Enabled: true
|
38
|
+
|
39
|
+
# Method definitions after `private` or `protected` isolated calls need one
|
40
|
+
# extra level of indentation.
|
41
|
+
Layout/IndentationConsistency:
|
42
|
+
Enabled: false
|
43
|
+
|
44
|
+
# Two spaces, no tabs (for indentation).
|
45
|
+
Layout/IndentationWidth:
|
46
|
+
Enabled: true
|
47
|
+
|
48
|
+
Layout/SpaceAfterColon:
|
49
|
+
Enabled: true
|
50
|
+
|
51
|
+
Layout/SpaceAfterComma:
|
52
|
+
Enabled: true
|
53
|
+
|
54
|
+
Layout/SpaceAroundEqualsInParameterDefault:
|
55
|
+
Enabled: true
|
56
|
+
|
57
|
+
Layout/SpaceAroundKeyword:
|
58
|
+
Enabled: true
|
59
|
+
|
60
|
+
Layout/SpaceAroundOperators:
|
61
|
+
Enabled: true
|
62
|
+
|
63
|
+
Layout/SpaceBeforeFirstArg:
|
64
|
+
Enabled: true
|
65
|
+
|
66
|
+
# Defining a method with parameters needs parentheses.
|
67
|
+
Style/MethodDefParentheses:
|
68
|
+
Enabled: true
|
69
|
+
|
70
|
+
# Use `foo {}` not `foo{}`.
|
71
|
+
Layout/SpaceBeforeBlockBraces:
|
72
|
+
Enabled: true
|
73
|
+
|
74
|
+
# Use `foo { bar }` not `foo {bar}`.
|
75
|
+
Layout/SpaceInsideBlockBraces:
|
76
|
+
Enabled: true
|
77
|
+
|
78
|
+
# Use `{a: 1}` not `{ a:1 }`.
|
79
|
+
Layout/SpaceInsideHashLiteralBraces:
|
80
|
+
Enabled: false
|
81
|
+
|
82
|
+
Layout/SpaceInsideParens:
|
83
|
+
Enabled: true
|
84
|
+
|
85
|
+
# Check quotes usage according to lint rule below.
|
86
|
+
Style/StringLiterals:
|
87
|
+
Enabled: false
|
88
|
+
EnforcedStyle: double_quotes
|
89
|
+
|
90
|
+
# Detect hard tabs, no hard tabs.
|
91
|
+
Layout/IndentationStyle:
|
92
|
+
Enabled: true
|
93
|
+
|
94
|
+
# Blank lines should not have any spaces.
|
95
|
+
Layout/TrailingEmptyLines:
|
96
|
+
Enabled: true
|
97
|
+
|
98
|
+
# No trailing whitespace.
|
99
|
+
Layout/TrailingWhitespace:
|
100
|
+
Enabled: true
|
101
|
+
|
102
|
+
# Use quotes for string literals when they are enough.
|
103
|
+
Style/RedundantPercentQ:
|
104
|
+
Enabled: true
|
105
|
+
|
106
|
+
# Align `end` with the matching keyword or starting expression except for
|
107
|
+
# assignments, where it should be aligned with the LHS.
|
108
|
+
Layout/EndAlignment:
|
109
|
+
Enabled: true
|
110
|
+
EnforcedStyleAlignWith: variable
|
111
|
+
|
112
|
+
# Use my_method(my_arg) not my_method( my_arg ) or my_method my_arg.
|
113
|
+
Lint/RequireParentheses:
|
114
|
+
Enabled: true
|
data/.travis.yml
ADDED
data/CHANGELOG.md
ADDED
@@ -0,0 +1,281 @@
|
|
1
|
+
# Change Log
|
2
|
+
|
3
|
+
## [v3.5.2]
|
4
|
+
- handle floating point multiply
|
5
|
+
|
6
|
+
## [v3.5.1]
|
7
|
+
- add bitwise shift left and shift right operators
|
8
|
+
- improve numeric conversions
|
9
|
+
- improve parse exceptions
|
10
|
+
- improve bitwise exceptions
|
11
|
+
- include variable name in bulk expression exceptions
|
12
|
+
|
13
|
+
## [v3.5.0]
|
14
|
+
- fix bug with function argument count
|
15
|
+
- add XOR operator
|
16
|
+
- make function args publicly accessible
|
17
|
+
- better argument handling for collection functions
|
18
|
+
- better dependency reporting for collection functions
|
19
|
+
- allow ruby math-backed functions to be serialized
|
20
|
+
- improve scientific notation handling
|
21
|
+
- improve comparator argument errors
|
22
|
+
- respect case sensitivity in nested case statments
|
23
|
+
- add visitor pattern
|
24
|
+
|
25
|
+
## [v3.4.2]
|
26
|
+
- add FILTER function
|
27
|
+
- add concurrent-ruby dependency to make global calculator object thread safe
|
28
|
+
- add Ruby 3 support
|
29
|
+
- allow formulas to access intermediate context values
|
30
|
+
- fix incorrect Ruby Math function return type
|
31
|
+
- fix context mutation bug
|
32
|
+
- fix dependency resolution bug
|
33
|
+
|
34
|
+
## [v3.4.1] 2020-12-12
|
35
|
+
- prevent extra evaluations in bulk expression solver
|
36
|
+
|
37
|
+
## [v3.4.0] 2020-12-07
|
38
|
+
- allow access to intermediate values of flattened hashes
|
39
|
+
- catch invalid array syntax in the parse phase
|
40
|
+
- drop support for Ruby < 2.5, add support for Ruby 2.7
|
41
|
+
- add support for subtracting date literals
|
42
|
+
- improve error handling
|
43
|
+
- improve math function implementation
|
44
|
+
- add caching for calculated variable values
|
45
|
+
- allow custom unbound variable handling block at Dentaku module level
|
46
|
+
- add enum functions `ANY`, `ALL`, `MAP` and `PLUCK`
|
47
|
+
- allow self-referential formulas in bulk expression solver
|
48
|
+
- misc internal fixes and enhancements
|
49
|
+
|
50
|
+
## [v3.3.4] 2019-11-21
|
51
|
+
- bugfix release
|
52
|
+
|
53
|
+
## [v3.3.3] 2019-11-20
|
54
|
+
- date / duration addition and subtraction
|
55
|
+
- validate arity for custom functions with variable arity
|
56
|
+
- make AST serializable with Marshal.dump
|
57
|
+
- performance optimization for arithmetic node validation
|
58
|
+
- support lazy evaluation for expensive values
|
59
|
+
- short-circuit IF function
|
60
|
+
- better error when empty string is used in arithmetic operation
|
61
|
+
|
62
|
+
## [v3.3.2] 2019-06-10
|
63
|
+
- add ability to pre-load AST cache
|
64
|
+
- fix negation node bug
|
65
|
+
|
66
|
+
## [v3.3.1] 2019-03-26
|
67
|
+
- better errors for parse failures and exceptions in internal functions
|
68
|
+
- fix Ruby 2.6.0 deprecation warnings
|
69
|
+
- fix issue with functions in nested case statements
|
70
|
+
|
71
|
+
## [v3.3.0] 2018-12-04
|
72
|
+
- add array literal syntax
|
73
|
+
- return correct type from string function AST nodes
|
74
|
+
|
75
|
+
## [v3.2.1] 2018-10-24
|
76
|
+
- make `evaluate` rescue more exceptions
|
77
|
+
|
78
|
+
## [v3.2.0] 2018-03-14
|
79
|
+
- add `COUNT` and `AVG` functions
|
80
|
+
- add unicode support 😎
|
81
|
+
- fix CASE parsing bug
|
82
|
+
- allow dependency filtering based on context
|
83
|
+
- add variadic MUL function
|
84
|
+
- performance optimization
|
85
|
+
|
86
|
+
## [v3.1.0] 2018-01-10
|
87
|
+
- allow decimals with no leading zero
|
88
|
+
- nested hash and array support in bulk expression solver
|
89
|
+
- add a variadic SUM function
|
90
|
+
- support array arguments to min, max, sum, and Math functions
|
91
|
+
- add case-sensitive variable support
|
92
|
+
- allow opt-out of nested data for performance boost
|
93
|
+
|
94
|
+
## [v3.0.0] 2017-10-11
|
95
|
+
- add && and || as aliases for AND and OR
|
96
|
+
- add hexadecimal literal support
|
97
|
+
- add the SWITCH function
|
98
|
+
- add AND and OR functions
|
99
|
+
- add array access
|
100
|
+
- make UnboundVariableError show all missing values
|
101
|
+
- cast inputs to numeric function to numeric
|
102
|
+
- fix issue with zero-arity functions used as function args
|
103
|
+
- fix division when context values contain one or more strings
|
104
|
+
- drop Ruby 1.9 support
|
105
|
+
|
106
|
+
## [v2.0.11] 2017-05-08
|
107
|
+
- fix dependency checking for logical AST nodes
|
108
|
+
- make `CONCAT` variadic
|
109
|
+
- fix casting strings to numeric in negation operations
|
110
|
+
- add date/time support
|
111
|
+
- add `&` (bitwise and) and `|` (bitwise or) operators
|
112
|
+
- fix incompatibility with 'mathn' module
|
113
|
+
- add `CONTAINS` string function
|
114
|
+
- allow storage of nested hashes in calculator memory
|
115
|
+
- allow duck type arithmetic
|
116
|
+
- fix error handling code to work with Ruby 2.4.0
|
117
|
+
- allow calculators to store own registry of functions
|
118
|
+
- add timezone support to time literals
|
119
|
+
- optimizations
|
120
|
+
|
121
|
+
## [v2.0.10] 2016-12-30
|
122
|
+
- fix string function initialization bug
|
123
|
+
- fix issues with CASE statements
|
124
|
+
- allow injecting AST cache
|
125
|
+
|
126
|
+
## [v2.0.9] 2016-09-19
|
127
|
+
- namespace tokenization errors
|
128
|
+
- automatically coerce arguments to string functions as strings
|
129
|
+
- selectively disable or clear AST cache
|
130
|
+
|
131
|
+
## [v2.0.8] 2016-05-10
|
132
|
+
- numeric input validations
|
133
|
+
- fail with gem-specific error for invalid arithmetic operands
|
134
|
+
- add `LEFT`, `RIGHT`, `MID`, `LEN`, `FIND`, `SUBSTITUTE`, and `CONCAT` string functions
|
135
|
+
|
136
|
+
## [v2.0.7] 2016-02-25
|
137
|
+
- fail with gem-specific error for parsing issues
|
138
|
+
- support NULL literals and nil variables
|
139
|
+
- keep reference to variable that caused failure when bulk-solving
|
140
|
+
|
141
|
+
## [v2.0.6] 2016-01-26
|
142
|
+
- support array parameters for external functions
|
143
|
+
- support case statements
|
144
|
+
- support precision for `ROUNDUP` and `ROUNDDOWN` functions
|
145
|
+
- prevent errors from corrupting calculator memory
|
146
|
+
|
147
|
+
## [v2.0.5] 2015-09-03
|
148
|
+
- fix bug with detecting unbound nodes
|
149
|
+
- silence warnings
|
150
|
+
- allow registration of custom token scanners
|
151
|
+
|
152
|
+
## [v2.0.4] 2015-09-03
|
153
|
+
- fix BigDecimal conversion bug
|
154
|
+
- add caching for bulk expression solving dependency order
|
155
|
+
- allow for custom configuration for token scanners
|
156
|
+
|
157
|
+
## [v2.0.3] 2015-08-25
|
158
|
+
- bug fixes
|
159
|
+
- performance enhancements
|
160
|
+
- code cleanup
|
161
|
+
|
162
|
+
## [v2.0.1] 2015-08-15
|
163
|
+
- add support for boolean literals
|
164
|
+
- implement basic parse-time type checking
|
165
|
+
|
166
|
+
## [v2.0.0] 2015-08-07
|
167
|
+
- shunting-yard parser for performance enhancement and AST generation
|
168
|
+
- AST caching for performance enhancement
|
169
|
+
- support comments in formulas
|
170
|
+
- support all functions from the Ruby Math module
|
171
|
+
|
172
|
+
## [v1.2.6] 2015-05-30
|
173
|
+
- support custom error handlers for systems of formulas
|
174
|
+
|
175
|
+
## [v1.2.5] 2015-05-23
|
176
|
+
- fix memory leak
|
177
|
+
|
178
|
+
## [v1.2.2] 2014-12-19
|
179
|
+
- performance enhancements
|
180
|
+
- unary minus bug fixes
|
181
|
+
- preserve provided hash keys for systems of formulas
|
182
|
+
|
183
|
+
## [v1.2.0] 2014-10-21
|
184
|
+
- add dependency resolution to automatically solve systems of formulas
|
185
|
+
|
186
|
+
## [v1.1.0] 2014-07-30
|
187
|
+
- add strict evaluation mode to raise `UnboundVariableError` if not all variable values are provided
|
188
|
+
- return division results as `BigDecimal` values
|
189
|
+
|
190
|
+
## [v1.0.0] 2014-03-06
|
191
|
+
- cleanup and 1.0 release
|
192
|
+
|
193
|
+
## [v0.2.14] 2014-01-24
|
194
|
+
- add modulo operator
|
195
|
+
- add unary percentage operator
|
196
|
+
- support registration of custom functions at runtime
|
197
|
+
|
198
|
+
## [v0.2.10] 2012-12-10
|
199
|
+
- return integer result for exact division, decimal otherwise
|
200
|
+
|
201
|
+
## [v0.2.9] 2012-10-17
|
202
|
+
- add `ROUNDUP` / `ROUNDDOWN` functions
|
203
|
+
|
204
|
+
## [v0.2.8] 2012-09-30
|
205
|
+
- make function name matching case-insensitive
|
206
|
+
|
207
|
+
## [v0.2.7] 2012-09-26
|
208
|
+
- support passing arbitrary expressions as function arguments
|
209
|
+
|
210
|
+
## [v0.2.6] 2012-09-19
|
211
|
+
- add `NOT` function
|
212
|
+
|
213
|
+
## [v0.2.5] 2012-06-20
|
214
|
+
- add exponent operator
|
215
|
+
- add support for digits in variable identifiers
|
216
|
+
|
217
|
+
## [v0.2.4] 2012-02-29
|
218
|
+
- add support for `min < x < max` syntax for inequality ranges
|
219
|
+
|
220
|
+
## [v0.2.2] 2012-02-22
|
221
|
+
- support `ROUND` to arbitrary decimal place on older Rubies
|
222
|
+
- ensure case is preserved for string values
|
223
|
+
|
224
|
+
## [v0.2.1] 2012-02-12
|
225
|
+
- add `ROUND` function
|
226
|
+
|
227
|
+
## [v0.1.3] 2012-01-31
|
228
|
+
- add support for string datatype
|
229
|
+
|
230
|
+
## [v0.1.1] 2012-01-24
|
231
|
+
- change from square bracket to parentheses for top-level evaluation
|
232
|
+
- add `IF` function
|
233
|
+
|
234
|
+
## [v0.1.0] 2012-01-20
|
235
|
+
- initial release
|
236
|
+
|
237
|
+
[Unreleased]: https://github.com/rubysolo/dentaku/compare/v3.5.1...HEAD
|
238
|
+
[v3.5.1]: https://github.com/rubysolo/dentaku/compare/v3.5.0...v3.5.1
|
239
|
+
[v3.5.0]: https://github.com/rubysolo/dentaku/compare/v3.4.2...v3.5.0
|
240
|
+
[v3.4.2]: https://github.com/rubysolo/dentaku/compare/v3.4.1...v3.4.2
|
241
|
+
[v3.4.1]: https://github.com/rubysolo/dentaku/compare/v3.4.0...v3.4.1
|
242
|
+
[v3.4.0]: https://github.com/rubysolo/dentaku/compare/v3.3.4...v3.4.0
|
243
|
+
[v3.3.4]: https://github.com/rubysolo/dentaku/compare/v3.3.3...v3.3.4
|
244
|
+
[v3.3.3]: https://github.com/rubysolo/dentaku/compare/v3.3.2...v3.3.3
|
245
|
+
[v3.3.2]: https://github.com/rubysolo/dentaku/compare/v3.3.1...v3.3.2
|
246
|
+
[v3.3.1]: https://github.com/rubysolo/dentaku/compare/v3.3.0...v3.3.1
|
247
|
+
[v3.3.0]: https://github.com/rubysolo/dentaku/compare/v3.2.1...v3.3.0
|
248
|
+
[v3.2.1]: https://github.com/rubysolo/dentaku/compare/v3.2.0...v3.2.1
|
249
|
+
[v3.2.0]: https://github.com/rubysolo/dentaku/compare/v3.1.0...v3.2.0
|
250
|
+
[v3.1.0]: https://github.com/rubysolo/dentaku/compare/v3.0.0...v3.1.0
|
251
|
+
[v3.0.0]: https://github.com/rubysolo/dentaku/compare/v2.0.11...v3.0.0
|
252
|
+
[v2.0.11]: https://github.com/rubysolo/dentaku/compare/v2.0.10...v2.0.11
|
253
|
+
[v2.0.10]: https://github.com/rubysolo/dentaku/compare/v2.0.9...v2.0.10
|
254
|
+
[v2.0.9]: https://github.com/rubysolo/dentaku/compare/v2.0.8...v2.0.9
|
255
|
+
[v2.0.8]: https://github.com/rubysolo/dentaku/compare/v2.0.7...v2.0.8
|
256
|
+
[v2.0.7]: https://github.com/rubysolo/dentaku/compare/v2.0.6...v2.0.7
|
257
|
+
[v2.0.6]: https://github.com/rubysolo/dentaku/compare/v2.0.5...v2.0.6
|
258
|
+
[v2.0.5]: https://github.com/rubysolo/dentaku/compare/v2.0.4...v2.0.5
|
259
|
+
[v2.0.4]: https://github.com/rubysolo/dentaku/compare/v2.0.3...v2.0.4
|
260
|
+
[v2.0.3]: https://github.com/rubysolo/dentaku/compare/v2.0.1...v2.0.3
|
261
|
+
[v2.0.1]: https://github.com/rubysolo/dentaku/compare/v2.0.0...v2.0.1
|
262
|
+
[v2.0.0]: https://github.com/rubysolo/dentaku/compare/v1.2.6...v2.0.0
|
263
|
+
[v1.2.6]: https://github.com/rubysolo/dentaku/compare/v1.2.5...v1.2.6
|
264
|
+
[v1.2.5]: https://github.com/rubysolo/dentaku/compare/v1.2.2...v1.2.5
|
265
|
+
[v1.2.2]: https://github.com/rubysolo/dentaku/compare/v1.2.0...v1.2.2
|
266
|
+
[v1.2.0]: https://github.com/rubysolo/dentaku/compare/v1.1.0...v1.2.0
|
267
|
+
[v1.1.0]: https://github.com/rubysolo/dentaku/compare/v1.0.0...v1.1.0
|
268
|
+
[v1.0.0]: https://github.com/rubysolo/dentaku/compare/v0.2.14...v1.0.0
|
269
|
+
[v0.2.14]: https://github.com/rubysolo/dentaku/compare/v0.2.10...v0.2.14
|
270
|
+
[v0.2.10]: https://github.com/rubysolo/dentaku/compare/v0.2.9...v0.2.10
|
271
|
+
[v0.2.9]: https://github.com/rubysolo/dentaku/compare/v0.2.8...v0.2.9
|
272
|
+
[v0.2.8]: https://github.com/rubysolo/dentaku/compare/v0.2.7...v0.2.8
|
273
|
+
[v0.2.7]: https://github.com/rubysolo/dentaku/compare/v0.2.6...v0.2.7
|
274
|
+
[v0.2.6]: https://github.com/rubysolo/dentaku/compare/v0.2.5...v0.2.6
|
275
|
+
[v0.2.5]: https://github.com/rubysolo/dentaku/compare/v0.2.4...v0.2.5
|
276
|
+
[v0.2.4]: https://github.com/rubysolo/dentaku/compare/v0.2.2...v0.2.4
|
277
|
+
[v0.2.2]: https://github.com/rubysolo/dentaku/compare/v0.2.1...v0.2.2
|
278
|
+
[v0.2.1]: https://github.com/rubysolo/dentaku/compare/v0.1.3...v0.2.1
|
279
|
+
[v0.1.3]: https://github.com/rubysolo/dentaku/compare/v0.1.1...v0.1.3
|
280
|
+
[v0.1.1]: https://github.com/rubysolo/dentaku/compare/v0.1.0...v0.1.1
|
281
|
+
[v0.1.0]: https://github.com/rubysolo/dentaku/commit/68724fd9c8fa637baf7b9d5515df0caa31e226bd
|
data/Gemfile
ADDED
data/LICENSE
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
MIT License
|
2
|
+
|
3
|
+
Copyright (c) 2012 Solomon White
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
13
|
+
copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
SOFTWARE.
|