9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
# File 'lib/core_data/data_model.rb', line 9
def initialize(data_model)
loop do
case data_model
when File, /^\<\?xml/
(data_model = ::Nokogiri::XML(data_model)) && redo
when String
case data_model
when /\.xcdatamodeld?$/
(data_model = Dir[File.join(data_model, '/**/contents')].first) && redo
else
(data_model = ::File.read(data_model)) && redo
end
when ::Nokogiri::XML::Document
break
else
raise ArgumentError
end
end
model = data_model.at_xpath('model')
@name = model['name']
@version = model['systemVersion']
@entities = model.xpath('entity').collect { |element| Entity.new(element) }
end
|