Class: FlexSourceInspector::Inspector

Inherits:
Object
  • Object
show all
Defined in:
lib/flex-source-inspector.rb

Class Method Summary collapse

Class Method Details

.add_to_used(used, project_files, class_declaration, src_folder) ⇒ Object



39
40
41
42
43
44
# File 'lib/flex-source-inspector.rb', line 39

def self.add_to_used(used, project_files, class_declaration, src_folder)
  project_files.each{ |file| 
    cleaned = file.gsub( src_folder, "")
    used << file if is_declared?(cleaned, class_declaration)
  }
end

.convert_to_class_name(file_name) ⇒ Object



69
70
71
72
73
74
75
76
77
78
79
# File 'lib/flex-source-inspector.rb', line 69

def self.convert_to_class_name( file_name )
  out = file_name
  out.gsub!("/", ".")
  out.gsub!(".as", "")
  out.gsub!(".mxml", "")
  if out[0] == "."
    out = out[1..out.length]
  end
  out.gsub!(/(.*)\.(.*)/, '\1:\2' )
  out
end

.inspect(src_folder, *link_reports) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/flex-source-inspector.rb', line 7

def self.inspect( src_folder, *link_reports)

  puts "\nFlex Source Inspector : Version: #{Flex::Source::Inspector::VERSION}"
  puts "-- inspect --"

  raise "FlexSourceInspector::Error source folder doesn't exist #{src_folder}" unless File.exists? src_folder

  project_files = Dir["#{src_folder}/**/*.as"]
  project_files.concat Dir["#{src_folder}/**/*.mxml"]
  
  used = Array.new

  puts "src folder: #{src_folder}"

  names = link_reports.map{ |n| File.basename(n)}
  puts "reading: #{names.join(', ')}"
  link_reports.each{|report|
    raise "FlexSourceInspector::Error: #{report} doesn't exist!" unless File.exists?( report )
    
    file = File.open( report )
    doc = REXML::Document.new file

    doc.elements.each("//script"){ |script|
      name = script.attributes["name"]
      add_to_used( used, project_files, name, src_folder )
    }
  }
  unused = project_files - used
  lines = unused.join("\n")
  "result:\n#{lines}\nend"
end

.is_declared?(file_name, declaration) ⇒ Boolean

A declaration can either be: “/Path/to/file/com/MyClass.as” or “/Path/to/My.swc(com:MyClass)” We check to see if either declaration matches the given file.

Returns:

  • (Boolean)


53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'lib/flex-source-inspector.rb', line 53

def self.is_declared?( file_name, declaration )

  # Check for a direct file declaration
  if declaration.include? file_name
    return true
  end

  # Check for a swc declaration
  class_name = convert_to_class_name file_name

  if declaration.include? class_name
    return true
  end
  false
end