code-ruby 0.7.5 → 0.7.6

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 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é