delorean_lang 0.3.38 → 0.4.00

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
  SHA1:
3
- metadata.gz: 3a5f702fe096b89e006bace5c2888cd8b633ba67
4
- data.tar.gz: 575c2763efdc211da6ef0654b811fdc09365e0c1
3
+ metadata.gz: bb9bc757d323ed7d4388c688b739e9db16b4bf5c
4
+ data.tar.gz: 00d96513a6ad9a715b6b10e049bab9d3c7bb810e
5
5
  SHA512:
6
- metadata.gz: 78d3b036ec732feba442288134e262ed937f3d9920c0ca69fdb965926ba819932fdcc0e7f0cf303016623f61164172a8cd5fd6a53d415afeca7c10034cf44705
7
- data.tar.gz: 73e497c697afc9597e404801909e5ec8843b2decaa00e79bf4ac54b0aff49b80b479ec4c1c191bee0091a0d13748c93b21168d2017c3ef42cf2b13976f94f292
6
+ metadata.gz: '068413a5efef120c6351a8cfeb8cdda51c671cde3bb7b0fb5cde0303b7dbb989d33d214505d31b47557a32a60e6ceff0e33c526c9d68d51b51d150109c0a96ff'
7
+ data.tar.gz: 46cdcda1e1c2af6019f33b498fd3acd7f9257b79969f2e74706283cfa93b560d54c520194ad8a888c10e844379e9d6c63f02037c3b0e3abd4dbe8171166d8577
data/lib/delorean/base.rb CHANGED
@@ -14,7 +14,8 @@ module Delorean
14
14
  # hash. The whole whitelist mechanism should be eventually
15
15
  # rethought.
16
16
  RUBY_WHITELIST = {
17
- attributes: [ActiveRecord::Base],
17
+ # FIXME: hack -- Relation.attributes currently implemented in marty
18
+ attributes: [[ActiveRecord::Base, ActiveRecord::Relation]],
18
19
  between?: [NUM_OR_STR, NUM_OR_STR, NUM_OR_STR],
19
20
  between: "between?",
20
21
  compact: [[Array, Hash]],
@@ -151,9 +152,6 @@ module Delorean
151
152
  # FIXME: even Javascript which is superpermissive raises an
152
153
  # exception on null getattr.
153
154
  return nil
154
- when ActiveRecord::Base
155
- return obj.read_attribute(attr) if obj.has_attribute?(attr)
156
- return obj.send(attr.to_sym) if obj.class.reflections[attr]
157
155
  when NodeCall
158
156
  return obj.evaluate(attr)
159
157
  when OpenStruct
@@ -179,7 +177,7 @@ module Delorean
179
177
  # FIXME: even Javascript which is superpermissive raises an
180
178
  # exception on null getattr.
181
179
  return nil
182
- when Hash, ActiveRecord::Base, NodeCall, Class, OpenStruct
180
+ when Hash, NodeCall, Class, OpenStruct
183
181
  raise InvalidIndex unless args.length == 1
184
182
  _get_attr(obj, args[0], _e)
185
183
  when Array, String, MatchData
@@ -348,7 +348,7 @@ module Delorean
348
348
 
349
349
  def evaluate(node, attrs, params={})
350
350
  raise "bad params" unless params.is_a?(Hash)
351
-
351
+
352
352
  if node.is_a?(Class)
353
353
  klass = node
354
354
  else
@@ -365,7 +365,7 @@ module Delorean
365
365
 
366
366
  type_arr = attrs.is_a?(Array)
367
367
  attrs = [attrs] unless type_arr
368
-
368
+
369
369
  res = attrs.map { |attr|
370
370
  raise "bad attribute '#{attr}'" unless attr =~ /^[a-z][A-Za-z0-9_]*$/
371
371
  klass.send("#{attr}#{POST}".to_sym, params)
@@ -1,3 +1,3 @@
1
1
  module Delorean
2
- VERSION = "0.3.38"
2
+ VERSION = "0.4.00"
3
3
  end
data/spec/eval_spec.rb CHANGED
@@ -276,32 +276,6 @@ describe "Delorean" do
276
276
  r.should == [10, 0, 15]
277
277
  end
278
278
 
279
- it "should be able to get attr on ActiveRecord objects using a.b syntax" do
280
- engine.parse defn("A:",
281
- ' b = Dummy.i_just_met_you("this is crazy", 0.404)',
282
- " c = b.number.to_f",
283
- " d = b.name",
284
- " e = b.foo",
285
- )
286
- r = engine.evaluate("A", "c")
287
- r.should == 0.404
288
-
289
- r = engine.evaluate("A", "d")
290
- r.should == "this is crazy"
291
-
292
- lambda {
293
- r = engine.evaluate("A", "e")
294
- }.should raise_error(Delorean::InvalidGetAttribute)
295
- end
296
-
297
- it "should be able to get attr on AR objs using Class.method().attr syntax" do
298
- engine.parse defn("A:",
299
- ' b = Dummy.i_just_met_you("CRJ", 1.234).name',
300
- )
301
- r = engine.evaluate("A", "b")
302
- r.should == "CRJ"
303
- end
304
-
305
279
  it "should be able to access ActiveRecord whitelisted fns using .x syntax" do
306
280
  engine.parse defn("A:",
307
281
  ' b = Dummy.i_just_met_you("CRJ", 1.234).name2',
@@ -361,7 +335,7 @@ describe "Delorean" do
361
335
 
362
336
  it "get attr on nil should return nil" do
363
337
  engine.parse defn("A:",
364
- ' b = Dummy.i_just_met_you("CRJ", 1.234).dummy',
338
+ ' b = nil',
365
339
  ' c = b.gaga',
366
340
  ' d = b.gaga || 55',
367
341
  )
@@ -369,15 +343,6 @@ describe "Delorean" do
369
343
  r.should == [nil, nil, 55]
370
344
  end
371
345
 
372
- it "should be able to get assoc attr on ActiveRecord objects" do
373
- engine.parse defn("A:",
374
- ' b = Dummy.miss_you_so_bad()',
375
- ' c = b.dummy',
376
- )
377
- r = engine.evaluate("A", "c")
378
- r.name.should == "hello"
379
- end
380
-
381
346
  it "should be able to get attr on node" do
382
347
  engine.parse defn("A:",
383
348
  " a = 123",
data/spec/parse_spec.rb CHANGED
@@ -663,6 +663,13 @@ describe "Delorean" do
663
663
 
664
664
  end
665
665
 
666
+ xit "should parse cross list comprehension" do
667
+ engine.parse defn("A:",
668
+ " b = [a+c for c in [4,5] for a in [1,2,3]]",
669
+ )
670
+
671
+ end
672
+
666
673
  it "should accept list comprehension variable override" do
667
674
  engine.parse defn("A:",
668
675
  " b = [b+1 for b in [1,2,3]]",
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: delorean_lang
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.38
4
+ version: 0.4.00
5
5
  platform: ruby
6
6
  authors:
7
7
  - Arman Bostani
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-05-04 00:00:00.000000000 Z
11
+ date: 2018-08-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: treetop