class Gyro::Parser::XCDataModel::XCDataModel

Represents the whole xcdatamodel file struture, once parsed

Attributes

entities[RW]

Public Class Methods

new(xcdatamodel_dir) click to toggle source
# File lib/gyro/parser/xcdatamodel/xcdatamodel.rb, line 38
def initialize(xcdatamodel_dir)
  is_xcdatamodeld = xcdatamodel_dir.extname != '.xcdatamodeld'
  Gyro::Log.fail!(%(Please target an '.xcdatamodel' file inside your xcdatamodeld)) unless is_xcdatamodeld
  if xcdatamodel_dir.parent.extname == '.xcdatamodeld'
    xcdatamodeld_info_message = 'You are using an xcdatamodeld, ' \
                                'please be sure you target the correct version of your xcdatamodel.' \
                                ' Current version used by gyro is: ' + xcdatamodel_dir.basename.to_path
    Gyro::Log.info(xcdatamodeld_info_message)
  end
  file_contents = xcdatamodel_dir + 'contents'
  Gyro::Log.fail!('Unable to find contents of xcdatamodel') unless file_contents.exist?
  @entities = {}
  document_xml = File.open(file_contents) { |file| Document.new(file) }
  load_entities(document_xml)
end

Public Instance Methods

to_h() click to toggle source
# File lib/gyro/parser/xcdatamodel/xcdatamodel.rb, line 54
def to_h
  { 'entities' => entities.values.map(&:to_h) }
end
to_s() click to toggle source
# File lib/gyro/parser/xcdatamodel/xcdatamodel.rb, line 58
def to_s
  @entities.values.map(&:to_s).join
end

Private Instance Methods

load_entities(document_xml) click to toggle source
# File lib/gyro/parser/xcdatamodel/xcdatamodel.rb, line 64
def load_entities(document_xml)
  document_xml.root.each_element('//entity') do |node|
    entity = Entity.new(node)
    @entities[entity.name] = entity
  end
end