summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/coderay/scanners/ruby.rb35
1 files changed, 18 insertions, 17 deletions
diff --git a/lib/coderay/scanners/ruby.rb b/lib/coderay/scanners/ruby.rb
index 5b8de42..5763fc6 100644
--- a/lib/coderay/scanners/ruby.rb
+++ b/lib/coderay/scanners/ruby.rb
@@ -62,7 +62,7 @@ module Scanners
if match = scan(/[ \t\f\v]+/)
encoder.text_token match, :space
- elsif match = scan(/\n/)
+ elsif skip(/\n/)
if heredocs
unscan # heredoc scanning needs \n at start
state = heredocs.shift
@@ -70,22 +70,23 @@ module Scanners
heredocs = nil if heredocs.empty?
else
state = :initial if state == :undef_comma_expected
- encoder.text_token match, :space
+ encoder.text_token "\n", :space
value_expected = true
end
elsif match = scan(bol? ? / \#(!)?.* | #{patterns::RUBYDOC_OR_DATA} /ox : /\#.*/)
encoder.text_token match, self[1] ? :doctype : :comment
- elsif match = scan(/\\\n/)
+ elsif skip(/\\\n/)
if heredocs
unscan # heredoc scanning needs \n at start
- encoder.text_token scan(/\\/), :space
+ skip(/\\/)
+ encoder.text_token '\\', :space
state = heredocs.shift
encoder.begin_group state.type
heredocs = nil if heredocs.empty?
else
- encoder.text_token match, :space
+ encoder.text_token "\\\n", :space
end
elsif state == :initial
@@ -96,7 +97,7 @@ module Scanners
/#{patterns::METHOD_NAME}/o)
kind = patterns::IDENT_KIND[match]
- if value_expected != :colon_expected && scan(/:(?!:)/)
+ if value_expected != :colon_expected && skip(/:(?!:)/)
value_expected = true
encoder.text_token match, :key
encoder.text_token ':', :operator
@@ -185,9 +186,9 @@ module Scanners
value_expected = false
encoder.text_token match, :instance_variable
- elsif value_expected && match = scan(/\//)
+ elsif value_expected && skip(/\//)
encoder.begin_group :regexp
- encoder.text_token match, :delimiter
+ encoder.text_token '/', :delimiter
state = self.class::StringState.new :regexp, true, '/'
elsif match = scan(value_expected ? /[-+]?#{patterns::NUMERIC}/o : /#{patterns::NUMERIC}/o)
@@ -232,10 +233,10 @@ module Scanners
value_expected = match == '?' ? :colon_expected : true
encoder.text_token match, :operator
- elsif match = scan(/`/)
+ elsif skip(/`/)
encoder.begin_group :shell
- encoder.text_token match, :delimiter
- state = self.class::StringState.new :shell, true, match
+ encoder.text_token '`', :delimiter
+ state = self.class::StringState.new :shell, true, '`'
elsif match = scan(unicode ? /#{patterns::GLOBAL_VARIABLE}/uo :
/#{patterns::GLOBAL_VARIABLE}/o)
@@ -247,8 +248,8 @@ module Scanners
encoder.text_token match, :class_variable
value_expected = false
- elsif match = scan(/\\\z/)
- encoder.text_token match, :space
+ elsif skip(/\\\z/)
+ encoder.text_token '\\', :space
else
if method_call_expected
@@ -300,8 +301,8 @@ module Scanners
end
elsif state == :module_expected
- if match = scan(/<</)
- encoder.text_token match, :operator
+ if skip(/<</)
+ encoder.text_token '<<', :operator
else
state = :initial
if match = scan(unicode ? / (?:#{patterns::IDENT}::)* #{patterns::IDENT} /oux :
@@ -332,8 +333,8 @@ module Scanners
end
elsif state == :undef_comma_expected
- if match = scan(/,/)
- encoder.text_token match, :operator
+ if skip(/,/)
+ encoder.text_token ',', :operator
state = :undef_expected
else
state = :initial