dentaku_zevo 3.5.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (123) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +14 -0
  3. data/.pryrc +2 -0
  4. data/.rubocop.yml +114 -0
  5. data/.travis.yml +10 -0
  6. data/CHANGELOG.md +281 -0
  7. data/Gemfile +4 -0
  8. data/LICENSE +21 -0
  9. data/README.md +342 -0
  10. data/Rakefile +31 -0
  11. data/dentaku.gemspec +32 -0
  12. data/lib/dentaku/ast/access.rb +47 -0
  13. data/lib/dentaku/ast/arithmetic.rb +241 -0
  14. data/lib/dentaku/ast/array.rb +41 -0
  15. data/lib/dentaku/ast/bitwise.rb +42 -0
  16. data/lib/dentaku/ast/case/case_conditional.rb +38 -0
  17. data/lib/dentaku/ast/case/case_else.rb +35 -0
  18. data/lib/dentaku/ast/case/case_switch_variable.rb +35 -0
  19. data/lib/dentaku/ast/case/case_then.rb +35 -0
  20. data/lib/dentaku/ast/case/case_when.rb +39 -0
  21. data/lib/dentaku/ast/case.rb +81 -0
  22. data/lib/dentaku/ast/combinators.rb +50 -0
  23. data/lib/dentaku/ast/comparators.rb +89 -0
  24. data/lib/dentaku/ast/datetime.rb +8 -0
  25. data/lib/dentaku/ast/function.rb +56 -0
  26. data/lib/dentaku/ast/function_registry.rb +98 -0
  27. data/lib/dentaku/ast/functions/all.rb +23 -0
  28. data/lib/dentaku/ast/functions/and.rb +25 -0
  29. data/lib/dentaku/ast/functions/any.rb +23 -0
  30. data/lib/dentaku/ast/functions/avg.rb +13 -0
  31. data/lib/dentaku/ast/functions/count.rb +26 -0
  32. data/lib/dentaku/ast/functions/duration.rb +51 -0
  33. data/lib/dentaku/ast/functions/enum.rb +37 -0
  34. data/lib/dentaku/ast/functions/filter.rb +23 -0
  35. data/lib/dentaku/ast/functions/if.rb +51 -0
  36. data/lib/dentaku/ast/functions/map.rb +23 -0
  37. data/lib/dentaku/ast/functions/max.rb +5 -0
  38. data/lib/dentaku/ast/functions/min.rb +5 -0
  39. data/lib/dentaku/ast/functions/mul.rb +12 -0
  40. data/lib/dentaku/ast/functions/not.rb +5 -0
  41. data/lib/dentaku/ast/functions/or.rb +25 -0
  42. data/lib/dentaku/ast/functions/pluck.rb +30 -0
  43. data/lib/dentaku/ast/functions/round.rb +5 -0
  44. data/lib/dentaku/ast/functions/rounddown.rb +8 -0
  45. data/lib/dentaku/ast/functions/roundup.rb +8 -0
  46. data/lib/dentaku/ast/functions/ruby_math.rb +55 -0
  47. data/lib/dentaku/ast/functions/string_functions.rb +212 -0
  48. data/lib/dentaku/ast/functions/sum.rb +12 -0
  49. data/lib/dentaku/ast/functions/switch.rb +8 -0
  50. data/lib/dentaku/ast/functions/xor.rb +44 -0
  51. data/lib/dentaku/ast/grouping.rb +23 -0
  52. data/lib/dentaku/ast/identifier.rb +52 -0
  53. data/lib/dentaku/ast/literal.rb +30 -0
  54. data/lib/dentaku/ast/logical.rb +8 -0
  55. data/lib/dentaku/ast/negation.rb +54 -0
  56. data/lib/dentaku/ast/nil.rb +13 -0
  57. data/lib/dentaku/ast/node.rb +28 -0
  58. data/lib/dentaku/ast/numeric.rb +8 -0
  59. data/lib/dentaku/ast/operation.rb +39 -0
  60. data/lib/dentaku/ast/string.rb +15 -0
  61. data/lib/dentaku/ast.rb +39 -0
  62. data/lib/dentaku/bulk_expression_solver.rb +128 -0
  63. data/lib/dentaku/calculator.rb +169 -0
  64. data/lib/dentaku/date_arithmetic.rb +45 -0
  65. data/lib/dentaku/dependency_resolver.rb +24 -0
  66. data/lib/dentaku/exceptions.rb +102 -0
  67. data/lib/dentaku/flat_hash.rb +38 -0
  68. data/lib/dentaku/parser.rb +349 -0
  69. data/lib/dentaku/print_visitor.rb +101 -0
  70. data/lib/dentaku/string_casing.rb +7 -0
  71. data/lib/dentaku/token.rb +36 -0
  72. data/lib/dentaku/token_matcher.rb +138 -0
  73. data/lib/dentaku/token_matchers.rb +29 -0
  74. data/lib/dentaku/token_scanner.rb +183 -0
  75. data/lib/dentaku/tokenizer.rb +110 -0
  76. data/lib/dentaku/version.rb +3 -0
  77. data/lib/dentaku/visitor/infix.rb +82 -0
  78. data/lib/dentaku.rb +69 -0
  79. data/spec/ast/addition_spec.rb +62 -0
  80. data/spec/ast/all_spec.rb +25 -0
  81. data/spec/ast/and_function_spec.rb +35 -0
  82. data/spec/ast/and_spec.rb +32 -0
  83. data/spec/ast/any_spec.rb +23 -0
  84. data/spec/ast/arithmetic_spec.rb +91 -0
  85. data/spec/ast/avg_spec.rb +37 -0
  86. data/spec/ast/case_spec.rb +84 -0
  87. data/spec/ast/comparator_spec.rb +87 -0
  88. data/spec/ast/count_spec.rb +40 -0
  89. data/spec/ast/division_spec.rb +35 -0
  90. data/spec/ast/filter_spec.rb +25 -0
  91. data/spec/ast/function_spec.rb +69 -0
  92. data/spec/ast/map_spec.rb +27 -0
  93. data/spec/ast/max_spec.rb +33 -0
  94. data/spec/ast/min_spec.rb +33 -0
  95. data/spec/ast/mul_spec.rb +43 -0
  96. data/spec/ast/negation_spec.rb +48 -0
  97. data/spec/ast/node_spec.rb +43 -0
  98. data/spec/ast/numeric_spec.rb +16 -0
  99. data/spec/ast/or_spec.rb +35 -0
  100. data/spec/ast/pluck_spec.rb +32 -0
  101. data/spec/ast/round_spec.rb +35 -0
  102. data/spec/ast/rounddown_spec.rb +35 -0
  103. data/spec/ast/roundup_spec.rb +35 -0
  104. data/spec/ast/string_functions_spec.rb +217 -0
  105. data/spec/ast/sum_spec.rb +43 -0
  106. data/spec/ast/switch_spec.rb +30 -0
  107. data/spec/ast/xor_spec.rb +35 -0
  108. data/spec/benchmark.rb +70 -0
  109. data/spec/bulk_expression_solver_spec.rb +201 -0
  110. data/spec/calculator_spec.rb +898 -0
  111. data/spec/dentaku_spec.rb +52 -0
  112. data/spec/exceptions_spec.rb +9 -0
  113. data/spec/external_function_spec.rb +106 -0
  114. data/spec/parser_spec.rb +166 -0
  115. data/spec/print_visitor_spec.rb +66 -0
  116. data/spec/spec_helper.rb +71 -0
  117. data/spec/token_matcher_spec.rb +134 -0
  118. data/spec/token_scanner_spec.rb +49 -0
  119. data/spec/token_spec.rb +16 -0
  120. data/spec/tokenizer_spec.rb +359 -0
  121. data/spec/visitor/infix_spec.rb +31 -0
  122. data/spec/visitor_spec.rb +138 -0
  123. 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
@@ -0,0 +1,14 @@
1
+ *.gem
2
+ .bundle
3
+ .rbenv-version
4
+ Gemfile.lock
5
+ bin/*
6
+ pkg/*
7
+ vendor/*
8
+
9
+ /.ruby-gemset
10
+ /.ruby-version
11
+ /.rspec
12
+
13
+ .byebug_history
14
+ coverage
data/.pryrc ADDED
@@ -0,0 +1,2 @@
1
+ require "bundler"
2
+ Bundler.require
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
@@ -0,0 +1,10 @@
1
+ language: ruby
2
+ sudo: false
3
+ rvm:
4
+ - 2.5.9
5
+ - 2.6.7
6
+ - 2.7.3
7
+ - 3.0.1
8
+ before_install:
9
+ - gem update bundler
10
+ - gem update --system
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
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in dentaku.gemspec
4
+ gemspec
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.