kpeg 1.0.0 → 1.3.1

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.
@@ -112,7 +112,7 @@ module KPeg
112
112
  # Let default ruby string handling figure it out
113
113
  lang = ""
114
114
  end
115
- code << indentify("_tmp = scan(/\\A#{op.regexp}/#{lang})\n", indent)
115
+ code << indentify("_tmp = scan(/\\G#{op.regexp}/#{lang})\n", indent)
116
116
  when CharRange
117
117
  ss = save()
118
118
  if op.start.bytesize == 1 and op.fin.bytesize == 1
@@ -32,6 +32,7 @@ module KPeg
32
32
  @result = nil
33
33
  @failed_rule = nil
34
34
  @failing_rule_offset = -1
35
+ @line_offsets = nil
35
36
 
36
37
  setup_foreign_grammar
37
38
  end
@@ -150,9 +151,8 @@ module KPeg
150
151
  end
151
152
 
152
153
  def scan(reg)
153
- if m = reg.match(@string[@pos..-1])
154
- width = m.end(0)
155
- @pos += width
154
+ if m = reg.match(@string, @pos)
155
+ @pos = m.end(0)
156
156
  return true
157
157
  end
158
158
 
@@ -265,8 +265,6 @@ module KPeg
265
265
  else
266
266
  return ans
267
267
  end
268
-
269
- return ans
270
268
  end
271
269
  end
272
270
 
@@ -299,8 +297,6 @@ module KPeg
299
297
  else
300
298
  return ans
301
299
  end
302
-
303
- return ans
304
300
  end
305
301
  end
306
302
 
@@ -77,7 +77,7 @@ sgl_escape_quote = "\\'" { "'" }
77
77
  | "[" - range_num:e - "]" { [e.to_i, e.to_i] }
78
78
 
79
79
  curly_block = curly
