Sha256: bee725d47a68de62dbf33af828755cd00ffb0ba0b2d07d7acc748c5608979158

Contents?: true

Size: 790 Bytes

Versions: 11

Compression:

Stored size: 790 Bytes

Contents

module RailsConnector
  # @api public
  class LinkList < Array
    def initialize(link_definitions)
      if link_definitions.blank?
        super([])
      else
        super(build_links(link_definitions.map(&:symbolize_keys)))
      end
    end

    # @api public
    def destination_objects
      map { |link| link.destination_object }.compact
    end

    private

    def build_links(link_definitions)
      object_ids = link_definitions.map { |link_data| link_data[:destination] }.compact.uniq
      objects = object_ids.empty? ? [] : Obj.find(object_ids)
      link_definitions.each_with_object([]) do |link_data, links|
        link = Link.new(link_data, objects.detect { |o| o && o.id == link_data[:destination] })
        links << link if link.active?
      end
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
infopark_fiona_connector-7.0.1.6.1.6.rc4 lib/rails_connector/link_list.rb
infopark_fiona_connector-7.0.1.6.1.6.rc3 lib/rails_connector/link_list.rb
infopark_fiona_connector-7.0.1.6.1.6.rc2 lib/rails_connector/link_list.rb
infopark_fiona_connector-7.0.1.6.1.6.rc1 lib/rails_connector/link_list.rb
infopark_fiona_connector-7.0.1.5.2.7.rc1 lib/rails_connector/link_list.rb
infopark_fiona_connector-7.0.1.5.2.4.rc2 lib/rails_connector/link_list.rb
infopark_fiona_connector-7.0.1.5.2.4.rc1 lib/rails_connector/link_list.rb
infopark_fiona_connector-7.0.1.5.2.3.rc8 lib/rails_connector/link_list.rb
infopark_fiona_connector-7.0.1.5.2.3.rc7 lib/rails_connector/link_list.rb
infopark_fiona_connector-7.0.1.5.2.3.rc6 lib/rails_connector/link_list.rb
infopark_fiona_connector-7.0.1.5.2.3.rc5 lib/rails_connector/link_list.rb