diff options
author | murphy <murphy@rubychan.de> | 2008-09-21 16:25:44 +0000 |
---|---|---|
committer | murphy <murphy@rubychan.de> | 2008-09-21 16:25:44 +0000 |
commit | 9a5f5e6217db0b7689b64ca0892feacf32be3d66 (patch) | |
tree | 98a25e39c452f0d7d1268810b014d929ab9930cc /lib/coderay/scanners/java_script.rb | |
parent | 41acfacb91970c8fa4e8b34f35c718eb329a3733 (diff) | |
download | coderay-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.rb | 28 |
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 |