class StoryboardLint::StoryboardScanner
Public Class Methods
new(src_root)
click to toggle source
# File lib/storyboardlint.rb, line 11 def initialize(src_root) if !File.directory?(src_root) raise ArgumentError, "The directory '#{src_root}' does not exist." end @src_root = src_root @scan_performed = false end
Public Instance Methods
custom_class_names()
click to toggle source
# File lib/storyboardlint.rb, line 49 def custom_class_names scan_files @custom_class_names end
reuse_ids()
click to toggle source
# File lib/storyboardlint.rb, line 44 def reuse_ids scan_files @reuse_ids end
segue_ids()
click to toggle source
# File lib/storyboardlint.rb, line 34 def segue_ids scan_files @segue_ids end
storyboard_files()
click to toggle source
# File lib/storyboardlint.rb, line 20 def storyboard_files return @sb_files if @sb_files # find all storyboard files... @sb_files = Dir.glob(File.join(@src_root, "**/*.storyboard")) end
storyboard_ids()
click to toggle source
# File lib/storyboardlint.rb, line 39 def storyboard_ids scan_files @storyboard_ids end
xib_files()
click to toggle source
# File lib/storyboardlint.rb, line 27 def xib_files return @xib_files if @xib_files # find all XIB files... @xib_files = Dir.glob(File.join(@src_root, "**/*.xib")) end
Private Instance Methods
scan_files()
click to toggle source
# File lib/storyboardlint.rb, line 56 def scan_files if !@scan_performed @segue_ids ||= [] @storyboard_ids ||= [] @reuse_ids ||= [] @custom_class_names = [] storyboard_files.each do |sb_file| sb_source = File.open(sb_file) doc = Nokogiri::XML(sb_source) doc.xpath('//segue').each do |element| seg_id = element.attr('identifier') @segue_ids << {:file => sb_file, :id => seg_id.to_s} if seg_id end @storyboard_ids += doc.xpath("//@storyboardIdentifier").to_a.map {|match| {:file => sb_file, :id => match.to_s}} @reuse_ids += doc.xpath("//@reuseIdentifier").to_a.map {|match| {:file => sb_file, :id => match.to_s}} @custom_class_names += doc.xpath("//@customClass").to_a.map {|match| {:file => sb_file, :class_name => match.to_s}} end xib_files.each do |xib_file| xib_source = File.open(xib_file) doc = Nokogiri::XML(xib_source) @reuse_ids += doc.xpath("//@reuseIdentifier").to_a.map {|match| {:file => xib_file, :id => match.to_s}} end @scan_performed = true end end