code-ruby 0.9.0 → 0.9.2
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/lib/code/object/argument.rb +0 -12
- data/lib/code/object/boolean.rb +9 -1
- data/lib/code/object/class.rb +5 -0
- data/lib/code/object/context.rb +2 -1
- data/lib/code/object/date.rb +6 -1
- data/lib/code/object/decimal.rb +5 -0
- data/lib/code/object/dictionary.rb +6 -1
- data/lib/code/object/duration.rb +5 -0
- data/lib/code/object/function.rb +4 -0
- data/lib/code/object/global.rb +0 -4
- data/lib/code/object/integer.rb +4 -0
- data/lib/code/object/list.rb +5 -0
- data/lib/code/object/nothing.rb +4 -0
- data/lib/code/object/range.rb +5 -1
- data/lib/code/object/string.rb +5 -0
- data/lib/code/object/time.rb +4 -0
- data/lib/code/object.rb +8 -0
- data/lib/code/version.rb +1 -1
- data/lib/code-ruby.rb +6 -4
- data/spec/code_spec.rb +4 -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: 2a15136e1a9999fb8cba9a433f0e72d6bd237b8de8d0c948477824944853da2d
|
4
|
+
data.tar.gz: 98a7b20d9225d717865eaa8fa461fa660e970a281f9de464725fd3923c0dee9f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 998e06a88b8d4bfb4cd1529c01a5ea347b3f1874c5c11ddbe9952942db999cb25bba645c5f49bfdb40ff7f17a217af035561ad58fcb06dd8c4383d8906362947
|
7
|
+
data.tar.gz: b9a5b0703efca344bdd1f1f0b972ddabad86746cbd6745eb71c2a82ef61fc4a30370bd7052dfe703e1a44055926f17c9a57005ff5b353057dc462078c148ea80
|
data/lib/code/object/argument.rb
CHANGED
@@ -10,14 +10,6 @@ class Code
|
|
10
10
|
@name = name
|
11
11
|
end
|
12
12
|
|
13
|
-
def self.name
|
14
|
-
"Argument"
|
15
|
-
end
|
16
|
-
|
17
|
-
def inspect
|
18
|
-
to_s
|
19
|
-
end
|
20
|
-
|
21
13
|
def keyword?
|
22
14
|
!regular?
|
23
15
|
end
|
@@ -29,10 +21,6 @@ class Code
|
|
29
21
|
def regular?
|
30
22
|
!name
|
31
23
|
end
|
32
|
-
|
33
|
-
def to_s
|
34
|
-
"<Argument #{value.inspect}>"
|
35
|
-
end
|
36
24
|
end
|
37
25
|
end
|
38
26
|
end
|
data/lib/code/object/boolean.rb
CHANGED
@@ -6,7 +6,11 @@ class Code
|
|
6
6
|
attr_reader :raw
|
7
7
|
|
8
8
|
def initialize(raw)
|
9
|
-
|
9
|
+
if raw.is_a?(Object)
|
10
|
+
@raw = raw.truthy?
|
11
|
+
else
|
12
|
+
@raw = !!raw
|
13
|
+
end
|
10
14
|
end
|
11
15
|
|
12
16
|
def self.name
|
@@ -60,6 +64,10 @@ class Code
|
|
60
64
|
def truthy?
|
61
65
|
raw
|
62
66
|
end
|
67
|
+
|
68
|
+
def as_json(...)
|
69
|
+
raw.as_json(...)
|
70
|
+
end
|
63
71
|
end
|
64
72
|
end
|
65
73
|
end
|
data/lib/code/object/class.rb
CHANGED
@@ -6,6 +6,7 @@ class Code
|
|
6
6
|
attr_reader :raw
|
7
7
|
|
8
8
|
def initialize(raw)
|
9
|
+
raw = raw.raw if raw.is_a?(Class)
|
9
10
|
@raw = raw
|
10
11
|
end
|
11
12
|
|
@@ -24,6 +25,10 @@ class Code
|
|
24
25
|
def self.name
|
25
26
|
"Class"
|
26
27
|
end
|
28
|
+
|
29
|
+
def as_json(...)
|
30
|
+
raw.name.as_json(...)
|
31
|
+
end
|
27
32
|
end
|
28
33
|
end
|
29
34
|
end
|
data/lib/code/object/context.rb
CHANGED
data/lib/code/object/date.rb
CHANGED
@@ -6,7 +6,8 @@ class Code
|
|
6
6
|
attr_reader :raw
|
7
7
|
|
8
8
|
def initialize(date)
|
9
|
-
|
9
|
+
date = date.raw if date.is_a?(Date)
|
10
|
+
@raw = date.to_date
|
10
11
|
end
|
11
12
|
|
12
13
|
def self.name
|
@@ -37,6 +38,10 @@ class Code
|
|
37
38
|
def to_s
|
38
39
|
raw.to_s
|
39
40
|
end
|
41
|
+
|
42
|
+
def as_json(...)
|
43
|
+
raw.as_json(...)
|
44
|
+
end
|
40
45
|
end
|
41
46
|
end
|
42
47
|
end
|
data/lib/code/object/decimal.rb
CHANGED
@@ -6,6 +6,7 @@ class Code
|
|
6
6
|
attr_reader :raw
|
7
7
|
|
8
8
|
def initialize(decimal, exponent: nil)
|
9
|
+
decimal = decimal.raw if decimal.is_a?(Decimal)
|
9
10
|
@raw = BigDecimal(decimal)
|
10
11
|
|
11
12
|
return unless exponent
|
@@ -309,6 +310,10 @@ class Code
|
|
309
310
|
def to_s
|
310
311
|
raw.to_s("F")
|
311
312
|
end
|
313
|
+
|
314
|
+
def as_json(...)
|
315
|
+
raw.as_json(...)
|
316
|
+
end
|
312
317
|
end
|
313
318
|
end
|
314
319
|
end
|
@@ -6,7 +6,8 @@ class Code
|
|
6
6
|
attr_reader :raw
|
7
7
|
|
8
8
|
def initialize(raw = {})
|
9
|
-
|
9
|
+
raw = raw.raw if raw.is_a?(Dictionary)
|
10
|
+
@raw = raw.to_h
|
10
11
|
end
|
11
12
|
|
12
13
|
def self.name
|
@@ -648,6 +649,10 @@ class Code
|
|
648
649
|
def to_s
|
649
650
|
"{#{raw.map { |key, value| "#{key.inspect} => #{value.inspect}" }.join(", ")}}"
|
650
651
|
end
|
652
|
+
|
653
|
+
def as_json(...)
|
654
|
+
raw.as_json(...)
|
655
|
+
end
|
651
656
|
end
|
652
657
|
end
|
653
658
|
end
|
data/lib/code/object/duration.rb
CHANGED
@@ -6,6 +6,7 @@ class Code
|
|
6
6
|
attr_reader :raw
|
7
7
|
|
8
8
|
def initialize(duration)
|
9
|
+
duration = duration.raw if duration.is_a?(Duration)
|
9
10
|
@raw = duration
|
10
11
|
end
|
11
12
|
|
@@ -43,6 +44,10 @@ class Code
|
|
43
44
|
def to_s
|
44
45
|
raw.to_s
|
45
46
|
end
|
47
|
+
|
48
|
+
def as_json(...)
|
49
|
+
raw.as_json(...)
|
50
|
+
end
|
46
51
|
end
|
47
52
|
end
|
48
53
|
end
|
data/lib/code/object/function.rb
CHANGED
data/lib/code/object/global.rb
CHANGED
data/lib/code/object/integer.rb
CHANGED
data/lib/code/object/list.rb
CHANGED
@@ -6,6 +6,7 @@ class Code
|
|
6
6
|
attr_reader :raw
|
7
7
|
|
8
8
|
def initialize(raw = [])
|
9
|
+
raw = raw.raw if raw.is_a?(List)
|
9
10
|
@raw = raw.to_a
|
10
11
|
end
|
11
12
|
|
@@ -211,6 +212,10 @@ class Code
|
|
211
212
|
def to_s
|
212
213
|
"[#{raw.map(&:inspect).join(", ")}]"
|
213
214
|
end
|
215
|
+
|
216
|
+
def as_json(...)
|
217
|
+
raw.as_json(...)
|
218
|
+
end
|
214
219
|
end
|
215
220
|
end
|
216
221
|
end
|
data/lib/code/object/nothing.rb
CHANGED
data/lib/code/object/range.rb
CHANGED
@@ -8,7 +8,7 @@ class Code
|
|
8
8
|
def initialize(left, right, exclude_end: false)
|
9
9
|
@left = left
|
10
10
|
@right = right
|
11
|
-
@exclude_end = exclude_end
|
11
|
+
@exclude_end = !!exclude_end
|
12
12
|
@raw = ::Range.new(left, right, exclude_end)
|
13
13
|
end
|
14
14
|
|
@@ -138,6 +138,10 @@ class Code
|
|
138
138
|
def to_s
|
139
139
|
raw.to_s
|
140
140
|
end
|
141
|
+
|
142
|
+
def as_json(...)
|
143
|
+
raw.as_json(...)
|
144
|
+
end
|
141
145
|
end
|
142
146
|
end
|
143
147
|
end
|
data/lib/code/object/string.rb
CHANGED
@@ -6,6 +6,7 @@ class Code
|
|
6
6
|
attr_reader :raw
|
7
7
|
|
8
8
|
def initialize(string)
|
9
|
+
string = string.raw if string.is_a?(String)
|
9
10
|
@raw = string.to_s
|
10
11
|
end
|
11
12
|
|
@@ -100,6 +101,10 @@ class Code
|
|
100
101
|
def to_s
|
101
102
|
raw
|
102
103
|
end
|
104
|
+
|
105
|
+
def as_json(...)
|
106
|
+
raw.as_json(...)
|
107
|
+
end
|
103
108
|
end
|
104
109
|
end
|
105
110
|
end
|
data/lib/code/object/time.rb
CHANGED
data/lib/code/object.rb
CHANGED
data/lib/code/version.rb
CHANGED
data/lib/code-ruby.rb
CHANGED
@@ -1,13 +1,15 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require "active_support"
|
4
|
+
require "active_support/core_ext/date/conversions"
|
5
|
+
require "active_support/core_ext/numeric/time"
|
6
|
+
require "active_support/core_ext/object/json"
|
3
7
|
require "bigdecimal"
|
8
|
+
require "json"
|
9
|
+
require "language-ruby"
|
4
10
|
require "stringio"
|
5
11
|
require "timeout"
|
6
12
|
require "zeitwerk"
|
7
|
-
require "language-ruby"
|
8
|
-
require "active_support"
|
9
|
-
require "active_support/core_ext/numeric/time"
|
10
|
-
require "active_support/core_ext/date/conversions"
|
11
13
|
|
12
14
|
loader = Zeitwerk::Loader.for_gem(warn_on_extra_files: false)
|
13
15
|
loader.ignore("#{__dir__}/code-ruby.rb")
|
data/spec/code_spec.rb
CHANGED
@@ -146,6 +146,10 @@ RSpec.describe Code do
|
|
146
146
|
it "#{input} == #{expected}" do
|
147
147
|
expect(Code.evaluate(input)).to eq(Code.evaluate(expected))
|
148
148
|
end
|
149
|
+
|
150
|
+
it "#{input} converts to json like #{expected}" do
|
151
|
+
expect(Code.evaluate(input).to_json).to eq(Code.evaluate(expected).to_json)
|
152
|
+
end
|
149
153
|
end
|
150
154
|
|
151
155
|
%w[
|