AJAX/ext/header.js

define(['../../iQuery'],  function ($) {

    var parser = {
            link:    function (raw) {

                var link = { };

                raw.replace(
                    /\<(\S+?)\>; rel="(\w+)"(?:; title="(.*?)")?/g,
                    function (_, URI, rel, title) {

                        link[ rel ] = {
                            uri:      URI,
                            rel:      rel,
                            title:    title
                        };
                    }
                );

                return link;
            }
        };

    /**
     * HTTP 报文头解析
     *
     * @author   TechQuery
     *
     * @memberof $
     *
     * @param    {string} raw - Raw Text of HTTP Headers
     *
     * @returns  {object} Object of HTTP Headers
     */

    $.parseHeader = function (raw) {

        var header = { };

        raw.replace(/^([\w\-]+):\s*(.*)$/mg,  function (_, key, value) {

            if (parser[ key ])  value = parser[ key ]( value );

            if (typeof header[ key ]  ===  'string')
                header[ key ] = [header[ key ]];

            if (header[ key ]  instanceof  Array)
                header[ key ].push( value );
            else
                header[ key ] = value;
        });

        return header;
    };
});