class Nanoc::Extra::SrcsetParser

@api private

Constants

REGEX_REST

Public Class Methods

new(value) click to toggle source
# File lib/nanoc/extra/srcset_parser.rb, line 30
def initialize(value)
  @value = value
end

Public Instance Methods

call() click to toggle source
# File lib/nanoc/extra/srcset_parser.rb, line 34
def call
  matches = []

  loop do
    match = {}

    scan(/\s*/)
    match[:url] = scan(/[^, ]+/)
    match[:rest] = scan(REGEX_REST)
    scan(/\s*/)

    matches << match

    next if try_scan(/,/)
    break if eos?

    raise(InvalidFormat)
  end

  matches
rescue InvalidFormat
  @value
end

Private Instance Methods

eos?() click to toggle source
# File lib/nanoc/extra/srcset_parser.rb, line 70
def eos?
  scanner.eos?
end
scan(pattern) click to toggle source
# File lib/nanoc/extra/srcset_parser.rb, line 60
def scan(pattern)
  match = try_scan(pattern)

  match || raise(InvalidFormat)
end
scanner() click to toggle source
# File lib/nanoc/extra/srcset_parser.rb, line 74
def scanner
  @_scanner ||= StringScanner.new(@value)
end
try_scan(pattern) click to toggle source
# File lib/nanoc/extra/srcset_parser.rb, line 66
def try_scan(pattern)
  scanner.scan(pattern)
end