lib/parser/index.js
function (commentObj, code, filepath, context, emitter) {
        var tagRegexp = tags.getTagRegexp();
        var sym = new Symbol({file:filepath});
        var comment = commentObj.comment,
            match = tagRegexp.exec(comment), description,
            l = comment.length, i;
        if (match && match[1]) {
            parseCode(code, commentObj.end, sym, context);
            i = match.index;
            sym.description = comment.substr(0, i);
            comment = comment.substr(i);
            i = 0;
            while (i < l) {
                var subComment = comment.substr(i), nextIndex;
                match = tagRegexp.exec(comment.substr(i + 2));
                if (match && match[1]) {
                    nextIndex = match.index;
                    nextIndex += i + 1;
                    parseTag(comment.substr(i, nextIndex - i), sym, context);
                    i = nextIndex;
                } else {
                    parseTag(subComment, sym, context);
                    i = l;
                }
            }
        } else {
            parseCode(code, commentObj.end, sym, context);
            sym.description = comment;
        }
        sym.fullName = sym.memberof ? [sym.memberof, sym.name].join(".") : sym.name;
        return {symbol:sym, comment:comment};
    }
function (commentObj, code, filepath, context, emitter) {
        var tagRegexp = tags.getTagRegexp();
        var sym = new Symbol({file:filepath});
        var comment = commentObj.comment,
            match = tagRegexp.exec(comment), description,
            l = comment.length, i;
        if (match && match[1]) {
            parseCode(code, commentObj.end, sym, context);
            i = match.index;
            sym.description = comment.substr(0, i);
            comment = comment.substr(i);
            i = 0;
            while (i < l) {
                var subComment = comment.substr(i), nextIndex;
                match = tagRegexp.exec(comment.substr(i + 2));
                if (match && match[1]) {
                    nextIndex = match.index;
                    nextIndex += i + 1;
                    parseTag(comment.substr(i, nextIndex - i), sym, context);
                    i = nextIndex;
                } else {
                    parseTag(subComment, sym, context);
                    i = l;
                }
            }
        } else {
            parseCode(code, commentObj.end, sym, context);
            sym.description = comment;
        }
        sym.fullName = sym.memberof ? [sym.memberof, sym.name].join(".") : sym.name;
        return {symbol:sym, comment:comment};
    }
function ( commentObj , code , filepath , context , emitter ) { var tagRegexp = tags . getTagRegexp ( ) ; var sym = new Symbol ( { file : filepath } ) ; var comment = commentObj . comment , match = tagRegexp . exec ( comment ) , description , l = comment . length , i ; if ( match && match [ 1 ] ) { parseCode ( code , commentObj . end , sym , context ) ; i = match . index ; sym . description = comment . substr ( 0 , i ) ; comment = comment . substr ( i ) ; i = 0 ; while ( i < l ) { var subComment = comment . substr ( i ) , nextIndex ; match = tagRegexp . exec ( comment . substr ( i + 2 ) ) ; if ( match && match [ 1 ] ) { nextIndex = match . index ; nextIndex += i + 1 ; parseTag ( comment . substr ( i , nextIndex - i ) , sym , context ) ; i = nextIndex ; } else { parseTag ( subComment , sym , context ) ; i = l ; } } } else { parseCode ( code , commentObj . end , sym , context ) ; sym . description = comment ; } sym . fullName = sym . memberof ? [ sym . memberof , sym . name ] . join ( "." ) : sym . name ; return { symbol : sym , comment : comment } ; }
Parses tags from a comment string.

@ignore

@param commentObj
@param code
@param filepath
@param context
@param emitter
@return {Object}
Parses tags from a comment string .