class Ovaltine::Storyboard

Attributes

cell_reuse_identifiers[R]
filepaths[R]
name[R]
segue_identifiers[R]
view_controller_identifiers[R]

Public Class Methods

new(name, filepaths) click to toggle source
# File lib/ovaltine/storyboard.rb, line 7
def initialize name, filepaths
  @name, @filepaths = name, filepaths
  @cell_reuse_identifiers = []
  @segue_identifiers = []
  @view_controller_identifiers = []
  filepaths.each {|f| parse(File.expand_path(f))}
end

Public Instance Methods

parse(path) click to toggle source
# File lib/ovaltine/storyboard.rb, line 15
def parse path
  load_dependencies
  document = REXML::Document.new(File.new(path))
  document.get_elements('//').each do |node|
    parse_identifiers(node)
  end
end

Private Instance Methods

load_dependencies() click to toggle source
# File lib/ovaltine/storyboard.rb, line 25
def load_dependencies
  unless @@loaded ||= false
    require 'fileutils'
    require 'pathname'
    require 'rexml/document'
    @@loaded = true
  end
end
parse_identifiers(node) click to toggle source
# File lib/ovaltine/storyboard.rb, line 34
def parse_identifiers node
  case node.name
  when 'segue'
    if identifier = node.attributes["identifier"]
      segue_identifiers << identifier unless segue_identifiers.include?(identifier)
    end
  when /viewcontroller/i, 'navigationController'
    if identifier = node.attributes["storyboardIdentifier"]
      view_controller_identifiers << identifier unless view_controller_identifiers.include?(identifier)
    end
  when /cell/i
    if identifier = node.attributes["reuseIdentifier"]
      cell_reuse_identifiers << identifier unless cell_reuse_identifiers.include?(identifier)
    end
  end
end