language-ruby 0.5.5 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (194) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -4
  3. data/language-ruby.gemspec +3 -3
  4. data/lib/language/atom/any.rb +8 -0
  5. data/lib/language/atom/repeat.rb +15 -0
  6. data/lib/language/atom.rb +25 -42
  7. data/lib/language/output.rb +13 -11
  8. data/lib/language/parser/absent/present.rb +2 -0
  9. data/lib/language/parser/absent.rb +2 -0
  10. data/lib/language/parser/end_of_input.rb +2 -0
  11. data/lib/language/parser/interuption.rb +2 -0
  12. data/lib/language/parser/not_end_of_input.rb +2 -0
  13. data/lib/language/parser/str/not_found.rb +2 -0
  14. data/lib/language/parser/str.rb +2 -0
  15. data/lib/language/parser.rb +10 -10
  16. data/lib/language/version.rb +3 -0
  17. data/lib/language-ruby.rb +0 -5
  18. data/lib/language.rb +9 -7
  19. data/spec/spec_helper.rb +1 -6
  20. metadata +7 -221
  21. data/.cherry.js +0 -21
  22. data/.editorconfig +0 -9
  23. data/.github/workflows/rspec.yml +0 -14
  24. data/.gitignore +0 -2
  25. data/.prettierrc +0 -3
  26. data/.rspec +0 -1
  27. data/.tool-versions +0 -1
  28. data/CHANGELOG.md +0 -55
  29. data/Gemfile.lock +0 -49
  30. data/LICENSE +0 -7
  31. data/README.md +0 -103
  32. data/TODO +0 -17
  33. data/bin/code +0 -76
  34. data/bin/format +0 -3
  35. data/bin/publish +0 -19
  36. data/bin/template +0 -85
  37. data/bin/test +0 -17
  38. data/code-ruby.gemspec +0 -17
  39. data/docs/class.code +0 -9
  40. data/docs/euler/1.template +0 -10
  41. data/docs/euler/2.template +0 -16
  42. data/docs/euler/3.template +0 -16
  43. data/docs/euler/4.template +0 -10
  44. data/docs/euler/5.template +0 -13
  45. data/docs/fibonnaci.template +0 -14
  46. data/docs/meetup.code +0 -12
  47. data/docs/precedence.template +0 -36
  48. data/docs/rain.code +0 -22
  49. data/docs/slack.code +0 -17
  50. data/docs/stripe.code +0 -7
  51. data/docs/twitter.code +0 -9
  52. data/lib/code/error.rb +0 -18
  53. data/lib/code/node/base_10.rb +0 -29
  54. data/lib/code/node/base_16.rb +0 -13
  55. data/lib/code/node/base_2.rb +0 -13
  56. data/lib/code/node/base_8.rb +0 -13
  57. data/lib/code/node/boolean.rb +0 -22
  58. data/lib/code/node/call.rb +0 -47
  59. data/lib/code/node/call_argument.rb +0 -21
  60. data/lib/code/node/chained_call.rb +0 -23
  61. data/lib/code/node/code.rb +0 -20
  62. data/lib/code/node/decimal.rb +0 -26
  63. data/lib/code/node/dictionnary.rb +0 -33
  64. data/lib/code/node/equal.rb +0 -34
  65. data/lib/code/node/function.rb +0 -20
  66. data/lib/code/node/function_parameter.rb +0 -31
  67. data/lib/code/node/if.rb +0 -59
  68. data/lib/code/node/if_modifier.rb +0 -47
  69. data/lib/code/node/list.rb +0 -16
  70. data/lib/code/node/negation.rb +0 -15
  71. data/lib/code/node/not.rb +0 -15
  72. data/lib/code/node/nothing.rb +0 -12
  73. data/lib/code/node/number.rb +0 -25
  74. data/lib/code/node/operation.rb +0 -38
  75. data/lib/code/node/power.rb +0 -20
  76. data/lib/code/node/rescue.rb +0 -17
  77. data/lib/code/node/splat.rb +0 -15
  78. data/lib/code/node/statement.rb +0 -59
  79. data/lib/code/node/string.rb +0 -53
  80. data/lib/code/node/ternary.rb +0 -24
  81. data/lib/code/node/unary_minus.rb +0 -15
  82. data/lib/code/node/while.rb +0 -35
  83. data/lib/code/node.rb +0 -13
  84. data/lib/code/object/argument.rb +0 -32
  85. data/lib/code/object/boolean.rb +0 -27
  86. data/lib/code/object/decimal.rb +0 -162
  87. data/lib/code/object/dictionnary.rb +0 -96
  88. data/lib/code/object/function.rb +0 -64
  89. data/lib/code/object/global.rb +0 -42
  90. data/lib/code/object/integer.rb +0 -221
  91. data/lib/code/object/list.rb +0 -207
  92. data/lib/code/object/nothing.rb +0 -23
  93. data/lib/code/object/number.rb +0 -6
  94. data/lib/code/object/range.rb +0 -146
  95. data/lib/code/object/ruby_function.rb +0 -31
  96. data/lib/code/object/string.rb +0 -102
  97. data/lib/code/object.rb +0 -197
  98. data/lib/code/parser/addition.rb +0 -21
  99. data/lib/code/parser/and_operator.rb +0 -17
  100. data/lib/code/parser/bitwise_and.rb +0 -17
  101. data/lib/code/parser/bitwise_or.rb +0 -21
  102. data/lib/code/parser/boolean.rb +0 -17
  103. data/lib/code/parser/call.rb +0 -122
  104. data/lib/code/parser/chained_call.rb +0 -47
  105. data/lib/code/parser/class.rb +0 -45
  106. data/lib/code/parser/code.rb +0 -25
  107. data/lib/code/parser/dictionnary.rb +0 -67
  108. data/lib/code/parser/equal.rb +0 -94
  109. data/lib/code/parser/equality.rb +0 -35
  110. data/lib/code/parser/equality_lower.rb +0 -9
  111. data/lib/code/parser/function.rb +0 -85
  112. data/lib/code/parser/greater.rb +0 -25
  113. data/lib/code/parser/group.rb +0 -22
  114. data/lib/code/parser/if.rb +0 -63
  115. data/lib/code/parser/if_modifier.rb +0 -55
  116. data/lib/code/parser/list.rb +0 -42
  117. data/lib/code/parser/multiplication.rb +0 -25
  118. data/lib/code/parser/name.rb +0 -107
  119. data/lib/code/parser/negation.rb +0 -30
  120. data/lib/code/parser/not_keyword.rb +0 -23
  121. data/lib/code/parser/nothing.rb +0 -22
  122. data/lib/code/parser/number.rb +0 -154
  123. data/lib/code/parser/operation.rb +0 -35
  124. data/lib/code/parser/or_keyword.rb +0 -21
  125. data/lib/code/parser/or_operator.rb +0 -17
  126. data/lib/code/parser/power.rb +0 -43
  127. data/lib/code/parser/range.rb +0 -17
  128. data/lib/code/parser/rescue.rb +0 -39
  129. data/lib/code/parser/shift.rb +0 -21
  130. data/lib/code/parser/splat.rb +0 -31
  131. data/lib/code/parser/statement.rb +0 -9
  132. data/lib/code/parser/string.rb +0 -78
  133. data/lib/code/parser/ternary.rb +0 -46
  134. data/lib/code/parser/unary_minus.rb +0 -31
  135. data/lib/code/parser/while.rb +0 -36
  136. data/lib/code/parser/whitespace.rb +0 -49
  137. data/lib/code/parser.rb +0 -19
  138. data/lib/code/ruby.rb +0 -174
  139. data/lib/code-ruby.rb +0 -10
  140. data/lib/code.rb +0 -47
  141. data/lib/template/node/code_part.rb +0 -13
  142. data/lib/template/node/part.rb +0 -19
  143. data/lib/template/node/template.rb +0 -15
  144. data/lib/template/node/text_part.rb +0 -13
  145. data/lib/template/node.rb +0 -4
  146. data/lib/template/parser/template.rb +0 -39
  147. data/lib/template/parser.rb +0 -19
  148. data/lib/template/version.rb +0 -3
  149. data/lib/template-ruby.rb +0 -10
  150. data/lib/template.rb +0 -50
  151. data/spec/code/addition_spec.rb +0 -13
  152. data/spec/code/and_operator_spec.rb +0 -13
  153. data/spec/code/bitwise_and_spec.rb +0 -13
  154. data/spec/code/bitwise_or_spec.rb +0 -13
  155. data/spec/code/boolean_spec.rb +0 -13
  156. data/spec/code/call_spec.rb +0 -21
  157. data/spec/code/chained_call_spec.rb +0 -16
  158. data/spec/code/code_spec.rb +0 -11
  159. data/spec/code/dictionnary_spec.rb +0 -17
  160. data/spec/code/equal_spec.rb +0 -26
  161. data/spec/code/equality_spec.rb +0 -13
  162. data/spec/code/function_spec.rb +0 -18
  163. data/spec/code/greater_spec.rb +0 -18
  164. data/spec/code/group_spec.rb +0 -12
  165. data/spec/code/if_modifier_spec.rb +0 -20
  166. data/spec/code/if_spec.rb +0 -25
  167. data/spec/code/list_spec.rb +0 -19
  168. data/spec/code/multiplication_spec.rb +0 -18
  169. data/spec/code/negation_spec.rb +0 -20
  170. data/spec/code/not_keyword_spec.rb +0 -13
  171. data/spec/code/nothing_spec.rb +0 -17
  172. data/spec/code/number_spec.rb +0 -22
  173. data/spec/code/or_keyword_spec.rb +0 -17
  174. data/spec/code/or_operator_spec.rb +0 -16
  175. data/spec/code/parser/boolean_spec.rb +0 -16
  176. data/spec/code/parser/call_spec.rb +0 -26
  177. data/spec/code/parser/chained_call.rb +0 -17
  178. data/spec/code/parser/dictionnary_spec.rb +0 -18
  179. data/spec/code/parser/function_spec.rb +0 -16
  180. data/spec/code/parser/group_spec.rb +0 -18
  181. data/spec/code/parser/list_spec.rb +0 -18
  182. data/spec/code/parser/number_spec.rb +0 -12
  183. data/spec/code/parser/string_spec.rb +0 -21
  184. data/spec/code/parser_spec.rb +0 -23
  185. data/spec/code/power_spec.rb +0 -13
  186. data/spec/code/range_spec.rb +0 -16
  187. data/spec/code/rescue_spec.rb +0 -13
  188. data/spec/code/shift_spec.rb +0 -13
  189. data/spec/code/splat_spec.rb +0 -13
  190. data/spec/code/string_spec.rb +0 -27
  191. data/spec/code/ternary_spec.rb +0 -18
  192. data/spec/code/unary_minus_spec.rb +0 -13
  193. data/spec/code/while_spec.rb +0 -18
  194. data/template-ruby.gemspec +0 -19
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0d1f823779fa3988a81d38592f61fdf2c741169cd4d676a6865de6e39c9cb063
4
- data.tar.gz: d95cdb157fb3da9c59b18fc4f84808fe2368390a132e2be8b9e2bc6a20758503
3
+ metadata.gz: bdf5e247df3ee0c287a560265c60107d161eb4b7cb71610f6f50c15c81c2e3aa
4
+ data.tar.gz: acfe4eea02eb399831fd378adb0bd69100efbdecaeead3c99a2faaec11e552cb
5
5
  SHA512:
