Class: ParsingUtils::Parser

Inherits:
Object
  • Object
show all
Defined in:
lib/parsing_utils.rb

Overview

Usage

Parser.add(JSONParser, "application/json", "application/vnd.com.example.Object+json")

Constant Summary collapse

@@available_parsers =

FIXME: A bit ugly

[]

Class Method Summary collapse

Class Method Details

.add(parser, *mime_types) ⇒ Object



13
14
15
16
17
18
# File 'lib/parsing_utils.rb', line 13

def add(parser, *mime_types)
  parser.dependencies
  parser.supported_mime_types = [mime_types, parser.default_mime_type].flatten.compact.uniq
  @@available_parsers << parser
  self
end

.available_parsersObject



12
# File 'lib/parsing_utils.rb', line 12

def available_parsers; @@available_parsers; end

.select(mime_type) ⇒ Object

Raises:



19
20
21
22
23
24
25
26
27
# File 'lib/parsing_utils.rb', line 19

def select(mime_type)
  raise UnsupportedFormat, "The content_type cannot be nil." if mime_type.nil?
  parsers = available_parsers.select{|parser| parser.supported_mime_types.include?(mime_type)}
  if parsers.empty?
    raise UnsupportedFormat, "No parser found for '#{mime_type}' content type."
  else
    parsers.first
  end
end