summaryrefslogtreecommitdiff
path: root/lib/coderay/scanners/java_script.rb
diff options
context:
space:
mode:
authormurphy <murphy@rubychan.de>2008-09-21 16:25:44 +0000
committermurphy <murphy@rubychan.de>2008-09-21 16:25:44 +0000
commit9a5f5e6217db0b7689b64ca0892feacf32be3d66 (patch)
tree98a25e39c452f0d7d1268810b014d929ab9930cc /lib/coderay/scanners/java_script.rb
parent41acfacb91970c8fa4e8b34f35c718eb329a3733 (diff)
downloadcoderay-9a5f5e6217db0b7689b64ca0892feacf32be3d66.tar.gz
New: *Java Scanner* (closes #42).
* Based on JavaScript, does a good job, but may need more polish. * Java::BuiltinTypes::List is a helper constant that contains 2389 Java types. ** The list was generated from TextMate's Java bundle with the help of SimpleRegexpScanner. * I added the JRuby core classes as example code for testing (1.8 MB) JavaScript Scanner: * Fixed recognition of floats and algebraic signs. ** Still needs work - we need to distinguish i-1 from i+-1. More changes: * New: "SimpleRegexpScanner":http://murfy.de/simple-regexp-scanner * Added new token class :annotation along with CSS styles. ** Should be useful for Python, too. * coderay_suite warns if no scanner was found for this language. * PluginHost#default can be called without parameter (will return default id)
Diffstat (limited to 'lib/coderay/scanners/java_script.rb')
-rw-r--r--lib/coderay/scanners/java_script.rb28
1 files changed, 12 insertions, 16 deletions
diff --git a/lib/coderay/scanners/java_script.rb b/lib/coderay/scanners/java_script.rb
index f13c5d3..b3dd52e 100644
--- a/lib/coderay/scanners/java_script.rb
+++ b/lib/coderay/scanners/java_script.rb
@@ -68,10 +68,18 @@ module Scanners
value_expected = true
kind = :comment
- elsif scan(/[+-]?(?:\d+)(?![.eEfF])/)
- value_expected = false
- kind = :integer
-
+ elsif check(/\d/)
+ key_expected = value_expected = false
+ if scan(/0[xX][0-9A-Fa-f]+/)
+ kind = :hex
+ elsif scan(/(?>0[0-7]+)(?![89.eEfF])/)
+ kind = :oct
+ elsif scan(/\d+[fF]|\d*\.\d+(?:[eE][+-]?\d+)?[fF]?|\d+[eE][+-]?\d+[fF]?/)
+ kind = :float
+ elsif scan(/\d+/)
+ kind = :integer
+ end
+
elsif match = scan(/ [-+*=<>?:;,!&^|(\[{~%]+ | \.(?!\d) /x)
value_expected = true
last_operator = match[-1]
@@ -111,18 +119,6 @@ module Scanners
key_expected = false
kind = :operator
- elsif scan(/0[xX][0-9A-Fa-f]+/)
- key_expected = value_expected = false
- kind = :hex
-
- elsif scan(/(?:0[0-7]+)(?![89.eEfF])/)
- key_expected = value_expected = false
- kind = :oct
-
- elsif scan(/\d[fF]?|\d*\.\d+(?:[eE][+-]?\d+)?[fF]?|\d+[eE][+-]?\d+[fF]?/)
- key_expected = value_expected = false
- kind = :float
-
else
getch
kind = :error