parser 1.3.1 → 1.3.2
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 +4 -4
- data/.gitignore +0 -1
- data/.yardopts +16 -4
- data/Gemfile +0 -2
- data/README.md +5 -5
- data/Rakefile +5 -0
- data/doc/AST_FORMAT.md +200 -200
- data/doc/css/.gitkeep +0 -0
- data/doc/css/common.css +68 -0
- data/lib/parser/builders/default.rb +13 -3
- data/lib/parser/lexer.rl +2 -2
- data/lib/parser/source/range.rb +1 -1
- data/lib/parser/version.rb +1 -1
- data/parser.gemspec +2 -1
- data/test/parse_helper.rb +4 -4
- data/test/test_lexer.rb +4 -3
- data/test/test_parser.rb +10 -0
- data/test/test_source_range.rb +8 -0
- metadata +7 -5
data/doc/css/.gitkeep
ADDED
File without changes
|
data/doc/css/common.css
ADDED
@@ -0,0 +1,68 @@
|
|
1
|
+
body
|
2
|
+
{
|
3
|
+
font-size: 14px;
|
4
|
+
line-height: 1.6;
|
5
|
+
margin: 0 auto;
|
6
|
+
max-width: 960px;
|
7
|
+
}
|
8
|
+
|
9
|
+
p code
|
10
|
+
{
|
11
|
+
background: #f2f2f2;
|
12
|
+
padding-left: 3px;
|
13
|
+
padding-right: 3px;
|
14
|
+
}
|
15
|
+
|
16
|
+
pre.code
|
17
|
+
{
|
18
|
+
font-size: 13px;
|
19
|
+
line-height: 1.4;
|
20
|
+
}
|
21
|
+
|
22
|
+
/**
|
23
|
+
* YARD uses generic table styles, using a special class means those tables
|
24
|
+
* don't get messed up.
|
25
|
+
*/
|
26
|
+
.table
|
27
|
+
{
|
28
|
+
border: 1px solid #ccc;
|
29
|
+
border-right: none;
|
30
|
+
border-collapse: separate;
|
31
|
+
border-spacing: 0;
|
32
|
+
text-align: left;
|
33
|
+
}
|
34
|
+
|
35
|
+
.table.full
|
36
|
+
{
|
37
|
+
width: 100%;
|
38
|
+
}
|
39
|
+
|
40
|
+
.table .field_name
|
41
|
+
{
|
42
|
+
min-width: 160px;
|
43
|
+
}
|
44
|
+
|
45
|
+
.table thead tr th.no_sort:first-child
|
46
|
+
{
|
47
|
+
width: 25px;
|
48
|
+
}
|
49
|
+
|
50
|
+
.table thead tr th, .table tbody tr td
|
51
|
+
{
|
52
|
+
border-bottom: 1px solid #ccc;
|
53
|
+
border-right: 1px solid #ccc;
|
54
|
+
min-width: 20px;
|
55
|
+
padding: 8px 5px;
|
56
|
+
text-align: left;
|
57
|
+
vertical-align: top;
|
58
|
+
}
|
59
|
+
|
60
|
+
.table tbody tr:last-child td
|
61
|
+
{
|
62
|
+
border-bottom: none;
|
63
|
+
}
|
64
|
+
|
65
|
+
.table tr:nth-child(odd) td
|
66
|
+
{
|
67
|
+
background: #f9f9f9;
|
68
|
+
}
|
@@ -393,19 +393,19 @@ module Parser
|
|
393
393
|
lt_t, superclass,
|
394
394
|
body, end_t)
|
395
395
|
n(:class, [ name, superclass, body ],
|
396
|
-
|
396
|
+
module_definition_map(class_t, name, lt_t, end_t))
|
397
397
|
end
|
398
398
|
|
399
399
|
def def_sclass(class_t, lshft_t, expr,
|
400
400
|
body, end_t)
|
401
401
|
n(:sclass, [ expr, body ],
|
402
|
-
|
402
|
+
module_definition_map(class_t, nil, lshft_t, end_t))
|
403
403
|
end
|
404
404
|
|
405
405
|
def def_module(module_t, name,
|
406
406
|
body, end_t)
|
407
407
|
n(:module, [ name, body ],
|
408
|
-
|
408
|
+
module_definition_map(module_t, name, nil, end_t))
|
409
409
|
end
|
410
410
|
|
411
411
|
#
|
@@ -978,6 +978,16 @@ module Parser
|
|
978
978
|
Source::Map::Variable.new(name_range, expr_l)
|
979
979
|
end
|
980
980
|
|
981
|
+
def module_definition_map(keyword_t, name_e, operator_t, end_t)
|
982
|
+
if name_e
|
983
|
+
name_l = name_e.src.expression
|
984
|
+
end
|
985
|
+
|
986
|
+
Source::Map::Definition.new(loc(keyword_t),
|
987
|
+
loc(operator_t), name_l,
|
988
|
+
loc(end_t))
|
989
|
+
end
|
990
|
+
|
981
991
|
def definition_map(keyword_t, operator_t, name_t, end_t)
|
982
992
|
Source::Map::Definition.new(loc(keyword_t),
|
983
993
|
loc(operator_t), loc(name_t),
|
data/lib/parser/lexer.rl
CHANGED
@@ -461,7 +461,7 @@ class Parser::Lexer
|
|
461
461
|
global_var = '$'
|
462
462
|
( bareword | digit+
|
463
463
|
| [`'+~*$&?!@/\\;,.=:<>"] # `
|
464
|
-
| '-'
|
464
|
+
| '-' c_alnum
|
465
465
|
)
|
466
466
|
;
|
467
467
|
|
@@ -1802,7 +1802,7 @@ class Parser::Lexer
|
|
1802
1802
|
|
1803
1803
|
c_any
|
1804
1804
|
=> {
|
1805
|
-
message = Parser::ERRORS[:unexpected] % { :character => tok.inspect }
|
1805
|
+
message = Parser::ERRORS[:unexpected] % { :character => tok.inspect[1..-2] }
|
1806
1806
|
diagnostic :fatal, message
|
1807
1807
|
};
|
1808
1808
|
|
data/lib/parser/source/range.rb
CHANGED
data/lib/parser/version.rb
CHANGED
data/parser.gemspec
CHANGED
@@ -10,6 +10,7 @@ Gem::Specification.new do |spec|
|
|
10
10
|
spec.summary = spec.description
|
11
11
|
spec.homepage = 'http://github.com/whitequark/parser'
|
12
12
|
spec.license = 'MIT'
|
13
|
+
spec.has_rdoc = 'yard'
|
13
14
|
|
14
15
|
spec.files = `git ls-files`.split($/) + %w(
|
15
16
|
lib/parser/lexer.rb
|
@@ -36,6 +37,6 @@ Gem::Specification.new do |spec|
|
|
36
37
|
|
37
38
|
spec.add_development_dependency 'simplecov-sublime-ruby-coverage'
|
38
39
|
|
39
|
-
spec.add_development_dependency 'github-markup'
|
40
40
|
spec.add_development_dependency 'yard'
|
41
|
+
spec.add_development_dependency 'kramdown'
|
41
42
|
end
|
data/test/parse_helper.rb
CHANGED
@@ -55,7 +55,7 @@ module ParseHelper
|
|
55
55
|
end
|
56
56
|
|
57
57
|
# Use like this:
|
58
|
-
#
|
58
|
+
# ~~~
|
59
59
|
# assert_parses(
|
60
60
|
# s(:send, s(:lit, 10), :+, s(:lit, 20))
|
61
61
|
# %q{10 + 20},
|
@@ -65,7 +65,7 @@ module ParseHelper
|
|
65
65
|
# },
|
66
66
|
# %w(1.8 1.9) # optional
|
67
67
|
# )
|
68
|
-
#
|
68
|
+
# ~~~
|
69
69
|
def assert_parses(ast, code, source_maps='', versions=ALL_VERSIONS)
|
70
70
|
with_versions(code, versions) do |version, parser|
|
71
71
|
source_file = Parser::Source::Buffer.new('(assert_parses)')
|
@@ -103,13 +103,13 @@ module ParseHelper
|
|
103
103
|
end
|
104
104
|
|
105
105
|
# Use like this:
|
106
|
-
#
|
106
|
+
# ~~~
|
107
107
|
# assert_diagnoses(
|
108
108
|
# [:warning, :ambiguous_prefix, { prefix: '*' }],
|
109
109
|
# %q{foo *bar},
|
110
110
|
# %q{ ^ location
|
111
111
|
# | ~~~ highlights (0)})
|
112
|
-
#
|
112
|
+
# ~~~
|
113
113
|
def assert_diagnoses(diagnostic, code, source_maps='', versions=ALL_VERSIONS)
|
114
114
|
with_versions(code, versions) do |version, parser|
|
115
115
|
source_file = Parser::Source::Buffer.new('(assert_diagnoses)')
|
data/test/test_lexer.rb
CHANGED
@@ -622,9 +622,10 @@ class TestLexer < MiniTest::Unit::TestCase
|
|
622
622
|
util_lex_token("$`", :tBACK_REF, "$`")
|
623
623
|
end
|
624
624
|
|
625
|
-
|
626
|
-
|
627
|
-
|
625
|
+
# This was removed in 2.1.
|
626
|
+
# def test_global_dash_nothing
|
627
|
+
# util_lex_token("$- ", :tGVAR, "$-")
|
628
|
+
# end
|
628
629
|
|
629
630
|
def test_global_dash_something
|
630
631
|
util_lex_token("$-x", :tGVAR, "$-x")
|
data/test/test_parser.rb
CHANGED
@@ -529,6 +529,14 @@ class TestParser < MiniTest::Unit::TestCase
|
|
529
529
|
%q{~~~~ expression})
|
530
530
|
end
|
531
531
|
|
532
|
+
def test_gvar_dash_empty
|
533
|
+
assert_diagnoses(
|
534
|
+
[:fatal, :unexpected, { :character => '$' }],
|
535
|
+
%q{$- },
|
536
|
+
%q{^ location},
|
537
|
+
%w(2.1))
|
538
|
+
end
|
539
|
+
|
532
540
|
def test_back_ref
|
533
541
|
assert_parses(
|
534
542
|
s(:back_ref, :$+),
|
@@ -1285,6 +1293,7 @@ class TestParser < MiniTest::Unit::TestCase
|
|
1285
1293
|
s(:nil)),
|
1286
1294
|
%q{module Foo; nil; end},
|
1287
1295
|
%q{~~~~~~ keyword
|
1296
|
+
| ~~~ name
|
1288
1297
|
| ~~~ end})
|
1289
1298
|
end
|
1290
1299
|
|
@@ -1322,6 +1331,7 @@ class TestParser < MiniTest::Unit::TestCase
|
|
1322
1331
|
s(:nil)),
|
1323
1332
|
%q{class Foo; nil; end},
|
1324
1333
|
%q{~~~~~ keyword
|
1334
|
+
| ~~~ name
|
1325
1335
|
| ~~~ end})
|
1326
1336
|
end
|
1327
1337
|
|
data/test/test_source_range.rb
CHANGED
@@ -56,6 +56,14 @@ class TestSourceRange < MiniTest::Unit::TestCase
|
|
56
56
|
assert_equal 5, sr_end.end_pos
|
57
57
|
end
|
58
58
|
|
59
|
+
def test_to_source
|
60
|
+
sr = Parser::Source::Range.new(@sfile, 0, 3)
|
61
|
+
assert_equal "foo", sr.to_source
|
62
|
+
|
63
|
+
sr_multi = Parser::Source::Range.new(@sfile, 0, 10)
|
64
|
+
assert_equal "foobar\nbaz", sr_multi.to_source
|
65
|
+
end
|
66
|
+
|
59
67
|
def test_to_s
|
60
68
|
sr = Parser::Source::Range.new(@sfile, 8, 9)
|
61
69
|
assert_equal "(string):2:2", sr.to_s
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: parser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Peter Zotov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-05-
|
11
|
+
date: 2013-05-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ast
|
@@ -151,7 +151,7 @@ dependencies:
|
|
151
151
|
- !ruby/object:Gem::Version
|
152
152
|
version: '0'
|
153
153
|
- !ruby/object:Gem::Dependency
|
154
|
-
name:
|
154
|
+
name: yard
|
155
155
|
requirement: !ruby/object:Gem::Requirement
|
156
156
|
requirements:
|
157
157
|
- - '>='
|
@@ -165,7 +165,7 @@ dependencies:
|
|
165
165
|
- !ruby/object:Gem::Version
|
166
166
|
version: '0'
|
167
167
|
- !ruby/object:Gem::Dependency
|
168
|
-
name:
|
168
|
+
name: kramdown
|
169
169
|
requirement: !ruby/object:Gem::Requirement
|
170
170
|
requirements:
|
171
171
|
- - '>='
|
@@ -200,6 +200,8 @@ files:
|
|
200
200
|
- doc/AST_FORMAT.md
|
201
201
|
- doc/CUSTOMIZATION.md
|
202
202
|
- doc/INTERNALS.md
|
203
|
+
- doc/css/.gitkeep
|
204
|
+
- doc/css/common.css
|
203
205
|
- lib/parser.rb
|
204
206
|
- lib/parser/all.rb
|
205
207
|
- lib/parser/ast/node.rb
|
@@ -306,4 +308,4 @@ test_files:
|
|
306
308
|
- test/test_source_rewriter.rb
|
307
309
|
- test/test_source_rewriter_action.rb
|
308
310
|
- test/test_static_environment.rb
|
309
|
-
has_rdoc:
|
311
|
+
has_rdoc: yard
|