Basic functions for handling mime-types as a JavaScript package
JavaScript
Latest commit 7e7199b Jan 25, 2012 @kriskowal Normalize package.json
Permalink
Failed to load latest commit information.
lib Fix for several coding style issues, as suggested by JSHint Jan 25, 2012
CHANGES Fix for several coding style issues, as suggested by JSHint Jan 25, 2012
LICENSE FIRST! Oct 28, 2010
README
package.json

README


This module provides basic functions for handling mime-types. It can
handle matching mime-types against a list of media-ranges. See section
14.1 of the HTTP specification [RFC 2616] for a complete explanation.

  <http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.1>

A port to JavaScript of Joe Gregorio's MIME-Type Parser:

  <http://code.google.com/p/mimeparse/>

Ported by J. Chris Anderson <jchris@apache.org>, targeting the
Spidermonkey runtime.

Ported to Chiron, Narwhal, Node by Kris Kowal.

  <http://github.com/kriskowal/mimeparse>


Installation
============

    Install <http://github.com/isaacs/npm>

    npm install mimeparse


The API
=======

parseMimeType(mimeType)

    Carves up a mime-type and returns an Array of the
    [type, subtype, params] where "params" is a Hash of all
    the parameters for the media range.

    For example, the media range "application/xhtml;q=0.5" would
    get parsed into::

        ["application", "xhtml", { "q" : "0.5" }]

parseMediaRange(range)

    Carves up a media range and returns an Array of the
    [type, subtype, params] where "params" is a Object with
    all the parameters for the media range.
    
    For example, the media range "application/*;q=0.5" would
    get parsed into::
    
        ["application", "*", { "q" : "0.5" }]
    
    In addition this function also guarantees that there
    is a value for "q" in the params dictionary, filling it
    in with a proper default if necessary.

fitnessAndQualityParsed(mimeType, parsedRanges)

    Find the best match for a given mime-type against
    a list of media_ranges that have already been
    parsed by parseMediaRange(). Returns an array of
    the fitness value and the value of the 'q' quality
    parameter of the best match, or (-1, 0) if no match
    was found. Just as for qualityParsed(), 'parsed_ranges'
    must be a list of parsed media ranges.

qualityParsed(mimeType, parsedRanges)

    Find the best match for a given mime-type against
    a list of media_ranges that have already been
    parsed by parseMediaRange(). Returns the
    'q' quality parameter of the best match, 0 if no
    match was found. This function bahaves the same as quality()
    except that 'parsedRanges' must be a list of
    parsed media ranges.

quality(mimeType, ranges)

    Returns the quality 'q' of a mime-type when compared
    against the media-ranges in ranges. For example::

        >>> quality('text/html','text/*;q=0.3, text/html;q=0.7, text/html;level=1, text/html;level=2;q=0.4, *\/*;q=0.5')
        0.7

bestMatch(supported, header)

    Takes a list of supported mime-types and finds the best
    match for all the media-ranges listed in header. The value of
    header must be a string that conforms to the format of the
    HTTP Accept: header. The value of 'supported' is a list of
    mime-types::
    
        >>> bestMatch(['application/xbel+xml', 'text/xml'], 'text/*;q=0.5,*\/*; q=0.1')
        'text/xml'