code-ruby 0.7.5 → 0.7.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/code/object/global.rb +4 -1
- data/lib/code/version.rb +1 -1
- data/spec/code_spec.rb +14 -0
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 64c95ed04939ffd5a6ef493a612ecd1e6b8d877d84be3d3f5bf3420a91642651
|
4
|
+
data.tar.gz: e8b9314d611e70a621f003ddf70d1e848a34dd479c907701c7bbddfdba7c136c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f4fd860c6788054132fab89667660dde0907f816cc9c07d251569a3599b1504a23b620145173243cc2d2e0f22cd35bedec8e695bd589b195de22adf6ee12ddbc
|
7
|
+
data.tar.gz: 627970ecc40ebc5831be9a099fab08d8372564fd036baa247ae1b953ffa693feda02da7c9d23dbbe217afd57ec807184ecb40f75a59cdd97aab97ff897ee44dd
|
data/lib/code/object/global.rb
CHANGED
@@ -12,7 +12,7 @@ class Code
|
|
12
12
|
arguments = args.fetch(:arguments, [])
|
13
13
|
output = args.fetch(:output)
|
14
14
|
context = args.fetch(:context)
|
15
|
-
multi_fetch(args, *GLOBALS)
|
15
|
+
globals = multi_fetch(args, *GLOBALS)
|
16
16
|
value = arguments.first&.value
|
17
17
|
|
18
18
|
case operator.to_s
|
@@ -28,6 +28,9 @@ class Code
|
|
28
28
|
when "Dictionary"
|
29
29
|
sig(args) { Object.maybe }
|
30
30
|
value ? value.code_to_dictionnary : Class.new(Dictionary)
|
31
|
+
when "fetch"
|
32
|
+
sig(args) { [Object, Function.maybe] }
|
33
|
+
context.code_fetch(*arguments.map(&:value), **globals)
|
31
34
|
when "Function"
|
32
35
|
sig(args) { Object.maybe }
|
33
36
|
value ? value.code_to_function : Class.new(Function)
|
data/lib/code/version.rb
CHANGED
data/spec/code_spec.rb
CHANGED
@@ -159,6 +159,20 @@ RSpec.describe Code do
|
|
159
159
|
)
|
160
160
|
end
|
161
161
|
|
162
|
+
describe "#fetch" do
|
163
|
+
it "returns the value when present" do
|
164
|
+
expect(Code.evaluate("fetch(:downcase)", "{ downcase: 1 }")).to eq(
|
165
|
+
Code.evaluate("1")
|
166
|
+
)
|
167
|
+
end
|
168
|
+
|
169
|
+
it "returns the default value when not present" do
|
170
|
+
expect(Code.evaluate("fetch(:downcase) { 2 }")).to eq(
|
171
|
+
Code.evaluate("2")
|
172
|
+
)
|
173
|
+
end
|
174
|
+
end
|
175
|
+
|
162
176
|
it "works with nested objects" do
|
163
177
|
expect(
|
164
178
|
Code.evaluate("items.first.title", ruby: { items: [{ title: "Hello" }] })
|