class Rackful::Parser

Base class for all concrete parsers defined in this library. You’ll probably want to use this class as the base class for your own parsers, too.

This class mixes in module ‘StatusCodes` for convenience, as explained in the {StatusCodes StatusCodes documentation}. @abstract Subclasses must implement classmethod `::parse` with signature

`(void) parse( Request, Response, Resource )`
explained in {Resource::ClassMethods::add_parser}

@example Subclassing this class

class MyTextParser < Rackful::Parser
  parses 'text/*', 'application/xhtml+xml'
  def self.parse request, response, resource
    # YOUR CODE HERE...
  end
end

Public Class Methods

media_types() click to toggle source

@api private

# File lib/rackful/parser.rb, line 29
def media_types
  @media_types ||= begin
    retval = rackful_parser_media_types
    if superclass.respond_to?(:media_types)
      retval += superclass.media_types
    end
    retval.uniq
  end
end
parses(*args) click to toggle source

@overload parses( media_type, … )

@param media_type [String]
# File lib/rackful/parser.rb, line 41
def parses *args
  rackful_parser_media_types.unshift(
    *( args.map { |mt| mt.to_s }.reverse )
  )
  rackful_parser_media_types.uniq!
  self
end

Private Class Methods

rackful_parser_media_types() click to toggle source
# File lib/rackful/parser.rb, line 50
def rackful_parser_media_types
  @rackful_parser_media_types ||= []
end