code-ruby-parser 0.1.7 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (103) hide show
  1. checksums.yaml +4 -4
  2. data/code-ruby-parser.gemspec +3 -1
  3. data/lib/code-ruby-parser.rb +1 -7
  4. data/lib/template-ruby-parser.rb +1 -7
  5. data/template-ruby-parser.gemspec +3 -1
  6. metadata +18 -137
  7. data/.overcommit.yml +0 -4
  8. data/CHANGELOG.md +0 -31
  9. data/Gemfile +0 -5
  10. data/Gemfile.lock +0 -32
  11. data/bin/code-parser +0 -27
  12. data/bin/deploy +0 -16
  13. data/bin/format +0 -3
  14. data/bin/parse-docs +0 -6
  15. data/bin/template-parser +0 -27
  16. data/docs/class.code +0 -9
  17. data/docs/meetup.code +0 -14
  18. data/docs/precedence.code +0 -1
  19. data/docs/precedence.template +0 -35
  20. data/docs/rain.code +0 -23
  21. data/docs/slack.code +0 -17
  22. data/docs/stripe.code +0 -7
  23. data/docs/twitter.code +0 -7
  24. data/lib/code/parser/addition.rb +0 -13
  25. data/lib/code/parser/and_operator.rb +0 -13
  26. data/lib/code/parser/bitwise_and.rb +0 -13
  27. data/lib/code/parser/bitwise_or.rb +0 -13
  28. data/lib/code/parser/boolean.rb +0 -13
  29. data/lib/code/parser/call.rb +0 -183
  30. data/lib/code/parser/chained_call.rb +0 -41
  31. data/lib/code/parser/class.rb +0 -55
  32. data/lib/code/parser/code.rb +0 -20
  33. data/lib/code/parser/comments.rb +0 -46
  34. data/lib/code/parser/dictionnary.rb +0 -52
  35. data/lib/code/parser/equal.rb +0 -68
  36. data/lib/code/parser/equality.rb +0 -20
  37. data/lib/code/parser/error/syntax_error.rb +0 -36
  38. data/lib/code/parser/error.rb +0 -6
  39. data/lib/code/parser/function.rb +0 -118
  40. data/lib/code/parser/greater_than.rb +0 -13
  41. data/lib/code/parser/group.rb +0 -15
  42. data/lib/code/parser/if.rb +0 -81
  43. data/lib/code/parser/if_modifier.rb +0 -39
  44. data/lib/code/parser/list.rb +0 -20
  45. data/lib/code/parser/multiplication.rb +0 -13
  46. data/lib/code/parser/name.rb +0 -14
  47. data/lib/code/parser/negation.rb +0 -18
  48. data/lib/code/parser/not_keyword.rb +0 -26
  49. data/lib/code/parser/nothing.rb +0 -13
  50. data/lib/code/parser/number.rb +0 -39
  51. data/lib/code/parser/operation.rb +0 -65
  52. data/lib/code/parser/or_keyword.rb +0 -13
  53. data/lib/code/parser/or_operator.rb +0 -13
  54. data/lib/code/parser/power.rb +0 -33
  55. data/lib/code/parser/range.rb +0 -13
  56. data/lib/code/parser/rescue.rb +0 -38
  57. data/lib/code/parser/shift.rb +0 -13
  58. data/lib/code/parser/splat.rb +0 -35
  59. data/lib/code/parser/statement.rb +0 -9
  60. data/lib/code/parser/string.rb +0 -62
  61. data/lib/code/parser/ternary.rb +0 -73
  62. data/lib/code/parser/unary_minus.rb +0 -23
  63. data/lib/code/parser/while.rb +0 -36
  64. data/lib/code/parser.rb +0 -237
  65. data/lib/code.rb +0 -2
  66. data/lib/template/parser.rb +0 -32
  67. data/lib/template.rb +0 -2
  68. data/spec/code/parser/addition_spec.rb +0 -26
  69. data/spec/code/parser/and_operator_spec.rb +0 -26
  70. data/spec/code/parser/bitwise_and_spec.rb +0 -26
  71. data/spec/code/parser/bitwise_or_spec.rb +0 -26
  72. data/spec/code/parser/boolean_spec.rb +0 -13
  73. data/spec/code/parser/call_spec.rb +0 -52
  74. data/spec/code/parser/chained_call_spec.rb +0 -33
  75. data/spec/code/parser/class_spec.rb +0 -32
  76. data/spec/code/parser/code_spec.rb +0 -13
  77. data/spec/code/parser/dictionnary_spec.rb +0 -40
  78. data/spec/code/parser/equal_spec.rb +0 -42
  79. data/spec/code/parser/equality_spec.rb +0 -26
  80. data/spec/code/parser/function_spec.rb +0 -43
  81. data/spec/code/parser/greater_than_spec.rb +0 -26
  82. data/spec/code/parser/group_spec.rb +0 -13
  83. data/spec/code/parser/if_modifier_spec.rb +0 -26
  84. data/spec/code/parser/if_spec.rb +0 -39
  85. data/spec/code/parser/list_spec.rb +0 -27
  86. data/spec/code/parser/multiplication_spec.rb +0 -26
  87. data/spec/code/parser/negation_spec.rb +0 -13
  88. data/spec/code/parser/not_keyword_spec.rb +0 -21
  89. data/spec/code/parser/nothing_spec.rb +0 -20
  90. data/spec/code/parser/number_spec.rb +0 -24
  91. data/spec/code/parser/or_keyword_spec.rb +0 -26
  92. data/spec/code/parser/or_operator_spec.rb +0 -26
  93. data/spec/code/parser/power_spec.rb +0 -21
  94. data/spec/code/parser/range_spec.rb +0 -21
  95. data/spec/code/parser/rescue_spec.rb +0 -26
  96. data/spec/code/parser/shift_spec.rb +0 -26
  97. data/spec/code/parser/string_spec.rb +0 -28
  98. data/spec/code/parser/ternary_spec.rb +0 -26
  99. data/spec/code/parser/unary_minus_spec.rb +0 -21
  100. data/spec/code/parser/while_spec.rb +0 -32
  101. data/spec/code/parser_spec.rb +0 -13
  102. data/spec/spec_helper.rb +0 -6
  103. data/spec/template/parser_spec.rb +0 -13