80
- curly = "{" < (/[^{}"']+/ | string | curly)* > "}" { @g.action(text) }
80
+ curly = "{" < (spaces | /[^{}"']+/ | string | curly)* > "}" { @g.action(text) }
81
81
  nested_paren = "(" (/[^()"']+/ | string | nested_paren)* ")"
82
82
 
83
83
  value = value:v ":" var:n { @g.t(v,n) }
@@ -10,6 +10,7 @@ class KPeg::FormatParser
10
10
  @result = nil
11
11
  @failed_rule = nil
12
12
  @failing_rule_offset = -1
13
+ @line_offsets = nil
13
14
 
14
15
  setup_foreign_grammar
15
16
  end
@@ -26,17 +27,32 @@ class KPeg::FormatParser
26
27
  target + 1
27
28
  end
28
29
 
29
- def current_line(target=pos)
30
- cur_offset = 0
31
- cur_line = 0
30
+ if [].respond_to? :bsearch_index
31
+ def current_line(target=pos)
32
+ unless @line_offsets
33
+ @line_offsets = []
34
+ total = 0
35
+ string.each_line do |line|
36
+ total += line.size
37
+ @line_offsets << total
38
+ end
39
+ end
32
40
 
33
- string.each_line do |line|
34
- cur_line += 1
35
- cur_offset += line.size
36
- return cur_line if cur_offset >= target
41
+ @line_offsets.bsearch_index {|x| x >= target } + 1 || -1
37
42
  end
43
+ else
44
+ def current_line(target=pos)
45
+ cur_offset = 0
46
+ cur_line = 0
47
+
48
+ string.each_line do |line|
49
+ cur_line += 1
50
+ cur_offset += line.size
51
+ return cur_line if cur_offset >= target
52
+ end
38
53
 
39
- -1
54
+ -1
55
+ end
40
56
  end
41
57
 
42
58
  def lines
@@ -155,9 +171,8 @@ class KPeg::FormatParser
155
171
  end
156
172
 
157
173
  def scan(reg)
158
- if m = reg.match(@string[@pos..-1])
159
- width = m.end(0)
160
- @pos += width
174
+ if m = reg.match(@string, @pos)
175
+ @pos = m.end(0)
161
176
  return true
162
177
  end
163
178
 
@@ -270,8 +285,6 @@ class KPeg::FormatParser
270
285
  else
271
286
  return ans
272
287
  end
273
-
274
- return ans
275
288
  end
276
289
  end
277
290
 
@@ -304,8 +317,6 @@ class KPeg::FormatParser
304
317
  else
305
318
  return ans
306
319
  end
307
-
308
- return ans
309
320
  end
310
321
  end
311
322
 
@@ -526,7 +537,7 @@ class KPeg::FormatParser
526
537
  _tmp = match_string("-")
527
538
  break if _tmp
528
539
  self.pos = _save1
529
- _tmp = scan(/\A(?i-mx:[a-z][\w-]*)/)
540
+ _tmp = scan(/\G(?i-mx:[a-z][\w-]*)/)
530
541
  break if _tmp
531
542
  self.pos = _save1
532
543
  break
@@ -557,7 +568,7 @@ class KPeg::FormatParser
557
568
  _save = self.pos
558
569
  while true # sequence
559
570
  _text_start = self.pos
560
- _tmp = scan(/\A(?i-mx:[a-z_]\w*)/)
571
+ _tmp = scan(/\G(?i-mx:[a-z_]\w*)/)
561
572
  if _tmp
562
573
  text = get_text(_text_start)
563
574
  end
@@ -821,7 +832,7 @@ class KPeg::FormatParser
821
832
  _save1 = self.pos
822
833
  while true # sequence
823
834
  _text_start = self.pos
824
- _tmp = scan(/\A(?-mix:[0-7]{1,3})/)
835
+ _tmp = scan(/\G(?-mix:[0-7]{1,3})/)
825
836
  if _tmp
826
837
  text = get_text(_text_start)
827
838
  end
@@ -848,7 +859,7 @@ class KPeg::FormatParser
848
859
  break
849
860
  end
850
861
  _text_start = self.pos
851
- _tmp = scan(/\A(?i-mx:[a-f\d]{2})/)
862
+ _tmp = scan(/\G(?i-mx:[a-f\d]{2})/)
852
863
  if _tmp
853
864
  text = get_text(_text_start)
854
865
  end
@@ -879,7 +890,7 @@ class KPeg::FormatParser
879
890
  _save = self.pos
880
891
  while true # sequence
881
892
  _text_start = self.pos
882
- _tmp = scan(/\A(?-mix:[^\\"]+)/)
893
+ _tmp = scan(/\G(?-mix:[^\\"]+)/)
883
894
  if _tmp
884
895
  text = get_text(_text_start)
885
896
  end
@@ -1017,7 +1028,7 @@ class KPeg::FormatParser
1017
1028
  _save = self.pos
1018
1029
  while true # sequence
1019
1030
  _text_start = self.pos
1020
- _tmp = scan(/\A(?-mix:[^'])/)
1031
+ _tmp = scan(/\G(?-mix:[^'])/)
1021
1032
  if _tmp
1022
1033
  text = get_text(_text_start)
1023
1034
  end
@@ -1142,7 +1153,7 @@ class KPeg::FormatParser
1142
1153
  _tmp = match_string("\\/")
1143
1154
  break if _tmp
1144
1155
  self.pos = _save2
1145
- _tmp = scan(/\A(?-mix:[^\/])/)
1156
+ _tmp = scan(/\G(?-mix:[^\/])/)
1146
1157
  break if _tmp
1147
1158
  self.pos = _save2
1148
1159
  break
@@ -1156,7 +1167,7 @@ class KPeg::FormatParser
1156
1167
  _tmp = match_string("\\/")
1157
1168
  break if _tmp
1158
1169
  self.pos = _save3
1159
- _tmp = scan(/\A(?-mix:[^\/])/)
1170
+ _tmp = scan(/\G(?-mix:[^\/])/)
1160
1171
  break if _tmp
1161
1172
  self.pos = _save3
1162
1173
  break
@@ -1269,7 +1280,7 @@ class KPeg::FormatParser
1269
1280
  _save = self.pos
1270
1281
  while true # sequence
1271
1282
  _text_start = self.pos
1272
- _tmp = scan(/\A(?i-mx:[a-z\d])/)
1283
+ _tmp = scan(/\G(?i-mx:[a-z\d])/)
1273
1284
  if _tmp
1274
1285
  text = get_text(_text_start)
1275
1286
  end
@@ -1339,7 +1350,7 @@ class KPeg::FormatParser
1339
1350
  _save = self.pos
1340
1351
  while true # sequence
1341
1352
  _text_start = self.pos
1342
- _tmp = scan(/\A(?-mix:[1-9]\d*)/)
1353
+ _tmp = scan(/\G(?-mix:[1-9]\d*)/)
1343
1354
  if _tmp
1344
1355
  text = get_text(_text_start)
1345
1356
  end
@@ -1514,7 +1525,7 @@ class KPeg::FormatParser
1514
1525
  return _tmp
1515
1526
  end
1516
1527
 
1517
- # curly = "{" < (/[^{}"']+/ | string | curly)* > "}" { @g.action(text) }
1528
+ # curly = "{" < (spaces | /[^{}"']+/ | string | curly)* > "}" { @g.action(text) }
1518
1529
  def _curly
1519
1530
 
1520
1531
  _save = self.pos
@@ -1529,7 +1540,10 @@ class KPeg::FormatParser
1529
1540
 
1530
1541
  _save2 = self.pos
1531
1542
  while true # choice
1532
- _tmp = scan(/\A(?-mix:[^{}"']+)/)
1543
+ _tmp = apply(:_spaces)
1544
+ break if _tmp
1545
+ self.pos = _save2
1546
+ _tmp = scan(/\G(?-mix:[^{}"']+)/)
1533
1547
  break if _tmp
1534
1548
  self.pos = _save2
1535
1549
  _tmp = apply(:_string)
@@ -1582,7 +1596,7 @@ class KPeg::FormatParser
1582
1596
 
1583
1597
  _save2 = self.pos
1584
1598
  while true # choice
1585
- _tmp = scan(/\A(?-mix:[^()"']+)/)
1599
+ _tmp = scan(/\G(?-mix:[^()"']+)/)
1586
1600
  break if _tmp
1587
1601
  self.pos = _save2
1588
1602
  _tmp = apply(:_string)
@@ -2619,7 +2633,7 @@ class KPeg::FormatParser
2619
2633
  break
2620
2634
  end
2621
2635
  _text_start = self.pos
2622
- _tmp = scan(/\A(?-mix:[:\w]+)/)
2636
+ _tmp = scan(/\G(?-mix:[:\w]+)/)
2623
2637
  if _tmp
2624
2638
  text = get_text(_text_start)
2625
2639
  end
@@ -2917,7 +2931,7 @@ class KPeg::FormatParser
2917
2931
  _save = self.pos
2918
2932
  while true # sequence
2919
2933
  _text_start = self.pos
2920
- _tmp = scan(/\A(?-mix:[A-Z]\w*)/)
2934
+ _tmp = scan(/\G(?-mix:[A-Z]\w*)/)
2921
2935
  if _tmp
2922
2936
  text = get_text(_text_start)
2923
2937
  end
@@ -2943,7 +2957,7 @@ class KPeg::FormatParser
2943
2957
  _save = self.pos
2944
2958
  while true # sequence
2945
2959
  _text_start = self.pos
2946
- _tmp = scan(/\A(?i-mx:[a-z_]\w*)/)
2960
+ _tmp = scan(/\G(?i-mx:[a-z_]\w*)/)
2947
2961
  if _tmp
2948
2962
  text = get_text(_text_start)
2949
2963
  end
@@ -3160,7 +3174,7 @@ class KPeg::FormatParser
3160
3174
  Rules[:_range_elem] = rule_info("range_elem", "< (range_num | kleene) > { text }")
3161
3175
  Rules[:_mult_range] = rule_info("mult_range", "(\"[\" - range_elem:l - \",\" - range_elem:r - \"]\" { [l == \"*\" ? nil : l.to_i, r == \"*\" ? nil : r.to_i] } | \"[\" - range_num:e - \"]\" { [e.to_i, e.to_i] })")
3162
3176
  Rules[:_curly_block] = rule_info("curly_block", "curly")
3163
- Rules[:_curly] = rule_info("curly", "\"{\" < (/[^{}\"']+/ | string | curly)* > \"}\" { @g.action(text) }")
3177
+ Rules[:_curly] = rule_info("curly", "\"{\" < (spaces | /[^{}\"']+/ | string | curly)* > \"}\" { @g.action(text) }")
3164
3178
  Rules[:_nested_paren] = rule_info("nested_paren", "\"(\" (/[^()\"']+/ | string | nested_paren)* \")\"")
3165
3179
  Rules[:_value] = rule_info("value", "(value:v \":\" var:n { @g.t(v,n) } | value:v \"?\" { @g.maybe(v) } | value:v \"+\" { @g.many(v) } | value:v \"*\" { @g.kleene(v) } | value:v mult_range:r { @g.multiple(v, *r) } | \"&\" value:v { @g.andp(v) } | \"!\" value:v { @g.notp(v) } | \"(\" - expression:o - \")\" { o } | \"@<\" - expression:o - \">\" { @g.bounds(o) } | \"<\" - expression:o - \">\" { @g.collect(o) } | curly_block | \"~\" method:m < nested_paren? > { @g.action(\"\#{m}\#{text}\") } | \".\" { @g.dot } | \"@\" var:name < nested_paren? > !(- \"=\") { @g.invoke(name, text.empty? ? nil : text) } | \"^\" var:name < nested_paren? > { @g.foreign_invoke(\"parent\", name, text) } | \"%\" var:gram \".\" var:name < nested_paren? > { @g.foreign_invoke(gram, name, text) } | var:name < nested_paren? > !(- \"=\") { @g.ref(name, nil, text.empty? ? nil : text) } | char_range | regexp | string)")
3166
3180
  Rules[:_spaces] = rule_info("spaces", "(space | comment)+")
data/lib/kpeg/position.rb CHANGED
@@ -10,17 +10,32 @@ module KPeg
10
10
  target + 1
11
11
  end
12
12
 
13
- def current_line(target=pos)
14
- cur_offset = 0
15
- cur_line = 0
16
-
17
- string.each_line do |line|
18
- cur_line += 1
19
- cur_offset += line.size
20
- return cur_line if cur_offset >= target
13
+ if [].respond_to? :bsearch_index
14
+ def current_line(target=pos)
15
+ unless @line_offsets
16
+ @line_offsets = []
17
+ total = 0
18
+ string.each_line do |line|
19
+ total += line.size
20
+ @line_offsets << total
21
+ end
22
+ end
23
+
24
+ @line_offsets.bsearch_index {|x| x >= target } + 1 || -1
25
+ end
26
+ else
27
+ def current_line(target=pos)
28
+ cur_offset = 0
29
+ cur_line = 0
30
+
31
+ string.each_line do |line|
32
+ cur_line += 1
33
+ cur_offset += line.size
34
+ return cur_line if cur_offset >= target
35
+ end
36
+
37
+ -1
21
38
  end
22
-
23
- -1
24
39
  end
25
40
 
26
41
  def lines
@@ -18,6 +18,7 @@ class KPeg::StringEscape
18
18
  @result = nil
19
19
  @failed_rule = nil
20
20
  @failing_rule_offset = -1
21
+ @line_offsets = nil
21
22
 
22
23
  setup_foreign_grammar
23
24
  end
@@ -34,17 +35,32 @@ class KPeg::StringEscape
34
35
  target + 1
35
36
  end
36
37
 
37
- def current_line(target=pos)
38
- cur_offset = 0
39
- cur_line = 0
38
+ if [].respond_to? :bsearch_index
39
+ def current_line(target=pos)
40
+ unless @line_offsets
41
+ @line_offsets = []
42
+ total = 0
43
+ string.each_line do |line|
44
+ total += line.size
45
+ @line_offsets << total
46
+ end
47
+ end
40
48
 
41
- string.each_line do |line|
42
- cur_line += 1
43
- cur_offset += line.size
44
- return cur_line if cur_offset >= target
49
+ @line_offsets.bsearch_index {|x| x >= target } + 1 || -1
45
50
  end
51
+ else
52
+ def current_line(target=pos)
53
+ cur_offset = 0
54
+ cur_line = 0
55
+
56
+ string.each_line do |line|
57
+ cur_line += 1
58
+ cur_offset += line.size
59
+ return cur_line if cur_offset >= target
60
+ end
46
61
 
47
- -1
62
+ -1
63
+ end
48
64
  end
49
65
 
50
66
  def lines
@@ -163,9 +179,8 @@ class KPeg::StringEscape
163
179
  end
164
180
 
165
181
  def scan(reg)
166
- if m = reg.match(@string[@pos..-1])
167
- width = m.end(0)
168
- @pos += width
182
+ if m = reg.match(@string, @pos)
183
+ @pos = m.end(0)
169
184
  return true
170
185
  end
171
186
 
@@ -278,8 +293,6 @@ class KPeg::StringEscape
278
293
  else
279
294
  return ans
280
295
  end
281
-
282
- return ans
283
296
  end
284
297
  end
285
298
 
@@ -312,8 +325,6 @@ class KPeg::StringEscape
312
325
  else
313
326
  return ans
314
327
  end
315
-
316
- return ans
317
328
  end
318
329
  end
319
330
 
@@ -371,7 +382,7 @@ class KPeg::StringEscape
371
382
  _save1 = self.pos
372
383
  while true # sequence
373
384
  _text_start = self.pos
374
- _tmp = scan(/\A(?-mix:[\w ]+)/)
385
+ _tmp = scan(/\G(?-mix:[\w ]+)/)
375
386
  if _tmp
376
387
  text = get_text(_text_start)
377
388
  end
data/lib/kpeg.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  module KPeg
2
2
 
3
- VERSION = "1.0.0"
3
+ VERSION = "1.3.1"
4
4
 
5
5
  def self.grammar
6
6
  g = Grammar.new
@@ -80,7 +80,7 @@ class Test < KPeg::CompiledParser
80
80
 
81
81
  # root = /[0-9]/
82
82
  def _root
83
- _tmp = scan(/\\A(?-mix:[0-9])/)
83
+ _tmp = scan(/\\G(?-mix:[0-9])/)
84
84
  set_failed_rule :_root unless _tmp
85
85
  return _tmp
86
86
  end
@@ -114,7 +114,7 @@ class Test < KPeg::CompiledParser
114
114
 
115
115
  # root = /./
116
116
  def _root
117
- _tmp = scan(/\\A(?-mix:.)/)
117
+ _tmp = scan(/\\G(?-mix:.)/)
118
118
  set_failed_rule :_root unless _tmp
119
119
  return _tmp
120
120
  end
@@ -133,7 +133,7 @@ class Test < KPeg::CompiledParser
133
133
 
134
134
  # root = /./u
135
135
  def _root
136
- _tmp = scan(/\\A(?-mix:.)/u)
136
+ _tmp = scan(/\\G(?-mix:.)/u)
137
137
  set_failed_rule :_root unless _tmp
138
138
  return _tmp
139
139
  end
@@ -7,6 +7,7 @@ class TestKPegCompiledParser < Minitest::Test
7
7
 
8
8
  gram = <<-GRAM
9
9
  letter = [a-z]
10
+ number = [0-9]
10
11
  root = letter
11
12
  GRAM
12
13
 
@@ -14,7 +15,7 @@ class TestKPegCompiledParser < Minitest::Test
14
15
 
15
16
  gram = <<-GRAM
16
17
  %test = TestKPegCompiledParser::TestParser
17
- root = %test.letter "!"
18
+ root = %test.letter %test.number? "!"
18
19
  GRAM
19
20
 
20
21
  KPeg.compile gram, "CompTestParser", self
@@ -78,4 +79,12 @@ class TestKPegCompiledParser < Minitest::Test
78
79
  assert_equal expected, r.failure_oneline
79
80
  end
80
81
 
82
+ def test_composite_two_char_error
83
+ r = CompTestParser.new "aa"
84
+ assert_nil r.parse, "should not parse"
85
+
86
+ expected = "@1:2 failed rule 'TestKPegCompiledParser::TestParser#_number', got 'a'"
87
+ assert_equal expected, r.failure_oneline
88
+ end
89
+
81
90
  end
@@ -431,6 +431,25 @@ a=b
431
431
  assert_equal expected, m.directives
432
432
  end
433
433
 
434
+ def test_parser_directive_single_quote
435
+ m = match <<-GRAMMAR
436
+ %% header {
437
+ # It's a bug I found
438
+ }
439
+
440
+ a=b
441
+ GRAMMAR
442
+
443
+ assert_rule G.ref("b"), m
444
+
445
+ expected = {
446
+ "header" => KPeg::Action.new("\n# It's a bug I found\n")
447
+ }
448
+
449
+ assert_equal expected, m.directives
450
+ end
451
+
452
+
434
453
  def test_parser_setup
435
454
  m = match "%% { def initialize; end }\na=b"
436
455
  assert_rule G.ref("b"), m
metadata CHANGED
@@ -1,57 +1,63 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kpeg
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Evan Phoenix
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-01-04 00:00:00.000000000 Z
11
+ date: 2022-01-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: minitest
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '5.2'
19
+ version: '5.14'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '5.2'
26
+ version: '5.14'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rdoc
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '4.0'
34
+ - - "<"
35
+ - !ruby/object:Gem::Version
36
+ version: '7'
34
37
  type: :development
35
38
  prerelease: false
36
39
  version_requirements: !ruby/object:Gem::Requirement
37
40
  requirements:
38
- - - ~>
41
+ - - ">="
39
42
  - !ruby/object:Gem::Version
40
43
  version: '4.0'
44
+ - - "<"
45
+ - !ruby/object:Gem::Version
46
+ version: '7'
41
47
  - !ruby/object:Gem::Dependency
42
48
  name: hoe
43
49
  requirement: !ruby/object:Gem::Requirement
44
50
  requirements:
45
- - - ~>
51
+ - - "~>"
46
52
  - !ruby/object:Gem::Version
47
- version: '3.7'
53
+ version: '3.23'
48
54
  type: :development
49
55
  prerelease: false
50
56
  version_requirements: !ruby/object:Gem::Requirement
51
57
  requirements:
52
- - - ~>
58
+ - - "~>"
53
59
  - !ruby/object:Gem::Version
54
- version: '3.7'
60
+ version: '3.23'
55
61
  description: |-
56
62
  KPeg is a simple PEG library for Ruby. It provides an API as well as native
57
63
  grammar to build the grammar.
@@ -70,10 +76,12 @@ extra_rdoc_files:
70
76
  - Manifest.txt
71
77
  - README.rdoc
72
78
  - examples/phone_number/README.md
79
+ - examples/tiny_markdown/sample.md
73
80
  - examples/upper/README.md
74
81
  files:
75
- - .autotest
76
- - .travis.yml
82
+ - ".autotest"
83
+ - ".hoeignore"
84
+ - Gemfile
77
85
  - History.txt
78
86
  - LICENSE
79
87
  - Manifest.txt
@@ -91,6 +99,12 @@ files:
91
99
  - examples/phone_number/README.md
92
100
  - examples/phone_number/phone_number.kpeg
93
101
  - examples/phone_number/phone_number.rb
102
+ - examples/tiny_markdown/Rakefile
103
+ - examples/tiny_markdown/driver.rb
104
+ - examples/tiny_markdown/node.rb
105
+ - examples/tiny_markdown/sample.md
106
+ - examples/tiny_markdown/tiny_markdown.kpeg
107
+ - examples/tiny_markdown/tiny_markdown.kpeg.rb
94
108
  - examples/upper/README.md
95
109
  - examples/upper/upper.kpeg
96
110
  - examples/upper/upper.rb
@@ -116,42 +130,34 @@ files:
116
130
  - test/test_kpeg_format_parser_round_trip.rb
117
131
  - test/test_kpeg_grammar.rb
118
132
  - test/test_kpeg_grammar_renderer.rb
133
+ - test/test_kpeg_string_escape.rb
119
134
  - vim/syntax_kpeg/ftdetect/kpeg.vim
120
135
  - vim/syntax_kpeg/syntax/kpeg.vim
121
- - test/test_kpeg_string_escape.rb
122
- - .gemtest
123
136
  homepage: https://github.com/evanphx/kpeg
124
137
  licenses:
125
138
  - MIT
126
- metadata: {}
127
- post_install_message:
139
+ metadata:
140
+ homepage_uri: https://github.com/evanphx/kpeg
141
+ bug_tracker_uri: https://github.com/evanphx/kpeg/issues
142
+ post_install_message:
128
143
  rdoc_options:
129
- - --main
144
+ - "--main"
130
145
  - README.rdoc
131
146
  require_paths:
132
147
  - lib
133
148
  required_ruby_version: !ruby/object:Gem::Requirement
134
149
  requirements:
135
- - - '>='
150
+ - - ">="
136
151
  - !ruby/object:Gem::Version
137
152
  version: '0'
138
153
  required_rubygems_version: !ruby/object:Gem::Requirement
139
154
  requirements:
140
- - - '>='
155
+ - - ">="
141
156
  - !ruby/object:Gem::Version
142
157
  version: '0'
143
158
  requirements: []
144
- rubyforge_project: kpeg
145
- rubygems_version: 2.1.10
146
- signing_key:
159
+ rubygems_version: 3.2.15
160
+ signing_key:
147
161
  specification_version: 4
148
162
  summary: KPeg is a simple PEG library for Ruby
149
- test_files:
150
- - test/test_kpeg.rb
151
- - test/test_kpeg_code_generator.rb
152
- - test/test_kpeg_compiled_parser.rb
153
- - test/test_kpeg_format.rb
154
- - test/test_kpeg_format_parser_round_trip.rb
155
- - test/test_kpeg_grammar.rb
156
- - test/test_kpeg_grammar_renderer.rb
157
- - test/test_kpeg_string_escape.rb
163
+ test_files: []
data/.gemtest DELETED
File without changes
data/.travis.yml DELETED
@@ -1,15 +0,0 @@
1
- ---
2
- script: rake travis
3
- before_script:
4
- - gem install hoe-travis --no-rdoc --no-ri
5
- - rake travis:before -t
6
- language: ruby
7
- notifications:
8
- email:
9
- - evan@fallingsnow.net
10
- - drbrain@segment7.net
11
- rvm:
12
- - 1.8.7
13
- - 1.9.2
14
- - 1.9.3
15
- - 2.0.0