Class: RFC::Web::Link::Decoder

Inherits:
Object
  • Object
show all
Defined in:
lib/rfc/web/link/decoder.rb

Overview

A HTTP header field decoder which adheres to RFC 8187.

Instance Method Summary collapse

Constructor Details

#initialize(delimiter: "'", default_encoding: Encoding::UTF_8, client: URI) ⇒ Decoder

Returns a new instance of Decoder.



10
11
12
13
14
# File 'lib/rfc/web/link/decoder.rb', line 10

def initialize delimiter: "'", default_encoding: Encoding::UTF_8, client: URI
  @delimiter = delimiter
  @default_encoding = default_encoding
  @client = client
end

Instance Method Details

#call(text) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
# File 'lib/rfc/web/link/decoder.rb', line 16

def call text
  value, encoding, language = parse text

  value = client.decode_uri_component(value)
                .force_encoding(encoding || default_encoding)
                .encode(default_encoding)

  {value:, encoding:, language:}
rescue ArgumentError, NoMethodError
  {value: nil, encoding:, language:}
end