diff options
author | murphy <murphy@rubychan.de> | 2010-04-02 02:17:16 +0000 |
---|---|---|
committer | murphy <murphy@rubychan.de> | 2010-04-02 02:17:16 +0000 |
commit | 6d82ed6176a8c3e6a80a6fead652ad659a8892db (patch) | |
tree | 044397c7c0cc33226c242a475dc16dd72dce55ca /lib/coderay | |
parent | b9377ad2633d5f7de92b339f1ad28b11942adfe3 (diff) | |
download | coderay-6d82ed6176a8c3e6a80a6fead652ad659a8892db.tar.gz |
Java Scanner: Package names are recognized, along with some code cleanup. Closes #210.
Diffstat (limited to 'lib/coderay')
-rw-r--r-- | lib/coderay/scanners/java.rb | 20 | ||||
-rw-r--r-- | lib/coderay/styles/alpha.rb | 1 | ||||
-rw-r--r-- | lib/coderay/styles/cycnus.rb | 1 | ||||
-rwxr-xr-x | lib/coderay/token_kinds.rb | 1 |
4 files changed, 17 insertions, 6 deletions
diff --git a/lib/coderay/scanners/java.rb b/lib/coderay/scanners/java.rb index 203385d..2dfb1b6 100644 --- a/lib/coderay/scanners/java.rb +++ b/lib/coderay/scanners/java.rb @@ -52,7 +52,9 @@ module Scanners state = :initial string_delimiter = nil - import_clause = class_name_follows = last_token_dot = false + package_name_expected = false + class_name_follows = false + last_token_dot = false until eos? @@ -71,8 +73,8 @@ module Scanners tokens << [match, :comment] next - elsif import_clause && scan(/ #{IDENT} (?: \. #{IDENT} )* /ox) - kind = :include + elsif package_name_expected && scan(/ #{IDENT} (?: \. #{IDENT} )* /ox) + kind = package_name_expected elsif match = scan(/ #{IDENT} | \[\] /ox) kind = IDENT_KIND[match] @@ -82,15 +84,21 @@ module Scanners kind = :class class_name_follows = false else - import_clause = true if match == 'import' - class_name_follows = true if match == 'class' || match == 'interface' + case match + when 'import' + package_name_expected = :include + when 'package' + package_name_expected = :namespace + when 'class', 'interface' + class_name_follows = true + end end elsif scan(/ \.(?!\d) | [,?:()\[\]}] | -- | \+\+ | && | \|\| | \*\*=? | [-+*\/%^~&|<>=!]=? | <<<?=? | >>>?=? /x) kind = :operator elsif scan(/;/) - import_clause = false + package_name_expected = false kind = :operator elsif scan(/\{/) diff --git a/lib/coderay/styles/alpha.rb b/lib/coderay/styles/alpha.rb index 411ac0c..24b364a 100644 --- a/lib/coderay/styles/alpha.rb +++ b/lib/coderay/styles/alpha.rb @@ -82,6 +82,7 @@ table.CodeRay td { padding: 2px 4px; vertical-align: top; } .iv { color:#33B } .la { color:#970; font-weight:bold } .lv { color:#963 } +.ns { color:#707; font-weight:bold } .oc { color:#40E; font-weight:bold } .op { } .pc { color:#058; font-weight:bold } diff --git a/lib/coderay/styles/cycnus.rb b/lib/coderay/styles/cycnus.rb index a7eba80..7427662 100644 --- a/lib/coderay/styles/cycnus.rb +++ b/lib/coderay/styles/cycnus.rb @@ -83,6 +83,7 @@ table.CodeRay td { padding: 2px 4px; vertical-align: top; } .iv { color:#33B } .la { color:#970; font-weight:bold } .lv { color:#963 } +.ns { color:#707; font-weight:bold } .oc { color:#40E; font-weight:bold } .op { } .pc { color:#058; font-weight:bold } diff --git a/lib/coderay/token_kinds.rb b/lib/coderay/token_kinds.rb index 29bacb4..f6341fb 100755 --- a/lib/coderay/token_kinds.rb +++ b/lib/coderay/token_kinds.rb @@ -49,6 +49,7 @@ module CodeRay :label => 'la', :local_variable => 'lv', :modifier => 'mod', + :namespace => 'ns', :oct => 'oc', :predefined => 'pd', :preprocessor => 'pp', |