6
- metadata.gz: 116fdcc420c21f19456a52a7d5a1ddf4d5c51a8c83e43522c03eaf7855c48d333d7077014bac0bc30afb6a49521d057183f449acaa867597ac67bba1d89c93a0
7
- data.tar.gz: 63bce33e3bbe8db8baf4ea842467f98aafc0470277d15665253cca727d29fcfc1e00b79f4f00b35c734937b15dbb17dbc0144b80ae526dbc5075d1b019249047
6
+ metadata.gz: 318d1dd9888a5aee6aec7fef5410b9092f169e6e12e1d4a0608c6a2e36b2ae4b3bfc6412052a8e331a9b1260bf4387ccfa6340e1ea74f7511da049ff222d4050
7
+ data.tar.gz: 5c0c443194c047a08c461f9b713fcf131ebd12ce479b81d344415202694106a7db00e19547c37319c6d69d4a0bc78a768b0a8aaf1d29e1b9a7ae1369d87c520e
data/Gemfile CHANGED
@@ -1,8 +1,5 @@
1
1
  source "https://rubygems.org"
2
2
 
3
- gemspec name: "template-ruby"
4
- gemspec name: "code-ruby"
3
+ gemspec
5
4
 
6
5
  gem "rspec"
7
- gem "syntax_tree", github: "dorianmariefr/syntax_tree"
8
- gem "ruby-prof"
@@ -1,8 +1,8 @@
1
- require_relative "lib/template/version"
1
+ require_relative "lib/language/version"
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = "language-ruby"
5
- s.version = ::Template::Version
5
+ s.version = ::Language::Version
6
6
  s.summary = "A Parsing Expression Grammar (PEG) for making parsers"
