parser 2.0.0.beta2 → 2.0.0.beta3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 07879ee1d09632725a820a2ebe8cffd8ab8b96df
4
- data.tar.gz: e6e2daa3f5ce930d63f72457fceded6a319309aa
3
+ metadata.gz: d3c90abfdc392d6c6d0c73d73138f073428117e6
4
+ data.tar.gz: d0c947aa1ada143e47b3558ae215a4f245f2ccff
5
5
  SHA512:
6
- metadata.gz: ebb7af02e3f6c83c57d221857c8a4c3f3606aa61ab84f33cb1ccc10ec6b3433da0fbc44af7a26bc8beb7e3cc6df1ef1feafc30734fa20a86060db212adc92d05
7
- data.tar.gz: 97d3ba4a5f88a4dbdaaa9521aa5a24ecae3397d9d5d7f39691a757b74f2aadaa48e14b08fd8b28343ec94c8d6d7b5254663d57407c60f384bb4c17019e5bc9db
6
+ metadata.gz: 76e1c1063a7ab852b19cc2b6a6eb1121cd7f9aa13ec40b3712dc568dfd24b8ac7b72610386d4a33932e22331eac5fca2575efdf302b3daf9cfe398edac1d13be
7
+ data.tar.gz: 4647419022b86a8d8a53f9a126d0c47fa6d9f23d5b2ed2b5ce60277b6803a0202f7701e24c8905ce41d072954aa60408198fd98087584f9fdf44f688b176420b
data/CHANGELOG.md CHANGED
@@ -1,14 +1,23 @@
1
1
  Changelog
2
2
  =========
3
3
 
