Module: JavaClass::JavaLanguage

Included in:
Dsl::Mixin
Defined in:
lib/javaclass/java_language.rb

Overview

All kind of constant information related to Java and the Java language.

Author

Peter Kofler

Constant Summary collapse

SOURCE =
'.java'
SOURCE_REGEX =
/#{Regexp.escape(SOURCE)}$/
CLASS =
'.class'
CLASS_REGEX =
/#{Regexp.escape(CLASS)}$/
IDENTIFIER_REGEX =

A general Java identifier from Java spec.

/[a-zA-Z_$][a-zA-Z_$0-9]*/
LOWER_IDENTIFIER_REGEX =
/[a-z_$][a-z_$0-9]*/
PACKAGE_REGEX =

A proper package name part. This is more strict than IDENTIFIER_REGEX because it’s all lowercase letters.

/^#{LOWER_IDENTIFIER_REGEX}$/
TYPE_REGEX =

A proper type (class) name. This is more strict than IDENTIFIER_REGEX because it starts with uppercase letters.

/[A-Z][a-zA-Z_$0-9]*/
MEMBER_REGEX =

A proper member (field or method) name. This is more strict than IDENTIFIER_REGEX because it starts with lowercase letters.

/^[a-z][a-zA-Z_$0-9]*$/
SEPARATOR =

Separator between qualified name parts.

'.'
SEPARATOR_REGEX =
Regexp::escape(SEPARATOR)
RESOURCE_FOLDER =
File.join(File.dirname(__FILE__), 'resources')
RESERVED_WORDS =

Reserved words of the Java language.

IO.readlines(File.join(RESOURCE_FOLDER, 'reserved_words.txt')).map { |l| l.chomp }
ISO_COUNTRIES =

List of ISO 3166 two letter country names. Used to recognize valid domain suffix/Java package names.

See

www.iso.org/iso/list-en1-semic-3.txt

IO.readlines(File.join(RESOURCE_FOLDER, 'iso_3166_countries.txt')).map { |l| l.chomp }
US_DOMAINS =

List of non ISO 3166 U.S. domain suffix.

%w| com net biz org |
ALLOWED_PACKAGE_PREFIX =

List of all (usual) allowed Java package prefixes.

%w| java javax | + US_DOMAINS + ISO_COUNTRIES
JDK_PACKAGES =

List of all package prefixes found in the JDK (up to 1.6).

IO.readlines(File.join(RESOURCE_FOLDER, 'jdk_packages.txt')).map { |l| l.chomp }
JDK_PACKAGES_REGEX =
JDK_PACKAGES.collect { |pkg| /^#{pkg}\./ }