src/parser.js
function parseComment(comment, append){

  // separatet so that this code could be parsed
  var escapedollar = '----esacepedollar'+'---'+'jsdoc-at-examples---';
  function unescape(result){
    return result.replace(new RegExp(escapedollar,'g'), '$$');
  }

  // escape $ in comments
  comment.value = comment.value.replace(/\$/g, escapedollar);

  var expose, examples, current, statement;
  var test = {
    setup: [],
    tests: [],
    teardown: []
  };
  var hastest = false;

  // Normalize comment
  comment = comment.value.replace(/\$/g, '$$$').replace(/\r/g,'');
  // Remove empty lines from comment
  comment = comment.replace(/\$/g, '$$$').replace(RegExp(spansLine('')), '');
  // Build @expose and @examples regex
  expose   = RegExp(spansLine('@expose\\s*('+identifier()+'*)'),'g');
  examples = RegExp(spansLine('@examples')+'((?:'+spansLine('.*//.*')+')*)','g');

  while (current = expose.exec(comment)){
    statement = buildExpose(unescape(current[1]));
    if(statement)append(statement);
  }
  while(current = splitLines(examples.exec(comment))){
    for(var i in current){
      if(parseExampleLine(current[i][0], current[i][1], test)){
        hastest = true;
      }
    }
  }

  return hastest ? test : null;
}
function parseComment(comment, append){

  // separatet so that this code could be parsed
  var escapedollar = '----esacepedollar'+'---'+'jsdoc-at-examples---';
  function unescape(result){
    return result.replace(new RegExp(escapedollar,'g'), '$$');
  }

  // escape $ in comments
  comment.value = comment.value.replace(/\$/g, escapedollar);

  var expose, examples, current, statement;
  var test = {
    setup: [],
    tests: [],
    teardown: []
  };
  var hastest = false;

  // Normalize comment
  comment = comment.value.replace(/\$/g, '$$$').replace(/\r/g,'');
  // Remove empty lines from comment
  comment = comment.replace(/\$/g, '$$$').replace(RegExp(spansLine('')), '');
  // Build @expose and @examples regex
  expose   = RegExp(spansLine('@expose\\s*('+identifier()+'*)'),'g');
  examples = RegExp(spansLine('@examples')+'((?:'+spansLine('.*//.*')+')*)','g');

  while (current = expose.exec(comment)){
    statement = buildExpose(unescape(current[1]));
    if(statement)append(statement);
  }
  while(current = splitLines(examples.exec(comment))){
    for(var i in current){
      if(parseExampleLine(current[i][0], current[i][1], test)){
        hastest = true;
      }
    }
  }

  return hastest ? test : null;
}
function parseComment ( comment , append ) { // separatet so that this code could be parsed var escapedollar = '----esacepedollar' + '---' + 'jsdoc-at-examples---' ; function unescape ( result ) { return result . replace ( new RegExp ( escapedollar , 'g' ) , '$$' ) ; } // escape $ in comments comment . value = comment . value . replace ( / \$ / g , escapedollar ) ; var expose , examples , current , statement ; var test = { setup : [ ] , tests : [ ] , teardown : [ ] } ; var hastest = false ; // Normalize comment comment = comment . value . replace ( / \$ / g , '$$$' ) . replace ( / \r / g , '' ) ; // Remove empty lines from comment comment = comment . replace ( / \$ / g , '$$$' ) . replace ( RegExp ( spansLine ( '' ) ) , '' ) ; // Build @expose and @examples regex expose = RegExp ( spansLine ( '@expose\\s*(' + identifier ( ) + '*)' ) , 'g' ) ; examples = RegExp ( spansLine ( '@examples' ) + '((?:' + spansLine ( '.*//.*' ) + ')*)' , 'g' ) ; while ( current = expose . exec ( comment ) ) { statement = buildExpose ( unescape ( current [ 1 ] ) ) ; if ( statement ) append ( statement ) ; } while ( current = splitLines ( examples . exec ( comment ) ) ) { for ( var i in current ) { if ( parseExampleLine ( current [ i ] [ 0 ] , current [ i ] [ 1 ] , test ) ) { hastest = true ; } } } return hastest ? test : null ; }
Called on every comment to parse @examples and @expose tags.
@private
Called on every comment to parse