Class: JavaClass::JavaName
Overview
Special string with methods to work with Java class or package names.
- Author
-
Peter Kofler
Instance Attribute Summary collapse
-
#full_name ⇒ Object
readonly
Full normalized class name of this class.
-
#package ⇒ Object
readonly
Return the package name of a classname or the superpackage of a package.
-
#simple_name ⇒ Object
readonly
Return the simple name of this class or package.
Instance Method Summary collapse
-
#initialize(string) ⇒ JavaName
constructor
A new instance of JavaName.
-
#same_or_subpackage_of?(packages) ⇒ Boolean
Return
true
if this class is in same or in a subpackage of the given Java packages or if this package is same or a subpackage (with .). -
#split_simple_name(pos) ⇒ Object
Split the simple name at the camel case boundary pos and return two parts.
-
#subpackage_of?(packages) ⇒ Boolean
Return
true
if this class is in a subpackage of the given Java packages . -
#to_class_file ⇒ Object
Return the Java class file name of this class, e.g.
-
#to_classname ⇒ Object
Return the full classname of this class, e.g.
-
#to_java_file ⇒ Object
Return the Java source file name of this class, e.g.
- #to_javaname ⇒ Object
-
#to_jvmname ⇒ Object
Return the VM name of this class, e.g.
Methods inherited from String
#double, #single, #u1, #u2, #u4, #u8
Constructor Details
#initialize(string) ⇒ JavaName
Returns a new instance of JavaName.
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/javaclass/java_name.rb', line 15 def initialize(string) super string @full_name = string.gsub(/\/|\\/,'.').sub(/\.(class|java|".*|<.*)?$/, '') matches = @full_name.scan(/^(.+)\.([A-Z][^.]*)$/)[0] if matches @package = matches[0].to_javaname @simple_name = matches[1].to_javaname elsif @full_name =~ /^[A-Z][^.]*$/ # simple name @package = '' @simple_name = self else # only package @package = self @simple_name = '' end end |
Instance Attribute Details
#full_name ⇒ Object (readonly)
Full normalized class name of this class.
13 14 15 |
# File 'lib/javaclass/java_name.rb', line 13 def full_name @full_name end |
#package ⇒ Object (readonly)
Return the package name of a classname or the superpackage of a package. Return an empty String if default package.
8 9 10 |
# File 'lib/javaclass/java_name.rb', line 8 def package @package end |
#simple_name ⇒ Object (readonly)
Return the simple name of this class or package.
11 12 13 |
# File 'lib/javaclass/java_name.rb', line 11 def simple_name @simple_name end |
Instance Method Details
#same_or_subpackage_of?(packages) ⇒ Boolean
Return true
if this class is in same or in a subpackage of the given Java packages or if this package is same or a subpackage (with .).
36 37 38 |
# File 'lib/javaclass/java_name.rb', line 36 def same_or_subpackage_of?(packages) packages.find {|pkg| @package == pkg } != nil || subpackage_of?(packages) end |
#split_simple_name(pos) ⇒ Object
Split the simple name at the camel case boundary pos and return two parts. pos may be < 0 for counting backwards.
71 72 73 74 75 76 77 |
# File 'lib/javaclass/java_name.rb', line 71 def split_simple_name(pos) parts = @simple_name.scan(/([A-Z][^A-Z]+)/).flatten pos = parts.size + pos +1 if pos < 0 return ['', @simple_name] if pos <= 0 return [@simple_name, ''] if pos >= parts.size [parts[0...pos].join, parts[pos..-1].join] end |
#subpackage_of?(packages) ⇒ Boolean
Return true
if this class is in a subpackage of the given Java packages .
41 42 43 |
# File 'lib/javaclass/java_name.rb', line 41 def subpackage_of?(packages) packages.find {|pkg| @package =~ /^#{Regexp.escape(pkg)}\./ } != nil end |
#to_class_file ⇒ Object
Return the Java class file name of this class, e.g. java/lang/Object.class
.
65 66 67 |
# File 'lib/javaclass/java_name.rb', line 65 def to_class_file (to_jvmname + '.class').to_javaname end |
#to_classname ⇒ Object
Return the full classname of this class, e.g. java.lang.Object
.
50 51 52 |
# File 'lib/javaclass/java_name.rb', line 50 def to_classname @full_name.to_javaname end |
#to_java_file ⇒ Object
Return the Java source file name of this class, e.g. java/lang/Object.java
.
60 61 62 |
# File 'lib/javaclass/java_name.rb', line 60 def to_java_file (to_jvmname + '.java').to_javaname end |
#to_javaname ⇒ Object
45 46 47 |
# File 'lib/javaclass/java_name.rb', line 45 def to_javaname self end |
#to_jvmname ⇒ Object
Return the VM name of this class, e.g. java/lang/Object
.
55 56 57 |
# File 'lib/javaclass/java_name.rb', line 55 def to_jvmname (@full_name.gsub(/\./, '/')).to_javaname end |