Sha256: e8c270a06db602848ed5d625f46fefcf226e30b991837a6442cfeaef3428fc7e

Contents?: true

Size: 998 Bytes

Versions: 1

Compression:

Stored size: 998 Bytes

Contents

# frozen_string_literal: true

require 'nokogiri'

module CoreData
  class DataModel
    attr_reader :name, :version, :entities

    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
  end
end

require 'core_data/data_model/entity'
require 'core_data/data_model/attribute'
require 'core_data/data_model/relationship'

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
core_data-0.2.0 ./lib/core_data/data_model.rb