code-ruby 1.6.1 → 1.6.3
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/.rubocop.yml +2 -2
- data/Gemfile.lock +1 -1
- data/VERSION +1 -1
- data/bin/code +6 -2
- data/lib/code/node/function_parameter.rb +16 -1
- data/lib/code/object/context.rb +1 -0
- data/lib/code/object/date.rb +30 -41
- data/lib/code/object/function.rb +13 -2
- data/lib/code/object/parameter.rb +16 -0
- data/lib/code/object/time.rb +71 -68
- data/lib/code/parser/call.rb +19 -1
- data/lib/code/parser/function.rb +7 -2
- data/lib/code/parser/name.rb +11 -2
- data/lib/code-ruby.rb +1 -0
- data/spec/code_spec.rb +2 -2
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 31de900f45b607432af42419aedea361f2a751aa6d635caaa01edced89a2a591
|
|
4
|
+
data.tar.gz: 121236f92f037d3ba10b45a8d92dabd08972241262c588cfbe370ff60822f642
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f3774304c7976b6295f49c6da4a9ccd473151cb0097f8e3848a58941498a8b3502c477f6095c148811d72b43bbbbbdf869848c4ceeac87515b47fc596a55d1aa
|
|
7
|
+
data.tar.gz: edb7ff295ed91f0b555f2e8e8bab351a2002ff80db28aaaab037d4d7c22b42d55b3a41712e73a64855c872ad8d7579dee9d4dbe23119a37211c902c870adc165
|
data/.rubocop.yml
CHANGED
|
@@ -30,6 +30,8 @@ Lint/MissingSuper:
|
|
|
30
30
|
Enabled: false
|
|
31
31
|
Lint/PercentStringArray:
|
|
32
32
|
Enabled: false
|
|
33
|
+
Lint/SafeNavigationChain:
|
|
34
|
+
Enabled: false
|
|
33
35
|
Lint/ShadowingOuterLocalVariable:
|
|
34
36
|
Enabled: false
|
|
35
37
|
Lint/SuppressedException:
|
|
@@ -120,8 +122,6 @@ Style/StringLiterals:
|
|
|
120
122
|
Enabled: false
|
|
121
123
|
Style/StringLiteralsInInterpolation:
|
|
122
124
|
Enabled: false
|
|
123
|
-
Lint/SafeNavigationChain:
|
|
124
|
-
Enabled: false
|
|
125
125
|
plugins:
|
|
126
126
|
- rubocop-factory_bot
|
|
127
127
|
- rubocop-performance
|
data/Gemfile.lock
CHANGED
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
1.6.
|
|
1
|
+
1.6.3
|
data/bin/code
CHANGED
|
@@ -46,7 +46,11 @@ RubyProf.start if profile
|
|
|
46
46
|
input = 'loop { print("> ") puts(evaluate(read)) }' if input.blank?
|
|
47
47
|
|
|
48
48
|
if parsed.options.parse
|
|
49
|
-
|
|
49
|
+
begin
|
|
50
|
+
pp Code::Parser.parse(input).to_raw
|
|
51
|
+
rescue Exception => e
|
|
52
|
+
warn e.message
|
|
53
|
+
end
|
|
50
54
|
else
|
|
51
55
|
begin
|
|
52
56
|
print(
|
|
@@ -58,7 +62,7 @@ else
|
|
|
58
62
|
timeout: parsed.options.timeout
|
|
59
63
|
)
|
|
60
64
|
)
|
|
61
|
-
rescue
|
|
65
|
+
rescue Exception => e
|
|
62
66
|
warn e.message
|
|
63
67
|
end
|
|
64
68
|
end
|
|
@@ -8,10 +8,15 @@ class Code
|
|
|
8
8
|
def initialize(parsed)
|
|
9
9
|
return if parsed.blank?
|
|
10
10
|
|
|
11
|
-
@name =
|
|
11
|
+
@name =
|
|
12
|
+
parsed.delete(:name).presence || parsed[:regular_splat].presence ||
|
|
13
|
+
parsed[:keyword_splat].presence || parsed[:spread].presence ||
|
|
14
|
+
parsed[:block].presence
|
|
12
15
|
@keyword = parsed.delete(:keyword).present?
|
|
13
16
|
@regular_splat = parsed.delete(:regular_splat).present?
|
|
14
17
|
@keyword_splat = parsed.delete(:keyword_splat).present?
|
|
18
|
+
@spread = parsed.delete(:spread).present?
|
|
19
|
+
@block = parsed.delete(:block).present?
|
|
15
20
|
@default = Code.new(parsed.delete(:default)) if parsed.key?(:default)
|
|
16
21
|
end
|
|
17
22
|
|
|
@@ -35,6 +40,14 @@ class Code
|
|
|
35
40
|
!!@keyword_splat
|
|
36
41
|
end
|
|
37
42
|
|
|
43
|
+
def spread?
|
|
44
|
+
!!@spread
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def block?
|
|
48
|
+
!!@block
|
|
49
|
+
end
|
|
50
|
+
|
|
38
51
|
def to_h
|
|
39
52
|
{
|
|
40
53
|
name: name,
|
|
@@ -42,6 +55,8 @@ class Code
|
|
|
42
55
|
keyword?: keyword?,
|
|
43
56
|
regular_splat?: regular_splat?,
|
|
44
57
|
keyword_splat?: keyword_splat?,
|
|
58
|
+
spread?: spread?,
|
|
59
|
+
block?: block?,
|
|
45
60
|
default: default
|
|
46
61
|
}
|
|
47
62
|
end
|
data/lib/code/object/context.rb
CHANGED
data/lib/code/object/date.rb
CHANGED
|
@@ -693,18 +693,14 @@ class Code
|
|
|
693
693
|
week_day.to_code.nothing? ? week_days.to_code : week_day.to_code
|
|
694
694
|
code_week = week.to_code.nothing? ? weeks.to_code : week.to_code
|
|
695
695
|
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
code_week_day.code_to_integer.raw,
|
|
705
|
-
cweek: code_weeks.code_to_integer.raw + code_week.code_to_integer.raw
|
|
706
|
-
)
|
|
707
|
-
)
|
|
696
|
+
year = code_years.code_to_integer.raw + code_year.code_to_integer.raw
|
|
697
|
+
month = code_months.code_to_integer.raw + code_month.code_to_integer.raw
|
|
698
|
+
day = code_days.code_to_integer.raw + code_day.code_to_integer.raw
|
|
699
|
+
week_day =
|
|
700
|
+
code_week_days.code_to_integer.raw + code_week_day.code_to_integer.raw
|
|
701
|
+
week = code_weeks.code_to_integer.raw + code_week.code_to_integer.raw
|
|
702
|
+
|
|
703
|
+
code_change(year:, month:, day:, week_day:, week:)
|
|
708
704
|
end
|
|
709
705
|
|
|
710
706
|
def code_substract(
|
|
@@ -726,18 +722,14 @@ class Code
|
|
|
726
722
|
week_day.to_code.nothing? ? week_days.to_code : week_day.to_code
|
|
727
723
|
code_week = week.to_code.nothing? ? weeks.to_code : week.to_code
|
|
728
724
|
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
code_week_day.code_to_integer.raw,
|
|
738
|
-
cweek: code_weeks.code_to_integer.raw - code_week.code_to_integer.raw
|
|
739
|
-
)
|
|
740
|
-
)
|
|
725
|
+
year = code_years.code_to_integer.raw - code_year.code_to_integer.raw
|
|
726
|
+
month = code_months.code_to_integer.raw - code_month.code_to_integer.raw
|
|
727
|
+
day = code_days.code_to_integer.raw - code_day.code_to_integer.raw
|
|
728
|
+
week_day =
|
|
729
|
+
code_week_days.code_to_integer.raw - code_week_day.code_to_integer.raw
|
|
730
|
+
week = code_weeks.code_to_integer.raw - code_week.code_to_integer.raw
|
|
731
|
+
|
|
732
|
+
code_change(year:, month:, day:, week_day:, week:)
|
|
741
733
|
end
|
|
742
734
|
|
|
743
735
|
def code_change(
|
|
@@ -759,23 +751,20 @@ class Code
|
|
|
759
751
|
week_day.to_code.nothing? ? week_days.to_code : week_day.to_code
|
|
760
752
|
code_week = week.to_code.nothing? ? weeks.to_code : week.to_code
|
|
761
753
|
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
else
|
|
777
|
-
Date.new(self)
|
|
778
|
-
end
|
|
754
|
+
year = code_year.raw || code_years.raw
|
|
755
|
+
month = code_month.raw || code_months.raw
|
|
756
|
+
day = code_day.raw || code_days.raw
|
|
757
|
+
wday = code_week_day.raw || code_week_days.raw
|
|
758
|
+
cweek = code_week.raw || code_weeks.raw
|
|
759
|
+
|
|
760
|
+
dup = raw.dup
|
|
761
|
+
dup += (year - raw.year).years
|
|
762
|
+
dup += (month - raw.month).months
|
|
763
|
+
dup += (day - raw.day).days
|
|
764
|
+
dup += (wday - raw.wday).days
|
|
765
|
+
dup += (cweek - raw.to_date.cweek).weeks
|
|
766
|
+
|
|
767
|
+
Date.new(dup)
|
|
779
768
|
end
|
|
780
769
|
end
|
|
781
770
|
end
|
data/lib/code/object/function.rb
CHANGED
|
@@ -38,12 +38,19 @@ class Code
|
|
|
38
38
|
|
|
39
39
|
code_parameters.raw.each.with_index do |code_parameter, index|
|
|
40
40
|
code_argument =
|
|
41
|
-
if code_parameter.
|
|
41
|
+
if code_parameter.spread?
|
|
42
|
+
code_arguments
|
|
43
|
+
elsif code_parameter.regular_splat?
|
|
42
44
|
code_arguments
|
|
43
45
|
elsif code_parameter.keyword_splat?
|
|
44
46
|
code_arguments.raw.detect do |code_argument|
|
|
45
47
|
code_argument.is_a?(Dictionary)
|
|
46
48
|
end || Dictionary.new
|
|
49
|
+
elsif code_parameter.block?
|
|
50
|
+
code_arguments
|
|
51
|
+
.raw
|
|
52
|
+
.detect { |code_argument| code_argument.is_a?(Function) }
|
|
53
|
+
.to_code
|
|
47
54
|
elsif code_parameter.keyword?
|
|
48
55
|
code_arguments
|
|
49
56
|
.raw
|
|
@@ -71,7 +78,11 @@ class Code
|
|
|
71
78
|
code_parameters
|
|
72
79
|
.raw
|
|
73
80
|
.inject([]) do |signature, code_parameter|
|
|
74
|
-
if code_parameter.
|
|
81
|
+
if code_parameter.spread?
|
|
82
|
+
signature + [Object.repeat]
|
|
83
|
+
elsif code_parameter.block?
|
|
84
|
+
signature + [Function]
|
|
85
|
+
elsif code_parameter.keyword_splat?
|
|
75
86
|
signature + [Dictionary.maybe]
|
|
76
87
|
elsif code_parameter.regular_splat?
|
|
77
88
|
signature + [Object.repeat]
|
|
@@ -23,6 +23,14 @@ class Code
|
|
|
23
23
|
Boolean.new(code_get(:keyword_splat?))
|
|
24
24
|
end
|
|
25
25
|
|
|
26
|
+
def code_block?
|
|
27
|
+
Boolean.new(code_get(:block?))
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def code_spread?
|
|
31
|
+
Boolean.new(code_get(:spread?))
|
|
32
|
+
end
|
|
33
|
+
|
|
26
34
|
def code_required?
|
|
27
35
|
code_default.code_falsy?
|
|
28
36
|
end
|
|
@@ -62,6 +70,14 @@ class Code
|
|
|
62
70
|
def keyword_splat?
|
|
63
71
|
code_keyword_splat?.truthy?
|
|
64
72
|
end
|
|
73
|
+
|
|
74
|
+
def spread?
|
|
75
|
+
code_spread?.truthy?
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
def block?
|
|
79
|
+
code_block?.truthy?
|
|
80
|
+
end
|
|
65
81
|
end
|
|
66
82
|
end
|
|
67
83
|
end
|
data/lib/code/object/time.rb
CHANGED
|
@@ -831,27 +831,30 @@ class Code
|
|
|
831
831
|
week_day.to_code.nothing? ? week_days.to_code : week_day.to_code
|
|
832
832
|
code_week = week.to_code.nothing? ? weeks.to_code : week.to_code
|
|
833
833
|
code_hour = hour.to_code.nothing? ? hours.to_code : hour.to_code
|
|
834
|
-
code_minute =
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
834
|
+
code_minute = minute.to_code.nothing? ? minutes.to_code : minute.to_code
|
|
835
|
+
code_second = second.to_code.nothing? ? seconds.to_code : second.to_code
|
|
836
|
+
|
|
837
|
+
year = code_years.code_to_integer.raw + code_year.code_to_integer.raw
|
|
838
|
+
month = code_months.code_to_integer.raw + code_month.code_to_integer.raw
|
|
839
|
+
day = code_days.code_to_integer.raw + code_day.code_to_integer.raw
|
|
840
|
+
week_day =
|
|
841
|
+
code_week_days.code_to_integer.raw + code_week_day.code_to_integer.raw
|
|
842
|
+
week = code_weeks.code_to_integer.raw + code_week.code_to_integer.raw
|
|
843
|
+
hour = code_hours.code_to_integer.raw + code_hour.code_to_integer.raw
|
|
844
|
+
minute =
|
|
845
|
+
code_minutes.code_to_integer.raw + code_minute.code_to_integer.raw
|
|
846
|
+
second =
|
|
847
|
+
code_seconds.code_to_integer.raw + code_second.code_to_integer.raw
|
|
848
|
+
|
|
849
|
+
code_change(
|
|
850
|
+
year:,
|
|
851
|
+
month:,
|
|
852
|
+
day:,
|
|
853
|
+
week_day:,
|
|
854
|
+
week:,
|
|
855
|
+
hour:,
|
|
856
|
+
minute:,
|
|
857
|
+
second:
|
|
855
858
|
)
|
|
856
859
|
end
|
|
857
860
|
|
|
@@ -880,27 +883,30 @@ class Code
|
|
|
880
883
|
week_day.to_code.nothing? ? week_days.to_code : week_day.to_code
|
|
881
884
|
code_week = week.to_code.nothing? ? weeks.to_code : week.to_code
|
|
882
885
|
code_hour = hour.to_code.nothing? ? hours.to_code : hour.to_code
|
|
883
|
-
code_minute =
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
886
|
+
code_minute = minute.to_code.nothing? ? minutes.to_code : minute.to_code
|
|
887
|
+
code_second = second.to_code.nothing? ? seconds.to_code : second.to_code
|
|
888
|
+
|
|
889
|
+
year = code_years.code_to_integer.raw - code_year.code_to_integer.raw
|
|
890
|
+
month = code_months.code_to_integer.raw - code_month.code_to_integer.raw
|
|
891
|
+
day = code_days.code_to_integer.raw - code_day.code_to_integer.raw
|
|
892
|
+
week_day =
|
|
893
|
+
code_week_days.code_to_integer.raw - code_week_day.code_to_integer.raw
|
|
894
|
+
week = code_weeks.code_to_integer.raw - code_week.code_to_integer.raw
|
|
895
|
+
hour = code_hours.code_to_integer.raw - code_hour.code_to_integer.raw
|
|
896
|
+
minute =
|
|
897
|
+
code_minutes.code_to_integer.raw - code_minute.code_to_integer.raw
|
|
898
|
+
second =
|
|
899
|
+
code_seconds.code_to_integer.raw - code_second.code_to_integer.raw
|
|
900
|
+
|
|
901
|
+
code_change(
|
|
902
|
+
year:,
|
|
903
|
+
month:,
|
|
904
|
+
day:,
|
|
905
|
+
week_day:,
|
|
906
|
+
week:,
|
|
907
|
+
hour:,
|
|
908
|
+
minute:,
|
|
909
|
+
second:
|
|
904
910
|
)
|
|
905
911
|
end
|
|
906
912
|
|
|
@@ -929,32 +935,29 @@ class Code
|
|
|
929
935
|
week_day.to_code.nothing? ? week_days.to_code : week_day.to_code
|
|
930
936
|
code_week = week.to_code.nothing? ? weeks.to_code : week.to_code
|
|
931
937
|
code_hour = hour.to_code.nothing? ? hours.to_code : hour.to_code
|
|
932
|
-
code_minute =
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
else
|
|
956
|
-
Time.new(self)
|
|
957
|
-
end
|
|
938
|
+
code_minute = minute.to_code.nothing? ? minutes.to_code : minute.to_code
|
|
939
|
+
code_second = second.to_code.nothing? ? seconds.to_code : second.to_code
|
|
940
|
+
|
|
941
|
+
year = code_year.raw || code_years.raw
|
|
942
|
+
month = code_month.raw || code_months.raw
|
|
943
|
+
day = code_day.raw || code_days.raw
|
|
944
|
+
wday = code_week_day.raw || code_week_days.raw
|
|
945
|
+
cweek = code_week.raw || code_weeks.raw
|
|
946
|
+
hour = code_hour.raw || code_hours.raw
|
|
947
|
+
min = code_minute.raw || code_minutes.raw
|
|
948
|
+
sec = code_second.raw || code_seconds.raw
|
|
949
|
+
|
|
950
|
+
dup = raw.dup
|
|
951
|
+
dup += (year - raw.year).years
|
|
952
|
+
dup += (month - raw.month).months
|
|
953
|
+
dup += (day - raw.day).days
|
|
954
|
+
dup += (wday - raw.wday).days
|
|
955
|
+
dup += (cweek - raw.to_date.cweek).weeks
|
|
956
|
+
dup += (hour - raw.hour).hours
|
|
957
|
+
dup += (min - raw.min).minutes
|
|
958
|
+
dup += (sec - raw.sec).seconds
|
|
959
|
+
|
|
960
|
+
Time.new(dup)
|
|
958
961
|
end
|
|
959
962
|
end
|
|
960
963
|
end
|
data/lib/code/parser/call.rb
CHANGED
|
@@ -67,6 +67,18 @@ class Code
|
|
|
67
67
|
str("end")
|
|
68
68
|
end
|
|
69
69
|
|
|
70
|
+
def asterisk
|
|
71
|
+
str("*")
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def ampersand
|
|
75
|
+
str("&")
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
def spread_operator
|
|
79
|
+
str("...") | str("..") | str(".")
|
|
80
|
+
end
|
|
81
|
+
|
|
70
82
|
def keyword_argument
|
|
71
83
|
name.aka(:name) << whitespace? << colon << code.aka(:value)
|
|
72
84
|
end
|
|
@@ -87,13 +99,19 @@ class Code
|
|
|
87
99
|
).repeat << whitespace? << closing_parenthesis.ignore.maybe
|
|
88
100
|
end
|
|
89
101
|
|
|
102
|
+
def prefix
|
|
103
|
+
(asterisk << asterisk).aka(:keyword_splat) |
|
|
104
|
+
asterisk.aka(:regular_splat) | ampersand.aka(:block) |
|
|
105
|
+
spread_operator.aka(:spread)
|
|
106
|
+
end
|
|
107
|
+
|
|
90
108
|
def keyword_parameter
|
|
91
109
|
name.aka(:name) << whitespace? << colon.aka(:keyword) <<
|
|
92
110
|
code_present.aka(:default).maybe
|
|
93
111
|
end
|
|
94
112
|
|
|
95
113
|
def regular_parameter
|
|
96
|
-
name.aka(:name) << whitespace? <<
|
|
114
|
+
((prefix.maybe << name.aka(:name)) | prefix) << whitespace? <<
|
|
97
115
|
(equal << whitespace? << code_present.aka(:default)).maybe
|
|
98
116
|
end
|
|
99
117
|
|
data/lib/code/parser/function.rb
CHANGED
|
@@ -35,6 +35,10 @@ class Code
|
|
|
35
35
|
str("end")
|
|
36
36
|
end
|
|
37
37
|
|
|
38
|
+
def spread_operator
|
|
39
|
+
str("...") | str("..") | str(".")
|
|
40
|
+
end
|
|
41
|
+
|
|
38
42
|
def opening_parenthesis
|
|
39
43
|
str("(")
|
|
40
44
|
end
|
|
@@ -77,7 +81,8 @@ class Code
|
|
|
77
81
|
|
|
78
82
|
def prefix
|
|
79
83
|
(asterisk << asterisk).aka(:keyword_splat) |
|
|
80
|
-
asterisk.aka(:regular_splat) | ampersand.aka(:block)
|
|
84
|
+
asterisk.aka(:regular_splat) | ampersand.aka(:block) |
|
|
85
|
+
spread_operator.aka(:spread)
|
|
81
86
|
end
|
|
82
87
|
|
|
83
88
|
def keyword_parameter
|
|
@@ -86,7 +91,7 @@ class Code
|
|
|
86
91
|
end
|
|
87
92
|
|
|
88
93
|
def regular_parameter
|
|
89
|
-
prefix.maybe << name.aka(:name) << whitespace? <<
|
|
94
|
+
((prefix.maybe << name.aka(:name)) | prefix) << whitespace? <<
|
|
90
95
|
(equal << whitespace? << code_present.aka(:default)).maybe
|
|
91
96
|
end
|
|
92
97
|
|
data/lib/code/parser/name.rb
CHANGED
|
@@ -139,6 +139,10 @@ class Code
|
|
|
139
139
|
str("?")
|
|
140
140
|
end
|
|
141
141
|
|
|
142
|
+
def special_name
|
|
143
|
+
str("...") | str("..") | str(".") | str("**") | str("*") | str("&")
|
|
144
|
+
end
|
|
145
|
+
|
|
142
146
|
def reserved_character
|
|
143
147
|
ampersand | equal | pipe | dot | colon | comma | space | newline |
|
|
144
148
|
opening_curly_bracket | closing_curly_bracket | opening_parenthesis |
|
|
@@ -167,8 +171,13 @@ class Code
|
|
|
167
171
|
end
|
|
168
172
|
|
|
169
173
|
def root
|
|
170
|
-
(
|
|
171
|
-
|
|
174
|
+
(
|
|
175
|
+
special_name |
|
|
176
|
+
(
|
|
177
|
+
(keyword << separator).absent << special_characters.absent <<
|
|
178
|
+
character.repeat(1)
|
|
179
|
+
)
|
|
180
|
+
)
|
|
172
181
|
end
|
|
173
182
|
end
|
|
174
183
|
end
|
data/lib/code-ruby.rb
CHANGED
data/spec/code_spec.rb
CHANGED
|
@@ -268,8 +268,8 @@ RSpec.describe Code do
|
|
|
268
268
|
["Class(true, 1)", "Boolean"],
|
|
269
269
|
["Class.new(Boolean, Time)", "Boolean"],
|
|
270
270
|
["Class.new(Time, Boolean)", "Time"],
|
|
271
|
-
[
|
|
272
|
-
[
|
|
271
|
+
%w[Date("2024-3-2").to_string :2024-03-02],
|
|
272
|
+
%w[Date("2024-3-2").to_string :2024-03-02],
|
|
273
273
|
["Decimal(1, :2)", "100"],
|
|
274
274
|
["Decimal(:1, 2)", "100.0"],
|
|
275
275
|
["Decimal.new(1, :2)", "100"],
|
metadata
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: code-ruby
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.6.
|
|
4
|
+
version: 1.6.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Dorian Marié
|
|
8
8
|
bindir: bin
|
|
9
9
|
cert_chain: []
|
|
10
|
-
date: 2025-06-
|
|
10
|
+
date: 2025-06-25 00:00:00.000000000 Z
|
|
11
11
|
dependencies:
|
|
12
12
|
- !ruby/object:Gem::Dependency
|
|
13
13
|
name: activesupport
|