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