Module JavaClass::JavaLanguage
In: lib/javaclass/java_language.rb

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

Author:Peter Kofler

Constants

SOURCE = '.java'
SOURCE_REGEX = /#{Regexp.escape(SOURCE)}$/
CLASS = '.class'
CLASS_REGEX = /#{Regexp.escape(CLASS)}$/
IDENTIFIER_REGEX = /[a-zA-Z_$][a-zA-Z_$0-9]*/   A general Java identifier from Java spec.
LOWER_IDENTIFIER_REGEX = /[a-z_$][a-z_$0-9]*/
PACKAGE_REGEX = /^#{LOWER_IDENTIFIER_REGEX}$/   A proper package name part. This is more strict than IDENTIFIER_REGEX because it‘s all lowercase letters.
TYPE_REGEX = /[A-Z][a-zA-Z_$0-9]*/   A proper type (class) name. This is more strict than IDENTIFIER_REGEX because it starts with uppercase letters.
MEMBER_REGEX = /^[a-z][a-zA-Z_$0-9]*$/   A proper member (field or method) name. This is more strict than IDENTIFIER_REGEX because it starts with lowercase letters.
SEPARATOR = '.'   Separator between qualified name parts.
SEPARATOR_REGEX = Regexp::escape(SEPARATOR)
RESOURCE_FOLDER = File.join(File.dirname(__FILE__), 'resources')
RESERVED_WORDS = IO.readlines(File.join(RESOURCE_FOLDER, 'reserved_words.txt')).map { |l| l.chomp }   Reserved words of the Java language.
ISO_COUNTRIES = IO.readlines(File.join(RESOURCE_FOLDER, 'iso_3166_countries.txt')).map { |l| l.chomp }   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
US_DOMAINS = %w| com net biz org |   List of non ISO 3166 U.S. domain suffix.
ALLOWED_PACKAGE_PREFIX = %w| java javax | + US_DOMAINS + ISO_COUNTRIES   List of all (usual) allowed Java package prefixes.
JDK_PACKAGES = IO.readlines(File.join(RESOURCE_FOLDER, 'jdk_packages.txt')).map { |l| l.chomp }   List of all package prefixes found in the JDK (up to 1.6).
JDK_PACKAGES_REGEX = JDK_PACKAGES.collect { |pkg| /^#{pkg}\./ }

[Validate]