7
7
  s.description = s.summary
8
8
  s.authors = ["Dorian Marié"]
@@ -10,7 +10,7 @@ Gem::Specification.new do |s|
10
10
  s.files = `git ls-files`.split($/)
11
11
  s.test_files = s.files.grep(%r{^(test|spec|features)/})
12
12
  s.require_paths = ["lib"]
13
- s.homepage = "https://github.com/dorianmariefr/template-ruby"
13
+ s.homepage = "https://github.com/dorianmariefr/language-ruby"
14
14
  s.license = "MIT"
15
15
 
16
16
  s.add_dependency "zeitwerk", "~> 2"
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Language
4
+ class Atom
5
+ class Any < Atom
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Language
4
+ class Atom
5
+ class Repeat < Atom
6
+ def initialize(parent:)
7
+ @parent = parent
8
+ end
9
+
10
+ private
11
+
12
+ attr_reader :parent
13
+ end
14
+ end
15
+ end
data/lib/language/atom.rb CHANGED
@@ -1,19 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Language
2
4
  class Atom
3
- class Rule < Atom
4
- def initialize(name:)
5
- @name = name
6
- end
7
-
8
- def parse(parser)
9
- parser.find_rule!(@name).parse(parser)
10
- end
11
-
12
- def to_s
13
- "rule(#{@name.inspect})"
14
- end
15
- end
16
-
17
5
  class Any < Atom
