kpeg 1.1.0 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/History.txt +7 -0
- data/Manifest.txt +0 -1
- data/README.rdoc +5 -5
- data/lib/kpeg/code_generator.rb +1 -1
- data/lib/kpeg/compiled_parser.rb +3 -3
- data/lib/kpeg/format_parser.rb +47 -28
- data/lib/kpeg/position.rb +26 -10
- data/lib/kpeg/string_escape.rb +28 -12
- data/lib/kpeg.rb +1 -1
- data/test/test_kpeg_code_generator.rb +3 -3
- metadata +21 -15
- data/.travis.yml +0 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 8addf56b471f186a44651884101f4159a94927b8c27d5c5eaed867388797fb49
|
4
|
+
data.tar.gz: cb1c89881fc980f4fd1bedd485a6f4cc0ac2e8aa9df8ffeb9690b9839be6b8be
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7207c6d8774c8eec993b962306df6fd529ae7910b279e98dda4f4d2000c4c2dd5183ca5d1ee28ba377fa4664d4b5c417c283fd539cf1b8c80db3ff9f6d66be1b
|
7
|
+
data.tar.gz: c6980f3355fb4a64cb49ae29ab050e09039074aea8720fab12000e6ce7716749276f4d4cf3a5831982e263de7b3c25c22f5850d4edc4fb06e5468be75943e41c
|
data/History.txt
CHANGED
data/Manifest.txt
CHANGED
data/README.rdoc
CHANGED
@@ -240,15 +240,15 @@ For a good example of usage check out Talon[https://github.com/evanphx/talon]
|
|
240
240
|
There are several examples available in the /examples directory. The upper
|
241
241
|
parser has a readme with a step by step description of the grammar.
|
242
242
|
|
243
|
-
== Projects
|
243
|
+
== Projects
|
244
244
|
|
245
|
-
Dang[https://github.com/veganstraightedge/dang]
|
245
|
+
{Dang}[https://github.com/veganstraightedge/dang]
|
246
246
|
|
247
247
|
{Email Address Validator}[https://github.com/larb/email_address_validator]
|
248
248
|
|
249
|
-
Callisto[https://github.com/dwaite/Callisto]
|
249
|
+
{Callisto}[https://github.com/dwaite/Callisto]
|
250
250
|
|
251
|
-
Doodle[https://github.com/vito/doodle]
|
251
|
+
{Doodle}[https://github.com/vito/doodle]
|
252
252
|
|
253
|
-
Kanbanpad[https://kanbanpad.com] (uses kpeg for parsing of the 'enter
|
253
|
+
{Kanbanpad}[https://kanbanpad.com] (uses kpeg for parsing of the 'enter
|
254
254
|
something' bar)
|
data/lib/kpeg/code_generator.rb
CHANGED
@@ -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(/\\
|
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
|
data/lib/kpeg/compiled_parser.rb
CHANGED
@@ -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
|
154
|
-
|
155
|
-
@pos += width
|
154
|
+
if m = reg.match(@string, @pos)
|
155
|
+
@pos = m.end(0)
|
156
156
|
return true
|
157
157
|
end
|
158
158
|
|
data/lib/kpeg/format_parser.rb
CHANGED
@@ -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,33 @@ class KPeg::FormatParser
|
|
26
27
|
target + 1
|
27
28
|
end
|
28
29
|
|
29
|
-
|
30
|
-
|
31
|
-
|
30
|
+
if [].respond_to? :bsearch_index
|
31
|
+
def current_line(target=pos)
|
32
|
+
unless @line_offsets
|
33
|
+
@line_offsets = [-1]
|
34
|
+
total = 0
|
35
|
+
string.each_line do |line|
|
36
|
+
@line_offsets << total
|
37
|
+
total += line.size
|
38
|
+
end
|
39
|
+
@line_offsets << total
|
40
|
+
end
|
32
41
|
|
33
|
-
|
34
|
-
cur_line += 1
|
35
|
-
cur_offset += line.size
|
36
|
-
return cur_line if cur_offset >= target
|
42
|
+
@line_offsets.bsearch_index {|x| x >= target } || -1
|
37
43
|
end
|
44
|
+
else
|
45
|
+
def current_line(target=pos)
|
46
|
+
cur_offset = 0
|
47
|
+
cur_line = 0
|
48
|
+
|
49
|
+
string.each_line do |line|
|
50
|
+
cur_line += 1
|
51
|
+
cur_offset += line.size
|
52
|
+
return cur_line if cur_offset >= target
|
53
|
+
end
|
38
54
|
|
39
|
-
|
55
|
+
-1
|
56
|
+
end
|
40
57
|
end
|
41
58
|
|
42
59
|
def lines
|
@@ -155,9 +172,8 @@ class KPeg::FormatParser
|
|
155
172
|
end
|
156
173
|
|
157
174
|
def scan(reg)
|
158
|
-
if m = reg.match(@string
|
159
|
-
|
160
|
-
@pos += width
|
175
|
+
if m = reg.match(@string, @pos)
|
176
|
+
@pos = m.end(0)
|
161
177
|
return true
|
162
178
|
end
|
163
179
|
|
@@ -522,7 +538,7 @@ class KPeg::FormatParser
|
|
522
538
|
_tmp = match_string("-")
|
523
539
|
break if _tmp
|
524
540
|
self.pos = _save1
|
525
|
-
_tmp = scan(/\
|
541
|
+
_tmp = scan(/\G(?i-mx:[a-z][\w-]*)/)
|
526
542
|
break if _tmp
|
527
543
|
self.pos = _save1
|
528
544
|
break
|
@@ -553,7 +569,7 @@ class KPeg::FormatParser
|
|
553
569
|
_save = self.pos
|
554
570
|
while true # sequence
|
555
571
|
_text_start = self.pos
|
556
|
-
_tmp = scan(/\
|
572
|
+
_tmp = scan(/\G(?i-mx:[a-z_]\w*)/)
|
557
573
|
if _tmp
|
558
574
|
text = get_text(_text_start)
|
559
575
|
end
|
@@ -817,7 +833,7 @@ class KPeg::FormatParser
|
|
817
833
|
_save1 = self.pos
|
818
834
|
while true # sequence
|
819
835
|
_text_start = self.pos
|
820
|
-
_tmp = scan(/\
|
836
|
+
_tmp = scan(/\G(?-mix:[0-7]{1,3})/)
|
821
837
|
if _tmp
|
822
838
|
text = get_text(_text_start)
|
823
839
|
end
|
@@ -844,7 +860,7 @@ class KPeg::FormatParser
|
|
844
860
|
break
|
845
861
|
end
|
846
862
|
_text_start = self.pos
|
847
|
-
_tmp = scan(/\
|
863
|
+
_tmp = scan(/\G(?i-mx:[a-f\d]{2})/)
|
848
864
|
if _tmp
|
849
865
|
text = get_text(_text_start)
|
850
866
|
end
|
@@ -875,7 +891,7 @@ class KPeg::FormatParser
|
|
875
891
|
_save = self.pos
|
876
892
|
while true # sequence
|
877
893
|
_text_start = self.pos
|
878
|
-
_tmp = scan(/\
|
894
|
+
_tmp = scan(/\G(?-mix:[^\\"]+)/)
|
879
895
|
if _tmp
|
880
896
|
text = get_text(_text_start)
|
881
897
|
end
|
@@ -1013,7 +1029,7 @@ class KPeg::FormatParser
|
|
1013
1029
|
_save = self.pos
|
1014
1030
|
while true # sequence
|
1015
1031
|
_text_start = self.pos
|
1016
|
-
_tmp = scan(/\
|
1032
|
+
_tmp = scan(/\G(?-mix:[^'])/)
|
1017
1033
|
if _tmp
|
1018
1034
|
text = get_text(_text_start)
|
1019
1035
|
end
|
@@ -1138,7 +1154,7 @@ class KPeg::FormatParser
|
|
1138
1154
|
_tmp = match_string("\\/")
|
1139
1155
|
break if _tmp
|
1140
1156
|
self.pos = _save2
|
1141
|
-
_tmp = scan(/\
|
1157
|
+
_tmp = scan(/\G(?-mix:[^\/])/)
|
1142
1158
|
break if _tmp
|
1143
1159
|
self.pos = _save2
|
1144
1160
|
break
|
@@ -1152,7 +1168,7 @@ class KPeg::FormatParser
|
|
1152
1168
|
_tmp = match_string("\\/")
|
1153
1169
|
break if _tmp
|
1154
1170
|
self.pos = _save3
|
1155
|
-
_tmp = scan(/\
|
1171
|
+
_tmp = scan(/\G(?-mix:[^\/])/)
|
1156
1172
|
break if _tmp
|
1157
1173
|
self.pos = _save3
|
1158
1174
|
break
|
@@ -1265,7 +1281,7 @@ class KPeg::FormatParser
|
|
1265
1281
|
_save = self.pos
|
1266
1282
|
while true # sequence
|
1267
1283
|
_text_start = self.pos
|
1268
|
-
_tmp = scan(/\
|
1284
|
+
_tmp = scan(/\G(?i-mx:[a-z\d])/)
|
1269
1285
|
if _tmp
|
1270
1286
|
text = get_text(_text_start)
|
1271
1287
|
end
|
@@ -1335,7 +1351,7 @@ class KPeg::FormatParser
|
|
1335
1351
|
_save = self.pos
|
1336
1352
|
while true # sequence
|
1337
1353
|
_text_start = self.pos
|
1338
|
-
_tmp = scan(/\
|
1354
|
+
_tmp = scan(/\G(?-mix:[1-9]\d*)/)
|
1339
1355
|
if _tmp
|
1340
1356
|
text = get_text(_text_start)
|
1341
1357
|
end
|
@@ -1510,7 +1526,7 @@ class KPeg::FormatParser
|
|
1510
1526
|
return _tmp
|
1511
1527
|
end
|
1512
1528
|
|
1513
|
-
# curly = "{" < (/[^{}"']+/ | string | curly)* > "}" { @g.action(text) }
|
1529
|
+
# curly = "{" < (spaces | /[^{}"']+/ | string | curly)* > "}" { @g.action(text) }
|
1514
1530
|
def _curly
|
1515
1531
|
|
1516
1532
|
_save = self.pos
|
@@ -1525,7 +1541,10 @@ class KPeg::FormatParser
|
|
1525
1541
|
|
1526
1542
|
_save2 = self.pos
|
1527
1543
|
while true # choice
|
1528
|
-
_tmp =
|
1544
|
+
_tmp = apply(:_spaces)
|
1545
|
+
break if _tmp
|
1546
|
+
self.pos = _save2
|
1547
|
+
_tmp = scan(/\G(?-mix:[^{}"']+)/)
|
1529
1548
|
break if _tmp
|
1530
1549
|
self.pos = _save2
|
1531
1550
|
_tmp = apply(:_string)
|
@@ -1578,7 +1597,7 @@ class KPeg::FormatParser
|
|
1578
1597
|
|
1579
1598
|
_save2 = self.pos
|
1580
1599
|
while true # choice
|
1581
|
-
_tmp = scan(/\
|
1600
|
+
_tmp = scan(/\G(?-mix:[^()"']+)/)
|
1582
1601
|
break if _tmp
|
1583
1602
|
self.pos = _save2
|
1584
1603
|
_tmp = apply(:_string)
|
@@ -2615,7 +2634,7 @@ class KPeg::FormatParser
|
|
2615
2634
|
break
|
2616
2635
|
end
|
2617
2636
|
_text_start = self.pos
|
2618
|
-
_tmp = scan(/\
|
2637
|
+
_tmp = scan(/\G(?-mix:[:\w]+)/)
|
2619
2638
|
if _tmp
|
2620
2639
|
text = get_text(_text_start)
|
2621
2640
|
end
|
@@ -2913,7 +2932,7 @@ class KPeg::FormatParser
|
|
2913
2932
|
_save = self.pos
|
2914
2933
|
while true # sequence
|
2915
2934
|
_text_start = self.pos
|
2916
|
-
_tmp = scan(/\
|
2935
|
+
_tmp = scan(/\G(?-mix:[A-Z]\w*)/)
|
2917
2936
|
if _tmp
|
2918
2937
|
text = get_text(_text_start)
|
2919
2938
|
end
|
@@ -2939,7 +2958,7 @@ class KPeg::FormatParser
|
|
2939
2958
|
_save = self.pos
|
2940
2959
|
while true # sequence
|
2941
2960
|
_text_start = self.pos
|
2942
|
-
_tmp = scan(/\
|
2961
|
+
_tmp = scan(/\G(?i-mx:[a-z_]\w*)/)
|
2943
2962
|
if _tmp
|
2944
2963
|
text = get_text(_text_start)
|
2945
2964
|
end
|
@@ -3156,7 +3175,7 @@ class KPeg::FormatParser
|
|
3156
3175
|
Rules[:_range_elem] = rule_info("range_elem", "< (range_num | kleene) > { text }")
|
3157
3176
|
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] })")
|
3158
3177
|
Rules[:_curly_block] = rule_info("curly_block", "curly")
|
3159
|
-
Rules[:_curly] = rule_info("curly", "\"{\" < (/[^{}\"']+/ | string | curly)* > \"}\" { @g.action(text) }")
|
3178
|
+
Rules[:_curly] = rule_info("curly", "\"{\" < (spaces | /[^{}\"']+/ | string | curly)* > \"}\" { @g.action(text) }")
|
3160
3179
|
Rules[:_nested_paren] = rule_info("nested_paren", "\"(\" (/[^()\"']+/ | string | nested_paren)* \")\"")
|
3161
3180
|
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)")
|
3162
3181
|
Rules[:_spaces] = rule_info("spaces", "(space | comment)+")
|
data/lib/kpeg/position.rb
CHANGED
@@ -10,17 +10,33 @@ module KPeg
|
|
10
10
|
target + 1
|
11
11
|
end
|
12
12
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
13
|
+
if [].respond_to? :bsearch_index
|
14
|
+
def current_line(target=pos)
|
15
|
+
unless @line_offsets
|
16
|
+
@line_offsets = [-1]
|
17
|
+
total = 0
|
18
|
+
string.each_line do |line|
|
19
|
+
@line_offsets << total
|
20
|
+
total += line.size
|
21
|
+
end
|
22
|
+
@line_offsets << total
|
23
|
+
end
|
24
|
+
|
25
|
+
@line_offsets.bsearch_index {|x| x >= target } || -1
|
26
|
+
end
|
27
|
+
else
|
28
|
+
def current_line(target=pos)
|
29
|
+
cur_offset = 0
|
30
|
+
cur_line = 0
|
31
|
+
|
32
|
+
string.each_line do |line|
|
33
|
+
cur_line += 1
|
34
|
+
cur_offset += line.size
|
35
|
+
return cur_line if cur_offset >= target
|
36
|
+
end
|
37
|
+
|
38
|
+
-1
|
21
39
|
end
|
22
|
-
|
23
|
-
-1
|
24
40
|
end
|
25
41
|
|
26
42
|
def lines
|
data/lib/kpeg/string_escape.rb
CHANGED
@@ -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,33 @@ class KPeg::StringEscape
|
|
34
35
|
target + 1
|
35
36
|
end
|
36
37
|
|
37
|
-
|
38
|
-
|
39
|
-
|
38
|
+
if [].respond_to? :bsearch_index
|
39
|
+
def current_line(target=pos)
|
40
|
+
unless @line_offsets
|
41
|
+
@line_offsets = [-1]
|
42
|
+
total = 0
|
43
|
+
string.each_line do |line|
|
44
|
+
@line_offsets << total
|
45
|
+
total += line.size
|
46
|
+
end
|
47
|
+
@line_offsets << total
|
48
|
+
end
|
40
49
|
|
41
|
-
|
42
|
-
cur_line += 1
|
43
|
-
cur_offset += line.size
|
44
|
-
return cur_line if cur_offset >= target
|
50
|
+
@line_offsets.bsearch_index {|x| x >= target } || -1
|
45
51
|
end
|
52
|
+
else
|
53
|
+
def current_line(target=pos)
|
54
|
+
cur_offset = 0
|
55
|
+
cur_line = 0
|
56
|
+
|
57
|
+
string.each_line do |line|
|
58
|
+
cur_line += 1
|
59
|
+
cur_offset += line.size
|
60
|
+
return cur_line if cur_offset >= target
|
61
|
+
end
|
46
62
|
|
47
|
-
|
63
|
+
-1
|
64
|
+
end
|
48
65
|
end
|
49
66
|
|
50
67
|
def lines
|
@@ -163,9 +180,8 @@ class KPeg::StringEscape
|
|
163
180
|
end
|
164
181
|
|
165
182
|
def scan(reg)
|
166
|
-
if m = reg.match(@string
|
167
|
-
|
168
|
-
@pos += width
|
183
|
+
if m = reg.match(@string, @pos)
|
184
|
+
@pos = m.end(0)
|
169
185
|
return true
|
170
186
|
end
|
171
187
|
|
@@ -367,7 +383,7 @@ class KPeg::StringEscape
|
|
367
383
|
_save1 = self.pos
|
368
384
|
while true # sequence
|
369
385
|
_text_start = self.pos
|
370
|
-
_tmp = scan(/\
|
386
|
+
_tmp = scan(/\G(?-mix:[\w ]+)/)
|
371
387
|
if _tmp
|
372
388
|
text = get_text(_text_start)
|
373
389
|
end
|
data/lib/kpeg.rb
CHANGED
@@ -80,7 +80,7 @@ class Test < KPeg::CompiledParser
|
|
80
80
|
|
81
81
|
# root = /[0-9]/
|
82
82
|
def _root
|
83
|
-
_tmp = scan(/\\
|
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(/\\
|
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(/\\
|
136
|
+
_tmp = scan(/\\G(?-mix:.)/u)
|
137
137
|
set_failed_rule :_root unless _tmp
|
138
138
|
return _tmp
|
139
139
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kpeg
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
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:
|
11
|
+
date: 2021-10-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: minitest
|
@@ -16,42 +16,48 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '5.
|
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.
|
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.
|
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.
|
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.
|
@@ -75,7 +81,6 @@ extra_rdoc_files:
|
|
75
81
|
files:
|
76
82
|
- ".autotest"
|
77
83
|
- ".hoeignore"
|
78
|
-
- ".travis.yml"
|
79
84
|
- Gemfile
|
80
85
|
- History.txt
|
81
86
|
- LICENSE
|
@@ -131,8 +136,10 @@ files:
|
|
131
136
|
homepage: https://github.com/evanphx/kpeg
|
132
137
|
licenses:
|
133
138
|
- MIT
|
134
|
-
metadata:
|
135
|
-
|
139
|
+
metadata:
|
140
|
+
homepage_uri: https://github.com/evanphx/kpeg
|
141
|
+
bug_tracker_uri: https://github.com/evanphx/kpeg/issues
|
142
|
+
post_install_message:
|
136
143
|
rdoc_options:
|
137
144
|
- "--main"
|
138
145
|
- README.rdoc
|
@@ -149,9 +156,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
149
156
|
- !ruby/object:Gem::Version
|
150
157
|
version: '0'
|
151
158
|
requirements: []
|
152
|
-
|
153
|
-
|
154
|
-
signing_key:
|
159
|
+
rubygems_version: 3.2.15
|
160
|
+
signing_key:
|
155
161
|
specification_version: 4
|
156
162
|
summary: KPeg is a simple PEG library for Ruby
|
157
163
|
test_files: []
|
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
|