summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKornelius Kalnbach <murphy@rubychan.de>2013-07-13 20:31:34 +0200
committerKornelius Kalnbach <murphy@rubychan.de>2013-07-13 20:31:34 +0200
commitbbe4d72ba785f1bd6fd703d63b096a907da1b09f (patch)
tree1e20992270746b8eb3e7ebaa0af3e91ebb9b33bb
parent4c2486353a2e5e7e393ac97e556e4e29cac6bcc3 (diff)
downloadcoderay-bbe4d72ba785f1bd6fd703d63b096a907da1b09f.tar.gz
tweak numeral tokens handling (#147)
-rw-r--r--lib/coderay/scanners/go.rb20
1 files changed, 10 insertions, 10 deletions
diff --git a/lib/coderay/scanners/go.rb b/lib/coderay/scanners/go.rb
index eb06fb0..938da9d 100644
--- a/lib/coderay/scanners/go.rb
+++ b/lib/coderay/scanners/go.rb
@@ -31,7 +31,7 @@ module Scanners
'nil', 'iota',
'true', 'false',
] # :nodoc:
-
+
PREDEFINED_FUNCTIONS = %w[
append cap close complex copy delete imag len
make new panic print println real recover
@@ -73,7 +73,7 @@ module Scanners
elsif match = scan(%r! // [^\n\\]* (?: \\. [^\n\\]* )* | /\* (?: .*? \*/ | .* ) !mx)
encoder.text_token match, :comment
- elsif match = scan(/ [-+*=<>?:;,!&^|()\[\]{}~%]+ | \/=? | \.(?!\d) /x)
+ elsif match = scan(/ <?- (?![\d.]) | [+*=<>?:;,!&^|()\[\]{}~%]+ | \/=? | \.(?!\d) /x)
if case_expected
label_expected = true if match == ':'
case_expected = false
@@ -129,24 +129,24 @@ module Scanners
elsif match = scan(/\$/)
encoder.text_token match, :ident
-
- elsif match = scan(/\d*(\.\d*)?([eE][+-]?\d+)?i/)
+
+ elsif match = scan(/-?\d*(\.\d*)?([eE][+-]?\d+)?i/)
label_expected = false
encoder.text_token match, :imaginary
-
- elsif match = scan(/0[xX][0-9A-Fa-f]+/)
+
+ elsif match = scan(/-?0[xX][0-9A-Fa-f]+/)
label_expected = false
encoder.text_token match, :hex
- elsif match = scan(/(?:0[0-7]+)(?![89.eEfF])/)
+ elsif match = scan(/-?(?:0[0-7]+)(?![89.eEfF])/)
label_expected = false
encoder.text_token match, :octal
- elsif match = scan(/\d|\d*\.\d+(?:[eE][+-]?\d+)?|\d+[eE][+-]?\d+/)
+ elsif match = scan(/-?(?:\d*\.\d+|\d+\.)(?:[eE][+-]?\d+)?|\d+[eE][+-]?\d+/)
label_expected = false
encoder.text_token match, :float
-
- elsif match = scan(/(?:\d+)(?![.eEfF])L?L?/)
+
+ elsif match = scan(/-?(?:\d+)(?![.eEfF])L?L?/)
label_expected = false
encoder.text_token match, :integer