class Apropos::ExtensionParser

ExtensionParser manages registered variant parsers and provides a base class which new parsers subclass. Parsers are initialized with a pattern (String or Regexp) and a block that is called to generate ClassList or MediaQuery objects from the provided match data.

Attributes

pattern[R]

Public Class Methods

add_parser(extension, &block) click to toggle source
# File lib/apropos/extension_parser.rb, line 13
def self.add_parser(extension, &block)
  @parsers[extension] = new(extension, &block)
end
each_parser(&block) click to toggle source
# File lib/apropos/extension_parser.rb, line 17
def self.each_parser(&block)
  parsers.values.each(&block)
end
new(pattern, &block) click to toggle source
# File lib/apropos/extension_parser.rb, line 23
def initialize(pattern, &block)
  @pattern = generate_pattern(pattern)
  @match_block = block
end
parsers() click to toggle source
# File lib/apropos/extension_parser.rb, line 9
def self.parsers
  @parsers
end

Public Instance Methods

match(extension) click to toggle source
# File lib/apropos/extension_parser.rb, line 28
def match(extension)
  matchdata = pattern.match(extension)
  if matchdata
    @match_block.call(matchdata)
  end
end

Private Instance Methods

generate_pattern(pattern) click to toggle source
# File lib/apropos/extension_parser.rb, line 37
def generate_pattern(pattern)
  case pattern
  when String
    %r(^#{Regexp.escape(pattern)}$)
  else
    pattern
  end
end