4
- 2.0.0.beta2 (2013-05-27)
5
- ------------------------
4
+ v2.0.0.beta3 (2013-05-29)
5
+ -------------------------
6
+
7
+ Bugs fixed:
8
+ * AST::Processor: traverse "A, B = foo" (fixes #55). (Peter Zotov)
9
+ * lexer.rl: correctly handle CRLF line endings (fixes #56). (Peter Zotov)
10
+ * Fix traversing of "case; when a?; when b?; end" by AST::Processor. (Peter Zotov)
11
+ * Correctly lex "foo a, b # comment\nbar" (fixes #54). (Peter Zotov)
12
+
13
+ v2.0.0.beta2 (2013-05-27)
14
+ -------------------------
6
15
 
7
16
  Bugs fixed:
8
17
  * Actually return comments from Parser::Base#tokenize instead of nil. (Peter Zotov)
9
18
 
10
- v2.0.0 (2013-05-25)
11
- -------------------
19
+ v2.0.0.beta1 (2013-05-25)
20
+ -------------------------
12
21
 
13
22
  API modifications:
14
23
  * Completely rewrite whitespace handling in lexer (fixes #36). (Peter Zotov)
data/Gemfile CHANGED
@@ -3,6 +3,4 @@ source 'https://rubygems.org'
3
3
  # Specify your gem's dependencies in parser.gemspec
4
4
  gemspec
5
5
 
6
- group :development do
7
- gem 'rubocop', :platform => [:ruby_19, :ruby_20]
8
- end
6
+ gem 'rubocop', :platform => [:ruby_19, :ruby_20]
data/Rakefile CHANGED
@@ -67,8 +67,8 @@ task :changelog do
67
67
  match(/^(?: \((.*)\))?#{fs}(.*)#{fs}(.*)#{fs}(.*)$/o).captures
68
68
  date = Date.parse(date)
69
69
 
70
- current_version = "#{$1} (#{date})" if version =~ /(v\d+.\d+.\d+)/
71
- current_version = "#{Parser::VERSION} (#{date})" if version =~ /HEAD/
70
+ current_version = "#{$1} (#{date})" if version =~ /(v[\d\w.]+)/
71
+ current_version = "v#{Parser::VERSION} (#{date})" if version =~ /HEAD/
72
72
 
73
73
  next if current_version.nil? || message !~ /^[+*-]/
74
74
 
@@ -75,7 +75,7 @@ module Parser
75
75
  scope_node, name, value_node = *node
76
76
 
77
77
  scope_node = process(scope_node) if scope_node
78
- value_node = process(value_node)
78
+ value_node = process(value_node) if value_node
79
79
  node.updated(nil, [ scope_node, name, value_node ])
80
80
  end
81
81
 
@@ -184,9 +184,10 @@ module Parser
184
184
  cond_node, *bodies = *node
185
185
  when_nodes, else_node = bodies[0..-2], bodies[-1]
186
186
 
187
+ cond_node = process(cond_node) if cond_node
187
188
  else_node = process(else_node) if else_node
188
189
  node.updated(nil, [
189
- process(cond_node),
190
+ cond_node,
190
191
  *(process_all(when_nodes) << else_node)
191
192
  ])
192
193
  end
data/lib/parser/lexer.rl CHANGED
@@ -154,7 +154,7 @@ class Parser::Lexer
154
154
  #
155
155
  # Patches accepted.
156
156
  #
157
- @source = @source_buffer.source.gsub(/\r\n/, "\n") + "\0\0\0"
157
+ @source = @source_buffer.source + "\0\0\0"
158
158
  else
159
159
  @source = nil
160
160
  end
@@ -377,7 +377,7 @@ class Parser::Lexer
377
377
  @newline_s = p
378
378
  }
379
379
 
380
- c_nl = '\n' $ do_nl;
380
+ c_nl = '\r'? '\n' $ do_nl;
381
381
  c_space = [ \t\r\f\v];
382
382
  c_space_nl = c_space | c_nl;
383
383
  c_eof = 0x04 | 0x1a | 0; # ^D, ^Z, EOF
@@ -1241,7 +1241,7 @@ class Parser::Lexer
1241
1241
  fgoto expr_end;
1242
1242
  };
1243
1243
 
1244
- w_space? w_newline
1244
+ w_space* w_newline
1245
1245
  => { fhold; fgoto expr_end; };
1246
1246
 
1247
1247
  c_any
@@ -1,3 +1,3 @@
1
1
  module Parser
2
- VERSION = '2.0.0.beta2'
2
+ VERSION = '2.0.0.beta3'
3
3
  end
data/test/test_lexer.rb CHANGED
@@ -2523,6 +2523,13 @@ class TestLexer < Minitest::Test
2523
2523
  :tIDENTIFIER, "foo")
2524
2524
  end
2525
2525
 
2526
+ def test_bug_expr_arg_comment_newline
2527
+ @lex.state = :expr_arg
2528
+ util_lex_token(" #\nfoo",
2529
+ :tNL, nil,
2530
+ :tIDENTIFIER, 'foo')
2531
+ end
2532
+
2526
2533
  def test_bug_heredoc_backspace_nl
2527
2534
  util_lex_token(" <<'XXX'\nf \\\nXXX\n",
2528
2535
  :tSTRING_BEG, "'",
data/test/test_parser.rb CHANGED
@@ -4135,6 +4135,25 @@ class TestParser < Minitest::Test
4135
4135
  # Miscellanea
4136
4136
  #
4137
4137
 
4138
+ def test_crlf_line_endings
4139
+ with_versions(ALL_VERSIONS) do |_ver, parser|
4140
+ source_file = Parser::Source::Buffer.new('(comments)')
4141
+ source_file.source = "\r\nfoo"
4142
+
4143
+ range = lambda do |from, to|
4144
+ Parser::Source::Range.new(source_file, from, to)
4145
+ end
4146
+
4147
+ ast = parser.parse(source_file)
4148
+
4149
+ assert_equal s(:lvar, :foo),
4150
+ ast
4151
+
4152
+ assert_equal range.call(2, 5),
4153
+ ast.loc.expression
4154
+ end
4155
+ end
4156
+
4138
4157
  def test_begin_cmdarg
4139
4158
  assert_parses(
4140
4159
  s(:send, nil, :p,
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: 2.0.0.beta2
4
+ version: 2.0.0.beta3
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-27 00:00:00.000000000 Z
11
+ date: 2013-05-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ast