18
6
  def parse(parser)
19
7
  parser.consume(1)
@@ -41,36 +29,34 @@ class Language
41
29
  end
42
30
 
43
31
  class Repeat < Atom
44
- def initialize(parent: nil, min: 0, max: nil)
32
+ def initialize(parent: nil, minimum: 0, maximum: nil)
45
33
  @parent = parent
46
- @min = min
47
- @max = max
34
+ @minimum = minimum
35
+ @maximum = maximum
48
36
  end
49
37
 
50
38
  def parse(parser)
51
39
  return unless @parent
52
40
 
53
- if @max.nil?
54
- @min.times { match(parser) }
55
-
41
+ @minimum.times { match(parser) }
42
+ if @maximum.nil?
56
43
  begin
57
44
  loop { match(parser) }
58
45
  rescue Parser::Interuption
59
46
  end
60
47
  else
61
- @min.times { match(parser) }
62
-
63
48
  begin
64
- (@max - @min).times { match(parser) }
49
+ (@maximum - @minimum).times { match(parser) }
65
50
  rescue Parser::Interuption
66
51
  end
67
52
  end
68
53
  end
69
54
 
70
55
  def to_s
71
- min = @min.zero? ? "" : @min.to_s
72
- max = @max.nil? ? "" : ", #{@max}"
73
- parenthesis = min.empty? && max.empty? ? "" : "(#{min}#{max})"
56
+ minimum = @minimum.zero? ? "" : @minimum.to_s
57
+ maximum = @maximum.nil? ? "" : ", #{@maximum}"
58
+ parenthesis =
59
+ minimum.empty? && maximum.empty? ? "" : "(#{minimum}#{maximum})"
74
60
 
75
61
  @parent ? "(#{@parent}).repeat#{parenthesis}" : "repeat#{parenthesis}"
76
62
  end
@@ -100,11 +86,11 @@ class Language
100
86
  end
101
87
 
102
88
  def parse(parser)
103
- if parser.next?(@string)
104
- parser.consume(@string.size)
105
- else
89
+ unless parser.next?(@string)
106
90
  raise Parser::Str::NotFound.new(parser, @string)
107
91
  end
92
+
93
+ parser.consume(@string.size)
108
94
  end
109
95
 
110
96
  def to_s
@@ -125,7 +111,7 @@ class Language
125
111
  cursor: parser.cursor,
126
112
  buffer: parser.buffer
127
113
  )
128
- @parent.parse(clone) if @parent
114
+ @parent&.parse(clone)
129
115
  rescue Parser::Interuption
130
116
  else
131
117
  raise Parser::Interuption.new(parser, self)
@@ -149,7 +135,7 @@ class Language
149
135
  cursor: parser.cursor,
150
136
  buffer: parser.buffer
151
137
  )
152
- @parent.parse(clone) if @parent
138
+ @parent&.parse(clone)
153
139
  parser.cursor = clone.cursor
