Class: StoryboardLint::SourceScanner

Inherits:
Object
  • Object
show all
Defined in:
lib/storyboardlint.rb

Instance Method Summary collapse

Constructor Details

#initialize(src_root, matcher) ⇒ SourceScanner



68
69
70
71
72
# File 'lib/storyboardlint.rb', line 68

def initialize(src_root, matcher)
  @matcher = matcher
  @src_root = src_root
  @scan_performed = false    
end

Instance Method Details

#class_namesObject



116
117
118
119
# File 'lib/storyboardlint.rb', line 116

def class_names
  scan_files
  @class_names
end

#reuse_idsObject



131
132
133
134
# File 'lib/storyboardlint.rb', line 131

def reuse_ids
  scan_files
  @reuse_ids
end

#scan_filesObject



81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
# File 'lib/storyboardlint.rb', line 81

def scan_files
  if !@scan_performed
    @class_names ||= []
    @segue_ids ||= []
    @storyboard_ids ||= []
    @reuse_ids ||= []

    source_files.each do |source_file|
      File.readlines(source_file).each_with_index do |line, idx|
        # class names
        line.scan(@matcher.class_regex).each do |match|
          @class_names << {:file => source_file, :line => idx + 1, :class_name => match[0]}
        end
        
        # segue ids
        line.scan(@matcher.segue_id_regex_source).each do |match|
          @segue_ids << {:file => source_file, :line => idx + 1, :id => match[0]}
        end
        
        # storyboard ids
        line.scan(@matcher.storyboard_id_regex_source).each do |match|
          @storyboard_ids << {:file => source_file, :line => idx + 1, :id => match[0]}
        end
        
        # reuse ids
        line.scan(@matcher.reuse_id_regex_source).each do |match|
          @reuse_ids << {:file => source_file, :line => idx + 1, :id => match[0]}
        end
      end
    end
    
    @scan_performed = true
  end
end

#segue_idsObject



121
122
123
124
# File 'lib/storyboardlint.rb', line 121

def segue_ids
  scan_files
  @segue_ids
end

#source_filesObject



74
75
76
77
78
79
# File 'lib/storyboardlint.rb', line 74

def source_files
  return @source_files if @source_files
  
  # find all *.h, *.c, *.m and *.mm files
  @source_files = Dir.glob(File.join(@src_root, "**/*.{h,c,m,mm}"))
end

#storyboard_idsObject



126
127
128
129
# File 'lib/storyboardlint.rb', line 126

def storyboard_ids
  scan_files
  @storyboard_ids
end