class LinkHeaderParser::LinkHeadersCollection

Attributes

base[R]
headers[R]

Public Class Methods

new(*headers, base:) click to toggle source

@param headers [Array<String>] @param base [String]

# File lib/link_header_parser/link_headers_collection.rb, line 13
def initialize(*headers, base:)
  @headers = headers.to_ary.flatten.map(&:to_str)
  @base = base.to_str

  distinct_headers.each { |header| push(LinkHeader.new(header, base: base)) }
end

Public Instance Methods

group_by_relation_type() click to toggle source

@return [Hash{Symbol => Array<LinkHeaderParser::LinkHeader>}]

# File lib/link_header_parser/link_headers_collection.rb, line 21
def group_by_relation_type
  relation_types.map do |relation_type|
    [relation_type, find_all { |member| member.relation_types.include?(relation_type) }]
  end.to_h.transform_keys(&:to_sym)
end
inspect() click to toggle source
# File lib/link_header_parser/link_headers_collection.rb, line 27
def inspect
  format(%(#<#{self.class.name}:%#0x headers: #{headers.inspect}, relation_types: #{relation_types.inspect}>), object_id)
end
relation_types() click to toggle source

@return [Array<String>]

# File lib/link_header_parser/link_headers_collection.rb, line 32
def relation_types
  @relation_types ||= flat_map(&:relation_types).uniq.sort
end

Private Instance Methods

distinct_headers() click to toggle source
# File lib/link_header_parser/link_headers_collection.rb, line 40
def distinct_headers
  @distinct_headers ||= headers.flat_map { |header| header.split(/,(?=[\s|<])/) }.map(&:strip)
end
members() click to toggle source
# File lib/link_header_parser/link_headers_collection.rb, line 44
def members
  @members ||= []
end