154
140
  end
155
141
 
@@ -175,6 +161,7 @@ class Language
175
161
  @parent.parse(clone)
176
162
  rescue Parser::Interuption
177
163
  else
164
+ parser.buffer = clone.buffer
178
165
  parser.cursor = clone.cursor
179
166
  parser.output = clone.output
180
167
  end
@@ -284,7 +271,7 @@ class Language
284
271
  end
285
272
 
286
273
  def str(string)
287
- Str.new(string: string)
274
+ Str.new(string:)
288
275
  end
289
276
 
290
277
  def absent
@@ -299,12 +286,12 @@ class Language
299
286
  Maybe.new(parent: self)
300
287
  end
301
288
 
302
- def repeat(min = 0, max = nil)
303
- Repeat.new(parent: self, min: min, max: max)
289
+ def repeat(minimum = 0, maximum = nil)
290
+ Repeat.new(parent: self, minimum:, maximum:)
304
291
  end
305
292
 
306
293
  def aka(name)
307
- Aka.new(parent: self, name: name)
294
+ Aka.new(parent: self, name:)
308
295
  end
309
296
 
310
297
  def |(other)
@@ -320,15 +307,11 @@ class Language
320
307
  end
321
308
 
322
309
  def then(&block)
323
- Then.new(parent: self, block: block)
324
- end
325
-
326
- def rule(name)
327
- Rule.new(name: name)
310
+ Then.new(parent: self, block:)
328
311
  end
329
312
 
330
- def parse(parser)
331
- raise NotImplementedError.new("#{self.class}#parse")
313
+ def parse(_parser)
314
+ raise NotImplementedError, "#{self.class}#parse"
332
315
  end
333
316
 
334
317
  def to_s
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Language
2
4
  class Output
3
5
  attr_reader :raw
@@ -10,7 +12,7 @@ class Language
10
12
  if raw.is_a?(Array)
11
13
  new(raw.map { |element| from_raw(element) })
12
14
  elsif raw.is_a?(Hash)
13
- new(raw.map { |key, value| [key, from_raw(value)] }.to_h)
15
+ new(raw.transform_values { |value| from_raw(value) })
14
16
  else
15
17
  new(raw)
16
18
  end
@@ -20,7 +22,7 @@ class Language
20
22
  if raw.is_a?(Array)
21
23
  raw.map(&:to_raw)
22
24
  elsif raw.is_a?(Hash)
23
- raw.map { |key, value| [key, value.to_raw] }.to_h
25
+ raw.transform_values(&:to_raw)
24
26
  else
25
27
  raw
26
28
  end
@@ -35,7 +37,7 @@ class Language
35
37
  end
36
38
 
37
39
  def ==(other)
38
- other.is_a?(Output) ? raw == other.raw : raw == other
40
+ raw == (other.is_a?(Output) ? other.raw : other)
39
41
  end
40
42
 
41
43
  def to_s
@@ -66,7 +68,7 @@ class Language
66
68
  when String
67
69
  case other.raw
68
70
  when String
69
- @raw = @raw + other.raw
71
+ @raw += other.raw
70
72
  when Array
71
73
  @raw = other.raw
72
74
  when Hash
@@ -75,18 +77,18 @@ class Language
75
77
  when Array
76
78
  case other.raw
77
79
  when String
78
- return
80
+ nil
79
81
  when Array
80
- @raw = @raw + other.raw
82
+ @raw += other.raw
81
83
  when Hash
82
84
  @raw << other
83
85
  end
84
86
  when Hash
85
87
  case other.raw
86
88
  when String
87
- return
89
+ nil
88
90
  when Array
89
- return
91
+ nil
90
92
  when Hash
91
93
  @raw.merge!(other.raw)
92
94
  end
@@ -107,7 +109,7 @@ class Language
107
109
  when String
108
110
  case other.raw
109
111
  when String
110
- @raw = @raw + other.raw
112
+ @raw += other.raw
111
113
  when Array
112
114
  @raw = [other]
113
115
  when Hash
@@ -118,9 +120,9 @@ class Language
118
120
  when Hash
119
121
  case other.raw
120
122
  when String
121
- return
123
+ nil
122
124
  when Array
123
- return
125
+ nil
124
126
  when Hash
125
127
  @raw.merge!(other.raw)
126
128
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Language
2
4
  class Parser
