summaryrefslogtreecommitdiff
path: root/lib/coderay/scanners/java.rb
diff options
context:
space:
mode:
authormurphy <murphy@rubychan.de>2010-04-02 02:17:16 +0000
committermurphy <murphy@rubychan.de>2010-04-02 02:17:16 +0000
commit6d82ed6176a8c3e6a80a6fead652ad659a8892db (patch)
tree044397c7c0cc33226c242a475dc16dd72dce55ca /lib/coderay/scanners/java.rb
parentb9377ad2633d5f7de92b339f1ad28b11942adfe3 (diff)
downloadcoderay-6d82ed6176a8c3e6a80a6fead652ad659a8892db.tar.gz
Java Scanner: Package names are recognized, along with some code cleanup. Closes #210.
Diffstat (limited to 'lib/coderay/scanners/java.rb')
-rw-r--r--lib/coderay/scanners/java.rb20
1 files changed, 14 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(/\{/)