Sha256: 09c0618200fa1895d2af4f78d7856202fae207d4ee17d1451159d13e4e9f0cf9

Contents?: true

Size: 770 Bytes

Versions: 6

Compression:

Stored size: 770 Bytes

Contents

require 'odata4/navigation_property/proxy'

module OData4
  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

6 entries across 6 versions & 1 rubygems

Version Path
odata4-0.9.1 lib/odata4/navigation_property.rb
odata4-0.9.0 lib/odata4/navigation_property.rb
odata4-0.8.2 lib/odata4/navigation_property.rb
odata4-0.8.1 lib/odata4/navigation_property.rb
odata4-0.8.0 lib/odata4/navigation_property.rb
odata4-0.7.0 lib/odata4/navigation_property.rb