summaryrefslogtreecommitdiff
path: root/lib/coderay/scanners/java.rb
diff options
context:
space:
mode:
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(/\{/)