dentaku 3.3.3 → 3.3.4
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 +4 -4
- data/CHANGELOG.md +6 -2
- data/README.md +2 -2
- data/lib/dentaku/ast/case/case_else.rb +12 -4
- data/lib/dentaku/ast/case/case_switch_variable.rb +8 -0
- data/lib/dentaku/ast/case/case_then.rb +12 -4
- data/lib/dentaku/ast/case/case_when.rb +12 -4
- data/lib/dentaku/ast/functions/string_functions.rb +48 -0
- data/lib/dentaku/version.rb +1 -1
- data/spec/calculator_spec.rb +10 -0
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 59795943c781e4fff4c3ea5a33a0035e6c9ac2cf3a4671ac9105201301601b3e
|
|
4
|
+
data.tar.gz: cfc61c4b4e522b54754dd6c960a82bc0cddcedebe160ed111d8d68e4334b5752
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c3d96b80d7a90ecbf946311743f92ce84e04d77bbb7e0c6ac44724e0f0b479b3ce27d19d6b191381c46c27b12bd352dd8881d786500c5c666eef923126c7e577
|
|
7
|
+
data.tar.gz: 93a8ab932fda06e5121c98c39a8561b728da48fef9501127a218776c18d18cfd4086b5d3db938e6f8bc1bbdad59e8c3ba258b84e4d22c0ffcdd39d0d8aa20d54
|
data/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
# Change Log
|
|
2
2
|
|
|
3
|
-
## [
|
|
3
|
+
## [v3.3.4] 2019-11-21
|
|
4
|
+
- bugfix release
|
|
5
|
+
|
|
6
|
+
## [v3.3.3] 2019-11-20
|
|
4
7
|
- date / duration addition and subtraction
|
|
5
8
|
- validate arity for custom functions with variable arity
|
|
6
9
|
- make AST serializable with Marshal.dump
|
|
@@ -184,7 +187,8 @@
|
|
|
184
187
|
## [v0.1.0] 2012-01-20
|
|
185
188
|
- initial release
|
|
186
189
|
|
|
187
|
-
[
|
|
190
|
+
[v3.3.4]: https://github.com/rubysolo/dentaku/compare/v3.3.3...v3.3.4
|
|
191
|
+
[v3.3.3]: https://github.com/rubysolo/dentaku/compare/v3.3.2...v3.3.3
|
|
188
192
|
[v3.3.2]: https://github.com/rubysolo/dentaku/compare/v3.3.1...v3.3.2
|
|
189
193
|
[v3.3.1]: https://github.com/rubysolo/dentaku/compare/v3.3.0...v3.3.1
|
|
190
194
|
[v3.3.0]: https://github.com/rubysolo/dentaku/compare/v3.2.1...v3.3.0
|
data/README.md
CHANGED
|
@@ -284,7 +284,7 @@ using Calculator#add_functions.
|
|
|
284
284
|
FUNCTION ALIASES
|
|
285
285
|
----------------
|
|
286
286
|
|
|
287
|
-
Every function can be aliased by synonyms. For example, it can be useful if
|
|
287
|
+
Every function can be aliased by synonyms. For example, it can be useful if
|
|
288
288
|
your application is multilingual.
|
|
289
289
|
|
|
290
290
|
```ruby
|
|
@@ -321,7 +321,7 @@ LICENSE
|
|
|
321
321
|
|
|
322
322
|
(The MIT License)
|
|
323
323
|
|
|
324
|
-
Copyright © 2012-
|
|
324
|
+
Copyright © 2012-2019 Solomon White
|
|
325
325
|
|
|
326
326
|
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
327
327
|
this software and associated documentation files (the ‘Software’), to deal in
|
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
module Dentaku
|
|
2
2
|
module AST
|
|
3
3
|
class CaseElse < Node
|
|
4
|
-
def self.arity
|
|
5
|
-
1
|
|
6
|
-
end
|
|
7
|
-
|
|
8
4
|
def initialize(node)
|
|
9
5
|
@node = node
|
|
10
6
|
end
|
|
@@ -16,6 +12,18 @@ module Dentaku
|
|
|
16
12
|
def dependencies(context = {})
|
|
17
13
|
@node.dependencies(context)
|
|
18
14
|
end
|
|
15
|
+
|
|
16
|
+
def self.arity
|
|
17
|
+
1
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def self.min_param_count
|
|
21
|
+
1
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def self.max_param_count
|
|
25
|
+
1
|
|
26
|
+
end
|
|
19
27
|
end
|
|
20
28
|
end
|
|
21
29
|
end
|
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
module Dentaku
|
|
2
2
|
module AST
|
|
3
3
|
class CaseThen < Node
|
|
4
|
-
def self.arity
|
|
5
|
-
1
|
|
6
|
-
end
|
|
7
|
-
|
|
8
4
|
def initialize(node)
|
|
9
5
|
@node = node
|
|
10
6
|
end
|
|
@@ -16,6 +12,18 @@ module Dentaku
|
|
|
16
12
|
def dependencies(context = {})
|
|
17
13
|
@node.dependencies(context)
|
|
18
14
|
end
|
|
15
|
+
|
|
16
|
+
def self.arity
|
|
17
|
+
1
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def self.min_param_count
|
|
21
|
+
1
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def self.max_param_count
|
|
25
|
+
1
|
|
26
|
+
end
|
|
19
27
|
end
|
|
20
28
|
end
|
|
21
29
|
end
|
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
module Dentaku
|
|
2
2
|
module AST
|
|
3
3
|
class CaseWhen < Operation
|
|
4
|
-
def self.arity
|
|
5
|
-
1
|
|
6
|
-
end
|
|
7
|
-
|
|
8
4
|
def initialize(node)
|
|
9
5
|
@node = node
|
|
10
6
|
end
|
|
@@ -16,6 +12,18 @@ module Dentaku
|
|
|
16
12
|
def dependencies(context = {})
|
|
17
13
|
@node.dependencies(context)
|
|
18
14
|
end
|
|
15
|
+
|
|
16
|
+
def self.arity
|
|
17
|
+
1
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def self.min_param_count
|
|
21
|
+
1
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def self.max_param_count
|
|
25
|
+
1
|
|
26
|
+
end
|
|
19
27
|
end
|
|
20
28
|
end
|
|
21
29
|
end
|
|
@@ -39,6 +39,14 @@ module Dentaku
|
|
|
39
39
|
end
|
|
40
40
|
|
|
41
41
|
class Right < Base
|
|
42
|
+
def self.min_param_count
|
|
43
|
+
2
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def self.max_param_count
|
|
47
|
+
2
|
|
48
|
+
end
|
|
49
|
+
|
|
42
50
|
def initialize(*args)
|
|
43
51
|
super
|
|
44
52
|
@string, @length = *@args
|
|
@@ -53,6 +61,14 @@ module Dentaku
|
|
|
53
61
|
end
|
|
54
62
|
|
|
55
63
|
class Mid < Base
|
|
64
|
+
def self.min_param_count
|
|
65
|
+
3
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def self.max_param_count
|
|
69
|
+
3
|
|
70
|
+
end
|
|
71
|
+
|
|
56
72
|
def initialize(*args)
|
|
57
73
|
super
|
|
58
74
|
@string, @offset, @length = *@args
|
|
@@ -69,6 +85,14 @@ module Dentaku
|
|
|
69
85
|
end
|
|
70
86
|
|
|
71
87
|
class Len < Base
|
|
88
|
+
def self.min_param_count
|
|
89
|
+
1
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
def self.max_param_count
|
|
93
|
+
1
|
|
94
|
+
end
|
|
95
|
+
|
|
72
96
|
def initialize(*args)
|
|
73
97
|
super
|
|
74
98
|
@string = @args[0]
|
|
@@ -85,6 +109,14 @@ module Dentaku
|
|
|
85
109
|
end
|
|
86
110
|
|
|
87
111
|
class Find < Base
|
|
112
|
+
def self.min_param_count
|
|
113
|
+
2
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
def self.max_param_count
|
|
117
|
+
2
|
|
118
|
+
end
|
|
119
|
+
|
|
88
120
|
def initialize(*args)
|
|
89
121
|
super
|
|
90
122
|
@needle, @haystack = *@args
|
|
@@ -104,6 +136,14 @@ module Dentaku
|
|
|
104
136
|
end
|
|
105
137
|
|
|
106
138
|
class Substitute < Base
|
|
139
|
+
def self.min_param_count
|
|
140
|
+
3
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
def self.max_param_count
|
|
144
|
+
3
|
|
145
|
+
end
|
|
146
|
+
|
|
107
147
|
def initialize(*args)
|
|
108
148
|
super
|
|
109
149
|
@original, @search, @replacement = *@args
|
|
@@ -137,6 +177,14 @@ module Dentaku
|
|
|
137
177
|
end
|
|
138
178
|
|
|
139
179
|
class Contains < Base
|
|
180
|
+
def self.min_param_count
|
|
181
|
+
2
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
def self.max_param_count
|
|
185
|
+
2
|
|
186
|
+
end
|
|
187
|
+
|
|
140
188
|
def initialize(*args)
|
|
141
189
|
super
|
|
142
190
|
@needle, @haystack = *args
|
data/lib/dentaku/version.rb
CHANGED
data/spec/calculator_spec.rb
CHANGED
|
@@ -663,6 +663,16 @@ describe Dentaku::Calculator do
|
|
|
663
663
|
calculator.evaluate('CONCAT(s1, s2, s3)', 's1' => 'ab', 's2' => 'cd', 's3' => 'ef')
|
|
664
664
|
).to eq('abcdef')
|
|
665
665
|
end
|
|
666
|
+
|
|
667
|
+
it 'manipulates string arguments' do
|
|
668
|
+
expect(calculator.evaluate("left('ABCD', 2)")).to eq('AB')
|
|
669
|
+
expect(calculator.evaluate("right('ABCD', 2)")).to eq('CD')
|
|
670
|
+
expect(calculator.evaluate("mid('ABCD', 2, 2)")).to eq('BC')
|
|
671
|
+
expect(calculator.evaluate("len('ABCD')")).to eq(4)
|
|
672
|
+
expect(calculator.evaluate("find('BC', 'ABCD')")).to eq(2)
|
|
673
|
+
expect(calculator.evaluate("substitute('ABCD', 'BC', 'XY')")).to eq('AXYD')
|
|
674
|
+
expect(calculator.evaluate("contains('BC', 'ABCD')")).to be_truthy
|
|
675
|
+
end
|
|
666
676
|
end
|
|
667
677
|
|
|
668
678
|
describe 'zero-arity functions' do
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: dentaku
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 3.3.
|
|
4
|
+
version: 3.3.4
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Solomon White
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2019-11-
|
|
11
|
+
date: 2019-11-21 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: codecov
|