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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 463ae3dc79fc4e22a6822e556ffbc299483203343ede2978409e9cfff74ba406
4
- data.tar.gz: c1cf9ecfff4ea81e9e523f7c5951d8e51ded3595dae6b51c729f1d89c6d55e46
3
+ metadata.gz: 64c95ed04939ffd5a6ef493a612ecd1e6b8d877d84be3d3f5bf3420a91642651
4
+ data.tar.gz: e8b9314d611e70a621f003ddf70d1e848a34dd479c907701c7bbddfdba7c136c
5
5
  SHA512:
6
- metadata.gz: fab95b9f2f6c0e46c3ae1e7fc77b6b55198bad7354c89b35947a4c326a84b68853d9b817a5779d409a35ea79496ada6d4ad3b344ec8201cdb720d3a5b320ed86
7
- data.tar.gz: 8c4133efb5de0813fea888156341a35edf3daf458730a19080cfae9681d6c8dfa2e36d13ec87552327744f19e46775e4bbc1c73019e17860a2d08dec62ce0693
6
+ metadata.gz: f4fd860c6788054132fab89667660dde0907f816cc9c07d251569a3599b1504a23b620145173243cc2d2e0f22cd35bedec8e695bd589b195de22adf6ee12ddbc
7
+ data.tar.gz: 627970ecc40ebc5831be9a099fab08d8372564fd036baa247ae1b953ffa693feda02da7c9d23dbbe217afd57ec807184ecb40f75a59cdd97aab97ff897ee44dd
@@ -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
@@ -2,4 +2,4 @@
2
2
 
3
3
  require_relative "../code"
4
4
 
5
- Code::Version = Gem::Version.new("0.7.5")
5
+ Code::Version = Gem::Version.new("0.7.6")
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" }] })
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: code-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.5
4
+ version: 0.7.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dorian Marié