3
5
  class Absent
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Language
2
4
  class Parser
3
5
  class Absent
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Language
2
4
  class Parser
3
5
  class EndOfInput < Interuption
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Language
2
4
  class Parser
3
5
  class Interuption < StandardError
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Language
2
4
  class Parser
3
5
  class NotEndOfInput < Interuption
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Language
2
4
  class Parser
3
5
  class Str
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Language
2
4
  class Parser
3
5
  class Str
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Language
2
4
  class Parser
3
5
  attr_accessor :input, :buffer, :output, :root, :cursor
@@ -13,20 +15,18 @@ class Language
13
15
  def parse(check_end_of_input: true)
14
16
  @root.parse(self)
15
17
 
16
- if @cursor == @input.size || !check_end_of_input
17
- @output.present? ? @output : Output.new(@buffer)
18
- else
19
- raise NotEndOfInput.new(self)
18
+ unless @cursor == @input.size || !check_end_of_input
19
+ raise NotEndOfInput, self
20
20
  end
21
+
22
+ @output.present? ? @output : Output.new(@buffer)
21
23
  end
22
24
 
23
25
  def consume(n)
24
- if @cursor + n <= @input.size
25
- @buffer += @input[@cursor, n]
26
- @cursor += n
27
- else
28
- raise EndOfInput.new(self)
29
- end
26
+ raise EndOfInput, self unless @cursor + n <= @input.size
27
+
28
+ @buffer += @input[@cursor, n]
29
+ @cursor += n
30
30
  end
31
31
 
32
32
  def aka(name)
@@ -0,0 +1,3 @@
1
+ require_relative "../language"
2
+
3
+ Language::Version = Gem::Version.new("0.6.0")
data/lib/language-ruby.rb CHANGED
@@ -1,10 +1,5 @@
1
- require "bigdecimal"
2
- require "stringio"
3
- require "timeout"
4
1
  require "zeitwerk"
5
2
 
6
3
  loader = Zeitwerk::Loader.for_gem(warn_on_extra_files: false)
7
- loader.ignore("#{__dir__}/template-ruby.rb")
8
- loader.ignore("#{__dir__}/code-ruby.rb")
9
4
  loader.ignore("#{__dir__}/language-ruby.rb")
10
5
  loader.setup
data/lib/language.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Language
2
4
  def self.parse(input)
3
5
  new.parse(input)
@@ -15,12 +17,12 @@ class Language
15
17
  Atom::Maybe.new(parent: new)
16
18
  end
17
19
 
18
- def self.repeat(min = 0, max = nil)
19
- Atom::Repeat.new(parent: new, min: min, max: max)
20
+ def self.repeat(minimum = 0, maximum = nil)
21
+ Atom::Repeat.new(parent: new, minimum:, maximum:)
20
22
  end
21
23
 
22
24
  def self.aka(name)
23
- Atom::Aka.new(parent: new, name: name)
25
+ Atom::Aka.new(parent: new, name:)
24
26
  end
25
27
 
26
28
  def self.|(other)
@@ -36,7 +38,7 @@ class Language
36
38
  end
37
39
 
38
40
  def self.then(&block)
39
- Atom::Then.new(parent: new, block: block)
41
+ Atom::Then.new(parent: new, block:)
40
42
  end
41
43
 
42
44
  def parse(input_or_parser)
@@ -44,7 +46,7 @@ class Language
44
46
  parser = input_or_parser
45
47
  clone =
46
48
  Parser.new(
47
- root: root,
49
+ root:,
48
50
  input: parser.input,
49
51
  cursor: parser.cursor,
50
52
  buffer: parser.buffer,
@@ -58,12 +60,12 @@ class Language
58
60
  parser.output = clone.output
59
61
  else
60
62
  input = input_or_parser
61
- Parser.new(root: root, input: input).parse
63
+ Parser.new(root:, input:).parse
62
64
  end
63
65
  end
64
66
 
65
67
  def str(string)
66
- Atom::Str.new(string: string)
68
+ Atom::Str.new(string:)
67
69
  end
68
70
 
69
71
  def any
data/spec/spec_helper.rb CHANGED
@@ -1,6 +1 @@
1
- require_relative "../lib/template-ruby"
2
- require "json"
3
-
4
- RSpec.configure do |c|
5
- c.example_status_persistence_file_path = "tmp/examples.txt"
6
- end
1
+ require_relative "../lib/language-ruby"