@@ -1,36 +0,0 @@
1
- class Code
2
- class Parser
3
- class While < ::Code::Parser
4
- def parse
5
- if operator = match([WHILE_KEYWORD, UNTIL_KEYWORD])
6
- previous_cursor = cursor
7
-
8
- comments = parse_comments
9
-
10
- condition = parse_subclass(::Code::Parser::While)
11
-
12
- if condition
13
- body = parse_code
14
-
15
- match(END_KEYWORD)
16
-
17
- {
18
- while: {
19
- operator: operator,
20
- comments: comments,
21
- condition: condition,
22
- body: body
23
- }.compact
24
- }
25
- else
26
- @cursor = previous_cursor
27
- buffer!
28
- parse_subclass(::Code::Parser::If)
29
- end
30
- else
31
- parse_subclass(::Code::Parser::If)
32
- end
33
- end
34
- end
35
- end
36
- end
data/lib/code/parser.rb DELETED
@@ -1,237 +0,0 @@
1
- class Code
2
- class Parser
3
- attr_accessor :input, :cursor, :buffer
4
-
5
- EMPTY_STRING = ""
6
-
7
- DIGITS = %w[0 1 2 3 4 5 6 7 8 9]
8
- NON_ZERO_DIGITS = %w[1 2 3 4 5 6 7 8 9]
9
-
10
- X = "x"
11
- O = "o"
12
- B = "b"
13
-
14
- SINGLE_QUOTE = "'"
15
- DOUBLE_QUOTE = '"'
16
- OPENING_CURLY_BRACKET = "{"
17
- CLOSING_CURLY_BRACKET = "}"
18
- OPENING_SQUARE_BRACKET = "["
19
- CLOSING_SQUARE_BRACKET = "]"
20
- OPENING_PARENTHESIS = "("
21
- CLOSING_PARENTHESIS = ")"
22
- DOT = "."
23
- BACKSLASH = "\\"
24
- COMMA = ","
25
- SPACE = " "
26
- SLASH = "/"
27
- ASTERISK = "*"
28
- NEWLINE = "\n"
29
- HASH = "#"
30
- COLON = ":"
31
- EQUAL = "="
32
- GREATER = ">"
33
- LESSER = "<"
34
- AMPERSAND = "&"
35
- PIPE = "|"
36
- UNDERSCORE = "_"
37
- EXCLAMATION_POINT = "!"
38
- QUESTION_MARK = "?"
39
- MINUS = "-"
40
- PLUS = "+"
41
- PERCENT = "%"
42
- CARET = "^"
43
- TILDE = "~"
44
-
45
- EQUALS = [
46
- EQUAL,
47
- PLUS + EQUAL,
48
- MINUS + EQUAL,
49
- ASTERISK + EQUAL,
50
- SLASH + EQUAL,
51
- PERCENT + EQUAL,
52
- GREATER + GREATER + EQUAL,
53
- LESSER + LESSER + EQUAL,
54
- AMPERSAND + EQUAL,
55
- PIPE + EQUAL,
56
- CARET + EQUAL,
57
- PIPE + PIPE + EQUAL,
58
- AMPERSAND + AMPERSAND + EQUAL
59
- ]
60
-
61
- WHITESPACE = [SPACE, NEWLINE]
62
-
63
- SPECIAL_NEWLINE = "\\n"
64
- SPECIAL_NEWLINE_ESCAPED = "\n"
65
-
66
- NOTHING_KEYWORD = "nothing"
67
- NULL_KEYWORD = "null"
68
- NIL_KEYWORD = "nil"
69
- TRUE_KEYWORD = "true"
70
- FALSE_KEYWORD = "false"
71
- DO_KEYWORD = "do"
72
- END_KEYWORD = "end"
73
- RESCUE_KEYWORD = "rescue"
74
- NOT_KEYWORD = "not"
75
- OR_KEYWORD = "or"
76
- AND_KEYWORD = "and"
77
- IF_KEYWORD = "if"
78
- UNLESS_KEYWORD = "unless"
79
- ELSE_KEYWORD = "else"
80
- ELSIF_KEYWORD = "elsif"
81
- ELSUNLESS_KEYWORD = "elsunless"
82
- WHILE_KEYWORD = "while"
83
- UNTIL_KEYWORD = "until"
84
- CLASS_KEYWORD = "class"
85
-
86
- NOTHING_KEYWORDS = [NOTHING_KEYWORD, NULL_KEYWORD, NIL_KEYWORD]
87
- BOOLEAN_KEYWORDS = [TRUE_KEYWORD, FALSE_KEYWORD]
88
- KEYWORDS =
89
- NOTHING_KEYWORDS + BOOLEAN_KEYWORDS +
90
- [
91
- DO_KEYWORD, END_KEYWORD, RESCUE_KEYWORD, NOT_KEYWORD, OR_KEYWORD,
92
- AND_KEYWORD, IF_KEYWORD, UNLESS_KEYWORD, ELSE_KEYWORD, ELSIF_KEYWORD,
93
- ELSUNLESS_KEYWORD, WHILE_KEYWORD, UNTIL_KEYWORD, CLASS_KEYWORD
94
- ]
95
-
96
- SPECIAL = [
97
- SINGLE_QUOTE, DOUBLE_QUOTE, OPENING_CURLY_BRACKET, CLOSING_CURLY_BRACKET,
98
- OPENING_SQUARE_BRACKET, CLOSING_SQUARE_BRACKET, BACKSLASH, DOT, COMMA,
99
- SPACE, SLASH, ASTERISK, NEWLINE, HASH, COLON, EQUAL, GREATER, LESSER,
100
- OPENING_PARENTHESIS, CLOSING_PARENTHESIS, AMPERSAND, PIPE,
101
- EXCLAMATION_POINT, QUESTION_MARK, MINUS, PLUS, TILDE
102
- ]
103
-
104
- def initialize(
105
- input,
106
- cursor: 0,
107
- buffer: EMPTY_STRING,
108
- check_end_of_input: true
109
- )
110
- @input = input
111
- @cursor = cursor
112
- @buffer = buffer
113
- @check_end_of_input = check_end_of_input
114
- end
115
-
116
- def self.parse(input)
117
- new(input).parse
118
- end
119
-
120
- def parse
121
- output = parse_subclass(::Code::Parser::Code)
122
-
123
- if check_end_of_input && cursor != input.size
124
- syntax_error("Unexpected end of input")
125
- end
126
-
127
- output
128
- end
129
-
130
- private
131
-
132
- attr_reader :check_end_of_input
133
-
134
- def syntax_error(message)
135
- raise(
136
- ::Code::Parser::Error::SyntaxError.new(
137
- message,
138
- input: input,
139
- line: line,
140
- column: column,
141
- offset_lines: offset_lines,
142
- offset_columns: offset_columns
143
- )
144
- )
145
- end
146
-
147
- def line
148
- input[0...cursor].count("\n")
149
- end
150
-
151
- def column
152
- cursor - input.lines[0...line].map(&:size).sum
153
- end
154
-
155
- def offset_lines
156
- buffer.count("\n")
157
- end
158
-
159
- def offset_columns
160
- buffer.size + 1
161
- end
162
-
163
- def consume(n = 1)
164
- if cursor + n <= input.size
165
- consumed = input[cursor, n]
166
- @buffer += input[cursor, n]
167
- @cursor += n
168
- consumed
169
- else
170
- syntax_error("Unexpected end of input")
171
- end
172
- end
173
-
174
- def add(output)
175
- @output << output if output
176
- output
177
- end
178
-
179
- def next?(expected)
180
- if expected.is_a?(Array)
181
- expected.any? { |e| input[cursor, e.size] == e }
182
- else
183
- input[cursor, expected.size] == expected
184
- end
185
- end
186
-
187
- def next_next?(expected)
188
- if expected.is_a?(Array)
189
- expected.any? { |e| next_next?(e) }
190
- else
191
- input[cursor + 1, expected.size] == expected
192
- end
193
- end
194
-
195
- def match(expected)
196
- if expected.is_a?(Array)
197
- expected.detect { |e| match(e) }
198
- else
199
- if input[cursor, expected.size] == expected
200
- @buffer += expected
201
- @cursor += expected.size
202
- expected
203
- else
204
- false
205
- end
206
- end
207
- end
208
-
209
- def parse_subclass(subclass, **kargs)
210
- parser =
211
- subclass.new(input, cursor: cursor, check_end_of_input: false, **kargs)
212
- output = parser.parse
213
- @cursor = parser.cursor
214
- output
215
- end
216
-
217
- def parse_code
218
- parse_subclass(::Code::Parser::Code)
219
- end
220
-
221
- def parse_comments(whitespace: WHITESPACE)
222
- parse_subclass(::Code::Parser::Comments, whitespace: whitespace)
223
- end
224
-
225
- def end_of_input?
226
- cursor >= input.size
227
- end
228
-
229
- def buffer?
230
- buffer != EMPTY_STRING
231
- end
232
-
233
- def buffer!
234
- buffer.tap { @buffer = EMPTY_STRING }
235
- end
236
- end
237
- end
data/lib/code.rb DELETED
@@ -1,2 +0,0 @@
1
- class Code
2
- end
@@ -1,32 +0,0 @@
1
- class Template
2
- class Parser < ::Code::Parser
3
- Version = Gem::Version.new("0.1.7")
4
-
5
- def parse
6
- parts = []
7
-
8
- while !end_of_input?
9
- c = consume
10
-
11
- if c == OPENING_CURLY_BRACKET
12
- parts << { text: escape(buffer!) } if buffer?
13
- parts << { code: parse_code }
14
- match(CLOSING_CURLY_BRACKET)
15
- buffer!
16
- elsif c == BACKSLASH
17
- match(OPENING_CURLY_BRACKET)
18
- end
19
- end
20
-
21
- parts << { text: escape(buffer!) } if buffer?
22
-
23
- parts
24
- end
25
-
26
- private
27
-
28
- def escape(text)
29
- text.gsub(BACKSLASH + OPENING_CURLY_BRACKET, OPENING_CURLY_BRACKET)
30
- end
31
- end
32
- end
data/lib/template.rb DELETED
@@ -1,2 +0,0 @@
1
- class Template
2
- end
@@ -1,26 +0,0 @@
1
- require "spec_helper"
2
-
3
- RSpec.describe ::Code::Parser do
4
- subject { ::Code::Parser.parse(input) }
5
-
6
- ["a + b", "a - b", "(a - b) + c", "a - (b + c)"].each do |input|
7
- context input do
8
- let!(:input) { input }
9
-
10
- it { subject }
11
- end
12
- end
13
-
14
- [
15
- "a /* cool */ * b",
16
- "a + /* cool */ b",
17
- "a + b - c /* cool */",
18
- "a + b - /* cool */ c"
19
- ].each do |input|
20
- context input do
21
- let!(:input) { input }
22
-
23
- it { expect(subject.to_json).to include("cool") }
24
- end
25
- end
26
- end
@@ -1,26 +0,0 @@
1
- require "spec_helper"
2
-
3
- RSpec.describe ::Code::Parser do
4
- subject { ::Code::Parser.parse(input) }
5
-
6
- ["a && b", "a && b && c"].each do |input|
7
- context input do
8
- let!(:input) { input }
9
-
10
- it { subject }
11
- end
12
- end
13
-
14
- [
15
- "a /* cool */ && b",
16
- "a && /* cool */ b",
17
- "a && b && c /* cool */",
18
- "a && b && /* cool */ c"
19
- ].each do |input|
20
- context input do
21
- let!(:input) { input }
22
-
23
- it { expect(subject.to_json).to include("cool") }
24
- end
25
- end
26
- end
@@ -1,26 +0,0 @@
1
- require "spec_helper"
2
-
3
- RSpec.describe ::Code::Parser do
4
- subject { ::Code::Parser.parse(input) }
5
-
6
- ["a & b", "a & b & c"].each do |input|
7
- context input do
8
- let!(:input) { input }
9
-
10
- it { subject }
11
- end
12
- end
13
-
14
- [
15
- "a /* cool */ & b",
16
- "a & /* cool */ b",
17
- "a & b & c /* cool */",
18
- "a & b & /* cool */ c"
19
- ].each do |input|
20
- context input do
21
- let!(:input) { input }
22
-
23
- it { expect(subject.to_json).to include("cool") }
24
- end
25
- end
26
- end
@@ -1,26 +0,0 @@
1
- require "spec_helper"
2
-
3
- RSpec.describe ::Code::Parser do
4
- subject { ::Code::Parser.parse(input) }
5
-
6
- ["a | b", "a | b | c"].each do |input|
7
- context input do
8
- let!(:input) { input }
9
-
10
- it { subject }
11
- end
12
- end
13
-
14
- [
15
- "a /* cool */ | b",
16
- "a | /* cool */ b",
17
- "a | b | c /* cool */",
18
- "a | b | /* cool */ c"
19
- ].each do |input|
20
- context input do
21
- let!(:input) { input }
22
-
23
- it { expect(subject.to_json).to include("cool") }
24
- end
25
- end
26
- end
@@ -1,13 +0,0 @@
1
- require "spec_helper"
2
-
3
- RSpec.describe ::Code::Parser do
4
- subject { ::Code::Parser.parse(input) }
5
-
6
- %w[true false].each do |input|
7
- context input do
8
- let!(:input) { input }
9
-
10
- it { subject }
11
- end
12
- end
13
- end
@@ -1,52 +0,0 @@
1
- require "spec_helper"
2
-
3
- RSpec.describe ::Code::Parser do
4
- subject { ::Code::Parser.parse(input) }
5
-
6
- [
7
- "a",
8
- "admin?",
9
- "update!",
10
- "*args",
11
- "**kargs",
12
- "&block",
13
- "update!(user)",
14
- "puts(1)",
15
- "print(1)",
16
- "defined?(a)",
17
- "each{}",
18
- "each do end",
19
- "render(a, *b, **c, &d) { |e, *f, **g, &h| puts(e) }",
20
- "&render {}"
21
- ].each do |input|
22
- context input do
23
- let!(:input) { input }
24
-
25
- it { subject }
26
- end
27
- end
28
-
29
- [
30
- "update! /* cool */ { }",
31
- "each{/* cool */}",
32
- "render(/* cool */ a)",
33
- "render(a /* cool */)",
34
- "render(a, /* cool */ b)",
35
- "render(a, b /* cool */)",
36
- "render(/* cool */ a: 1)",
37
- "render(a: 1 /* cool */)",
38
- "render(a: 1, /* cool */ b: 2)",
39
- "render(a: 1, b: 2 /* cool */)",
40
- "render { /* cool */ |a, b| }",
41
- "render { |/* cool */ a, b| }",
42
- "render { |a /* cool */, b| }",
43
- "render { |a: 1, /* cool */ b: 2| }",
44
- "render { |a: 1, b: 2 /* cool */| }"
45
- ].each do |input|
46
- context input do
47
- let!(:input) { input }
48
-
49
- it { expect(subject.to_json).to include("cool") }
50
- end
51
- end
52
- end
@@ -1,33 +0,0 @@
1
- require "spec_helper"
2
-
3
- RSpec.describe ::Code::Parser do
4
- subject { ::Code::Parser.parse(input) }
5
-
6
- [
7
- "a.b",
8
- "a.b.c",
9
- "a(1).b.c(2)",
10
- "user.first_name",
11
- "User.all",
12
- "User::Email.first",
13
- "User.each do |user| user.update(created_at: Time.now) end"
14
- ].each do |input|
15
- context input do
16
- let!(:input) { input }
17
-
18
- it { subject }
19
- end
20
- end
21
-
22
- [
23
- "a /* cool */ . b",
24
- "a . /* cool */ b",
25
- "a . # cool\n /* cool */ b"
26
- ].each do |input|
27
- context input do
28
- let!(:input) { input }
29
-
30
- it { expect(subject.to_json).to include("cool") }
31
- end
32
- end
33
- end
@@ -1,32 +0,0 @@
1
- require "spec_helper"
2
-
3
- RSpec.describe ::Code::Parser do
4
- subject { ::Code::Parser.parse(input) }
5
-
6
- [
7
- "class A",
8
- "class A self.b = 1",
9
- "class A < B",
10
- "class A end",
11
- "class A self.b = 1 end",
12
- "class A < B end"
13
- ].each do |input|
14
- context input do
15
- let!(:input) { input }
16
-
17
- it { subject }
18
- end
19
- end
20
-
21
- [
22
- "class /* cool */ A",
23
- "class A /* cool */ < B",
24
- "class A </* cool */ B"
25
- ].each do |input|
26
- context input do
27
- let!(:input) { input }
28
-
29
- it { expect(subject.to_json).to include("cool") }
30
- end
31
- end
32
- end
@@ -1,13 +0,0 @@
1
- require "spec_helper"
2
-
3
- RSpec.describe ::Code::Parser do
4
- subject { ::Code::Parser.parse(input) }
5
-
6
- ["nothing", "nothing null nil"].each do |input|
7
- context input do
8
- let!(:input) { input }
9
-
10
- it { subject }
11
- end
12
- end
13
- end
@@ -1,40 +0,0 @@
1
- require "spec_helper"
2
-
3
- RSpec.describe ::Code::Parser do
4
- subject { ::Code::Parser.parse(input) }
5
-
6
- [
7
- "{}",
8
- "{a:1}",
9
- "{ a: 1 }",
10
- "{ :a => 1 }",
11
- "{ :a => 1, b: 2 }",
12
- "{ :a => 1, b: { c: 2 } }"
13
- ].each do |input|
14
- context input do
15
- let!(:input) { input }
16
-
17
- it { subject }
18
- end
19
- end
20
-
21
- [
22
- "{ /* cool */ }",
23
- "{ a /* cool */ : 1",
24
- "{ a /* cool */ => 1",
25
- "{ a: 1 /* cool */ }",
26
- "{ a: 1, /* cool */ b: 2 }",
27
- "{ a: 1, b /* cool */ : 2 }",
28
- "{ a: 1, b /* cool */ => 2 }",
29
- "{ a: 1, b => /* cool */ 2 }",
30
- "{ a: 1, b => 2 /* cool */ }",
31
- "{ /* cool */ **kargs }",
32
- "{ **kargs /* cool */ }"
33
- ].each do |input|
34
- context input do
35
- let!(:input) { input }
36
-
37
- it { expect(subject.to_json).to include("cool") }
38
- end
39
- end
40
- end
@@ -1,42 +0,0 @@
1
- require "spec_helper"
2
-
3
- RSpec.describe ::Code::Parser do
4
- subject { ::Code::Parser.parse(input) }
5
-
6
- [
7
- "a = 1",
8
- "a += 1",
9
- "a -= 1",
10
- "a *= 1",
11
- "a /= 1",
12
- "a <<= 1",
13
- "a >>= 1",
14
- "a &= 1",
15
- "a |= 1",
16
- "a ^= 1",
17
- "a %= 1",
18
- "a ||= 1",
19
- "a &&= 1",
20
- "a = b = 1",
21
- "a = b += c"
22
- ].each do |input|
23
- context input do
24
- let!(:input) { input }
25
-
26
- it { subject }
27
- end
28
- end
29
-
30
- [
31
- "a /* cool */ = 1",
32
- "a += /* cool */ 1",
33
- "a = b -= /* cool */ 1",
34
- "a = b /* cool */ *= 1"
35
- ].each do |input|
36
- context input do
37
- let!(:input) { input }
38
-
39
- it { expect(subject.to_json).to include("cool") }
40
- end
41
- end
42
- end
@@ -1,26 +0,0 @@
1
- require "spec_helper"
2
-
3
- RSpec.describe ::Code::Parser do
4
- subject { ::Code::Parser.parse(input) }
5
-
6
- ["a == b", "a != b", "a > 1 == true", "a == b == c"].each do |input|
7
- context input do
8
- let!(:input) { input }
9
-
10
- it { subject }
11
- end
12
- end
13
-
14
- [
15
- "a /* cool */ == b",
16
- "a == /* cool */ b",
17
- "a == b /* cool */ == c",
18
- "a == b == /* cool */ c"
19
- ].each do |input|
20
- context input do
21
- let!(:input) { input }
22
-
23
- it { expect(subject.to_json).to include("cool") }
24
- end
25
- end
26
- end