51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
# File 'lib/httpx/altsvc.rb', line 51
def parse(altsvc)
return enum_for(__method__, altsvc) unless block_given?
scanner = StringScanner.new(altsvc)
until scanner.eos?
alt_origin = scanner.scan(/[^=]+=("[^"]+"|[^;,]+)/)
alt_params = []
loop do
alt_param = scanner.scan(/[^=]+=("[^"]+"|[^;,]+)/)
alt_params << alt_param.strip if alt_param
scanner.skip(/;/)
break if scanner.eos? || scanner.scan(/ *, */)
end
alt_params = Hash[alt_params.map { |field| field.split("=") }]
yield(parse_altsvc_origin(alt_origin), alt_params)
end
end
|