kpeg 1.1.0 → 1.2.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.
- 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
|