Module: JavaClass::JavaNameScanner
- Included in:
- Dsl::Mixin
- Defined in:
- lib/javaclass/java_name_scanner.rb
Overview
Mixin with logic to scan for hard coded class names.
- Author
-
Peter Kofler
Constant Summary collapse
- TEXT_REGEX =
/ (?:^|>|"|'|=|:|!) \s* ( (?:#{JavaLanguage::IDENTIFIER_REGEX}#{JavaLanguage::SEPARATOR_REGEX})+#{JavaLanguage::TYPE_REGEX} ) \s* (?:$|<|"|'|:) /x
Instance Method Summary collapse
- #scan_config_for_3rd_party_class_names(path, ignorepattern = /^\./) ⇒ Object
-
#scan_config_for_class_names(path, ignorepattern = /^\./) ⇒ Object
Find all possible class names in all XML and property files under path and optionally ignore ignorepattern.
-
#scan_text_for_class_names(string) ⇒ Object
Extract the list of possible class names from the given string .
Instance Method Details
#scan_config_for_3rd_party_class_names(path, ignorepattern = /^\./) ⇒ Object
20 21 22 23 24 25 26 |
# File 'lib/javaclass/java_name_scanner.rb', line 20 def scan_config_for_3rd_party_class_names(path, ignorepattern=/^\./) scan_config_for_class_names(path, ignorepattern).reject { |name| name.in_jdk? } # need abstraction for - .reject { |name| name.in_jdk? } - have it three times # maybe a mixin for enumerables containing JavaTypes #JavaNameEnumerable with - .reject { |name| name.in_jdk? } - und anderen? reject_in_jdk = 3rd Party # and find_all { |n| n.same_or_subpackage_of?(x) } -- also very often = in_package() end |
#scan_config_for_class_names(path, ignorepattern = /^\./) ⇒ Object
Find all possible class names in all XML and property files under path and optionally ignore ignorepattern
29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/javaclass/java_name_scanner.rb', line 29 def scan_config_for_class_names(path, ignorepattern=/^\./) return [] unless File.exist? path if File.file?(path) if path =~ /\.xml$|\.properties$|MANIFEST.MF$/ scan_text_for_class_names(IO.readlines(path).join) else [] end else Dir.entries(path).reject { |n| n =~ /^\./ or n=~ ignorepattern }. map { |n| scan_config_for_class_names(File.join(path, n), ignorepattern) }. flatten.sort end end |
#scan_text_for_class_names(string) ⇒ Object
Extract the list of possible class names from the given string . This will only find names with at least one package name.
54 55 56 |
# File 'lib/javaclass/java_name_scanner.rb', line 54 def scan_text_for_class_names(string) string.scan(TEXT_REGEX).flatten.map { |match| JavaQualifiedName.new(match) } end |