language-ruby 0.5.6 → 0.6.0

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.
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 -29
  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: 1ffefd2b6b98738fdb6cca491d3e66d49954089665ee0c549c9fbaa72c44c6de
4
- data.tar.gz: 3bebdecdd1017fb28756407d7c759739a92c7367d2da1c0184b2c992412b065f
3
+ metadata.gz: bdf5e247df3ee0c287a560265c60107d161eb4b7cb71610f6f50c15c81c2e3aa
4
+ data.tar.gz: acfe4eea02eb399831fd378adb0bd69100efbdecaeead3c99a2faaec11e552cb
5
5
  SHA512:
6
- metadata.gz: 838a0152426d4e052b4a2349dbafded5dbb38f003a1854920a99180a8b215234e2b460d40623d9c02a929ffc3b61b8d42363fa4db81eb418cc073ac26ddfb83e
7
- data.tar.gz: 28ed842cf8c9cbfbe624b2f4bfadaa256cbf3472210949d023a7e915a73e1ace1447d67d1c117ef403b94f5c0d76b24569105dc27753ac4777c79ed40d7a863a
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"