Sha256: c394e6290dc97a56b9e90f2a52cdf37a523513120d441020d0a868fc3a7464cd

Contents?: true

Size: 963 Bytes

Versions: 3

Compression:

Stored size: 963 Bytes

Contents

module LinkHeaderParser
  class LinkHeaderParameter
    PARAMETER_REGEXP_PATTERN = /^(?<name>.+?)(?:="?(?<value>.*?)"?)?$/.freeze

    attr_reader :parameter

    # @param parameter [String]
    def initialize(parameter)
      @parameter = parameter
    end

    def inspect
      format(%(#<#{self.class.name}:%#0x name: #{name.inspect}, value: #{value.inspect}>), object_id)
    end

    # @see https://tools.ietf.org/html/rfc8288#appendix-B.3 (Appendix B.3.2.9)
    #
    # @return [String]
    def name
      @name ||= parameter_match_data[:name].downcase
    end

    # @see https://tools.ietf.org/html/rfc8288#appendix-B.3 (Appendix B.3.2.8)
    #
    # @return [String, nil]
    def value
      @value ||= parameter_match_data[:value] || ''
    end

    # @return [Array<String>]
    def to_a
      [name, value]
    end

    private

    def parameter_match_data
      @parameter_match_data ||= parameter.match(PARAMETER_REGEXP_PATTERN)
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
link-header-parser-2.2.0 lib/link_header_parser/link_header_parameter.rb
link-header-parser-2.1.0 lib/link_header_parser/link_header_parameter.rb
link-header-parser-2.0.0 lib/link_header_parser/link_header_parameter.rb