Sha256: e89b4b090f0d948cafdb79504d703c9f8bfc80d5025301a2abdccc287ac423f8

Contents?: true

Size: 768 Bytes

Versions: 18

Compression:

Stored size: 768 Bytes

Contents

require 'frodo/navigation_property/proxy'

module Frodo
  class NavigationProperty
    attr_reader :name, :type, :nullable, :partner

    def initialize(options)
      @name     = options[:name] or raise ArgumentError, 'Name is required'
      @type     = options[:type] or raise ArgumentError, 'Type is required'
      @nullable = options[:nullable] || true
      @partner  = options[:partner]
    end

    def nav_type
      @nav_type ||= type =~ /^Collection/ ? :collection : :entity
    end

    def entity_type
      @entity_type ||= type.split(/[()]/).last
    end

    def self.build(nav_property_xml)
      options = nav_property_xml.attributes.map do |name, attr|
        [name.downcase.to_sym, attr.value]
      end.to_h
      new(options)
    end
  end
end

Version data entries

18 entries across 18 versions & 1 rubygems

Version Path
frodo-0.12.8 lib/frodo/navigation_property.rb
frodo-0.12.7 lib/frodo/navigation_property.rb
frodo-0.12.6 lib/frodo/navigation_property.rb
frodo-0.12.5 lib/frodo/navigation_property.rb
frodo-0.12.4 lib/frodo/navigation_property.rb
frodo-0.12.2 lib/frodo/navigation_property.rb
frodo-0.12.1 lib/frodo/navigation_property.rb
frodo-0.12.0 lib/frodo/navigation_property.rb
frodo-0.11.0 lib/frodo/navigation_property.rb
frodo-0.10.8 lib/frodo/navigation_property.rb
frodo-0.10.7 lib/frodo/navigation_property.rb
frodo-0.10.6 lib/frodo/navigation_property.rb
frodo-0.10.5 lib/frodo/navigation_property.rb
frodo-0.10.4 lib/frodo/navigation_property.rb
frodo-0.10.3 lib/frodo/navigation_property.rb
frodo-0.10.2 lib/frodo/navigation_property.rb
frodo-0.10.1 lib/frodo/navigation_property.rb
frodo-0.10.0 lib/frodo/navigation_property.rb