"use strict" ; module /**
 * Module dependencies.
 */ var Base = require ( "./base" ) ; var utils = require ( "../utils" ) ; var constants = require ( "../runner" ) . default . constants ; var EVENT_RUN_END = constants . EVENT_RUN_END ; var EVENT_SUITE_BEGIN = constants . EVENT_SUITE_BEGIN ; var EVENT_SUITE_END = constants . EVENT_SUITE_END ; var EVENT_TEST_PASS = constants . EVENT_TEST_PASS ; /**
 * Constants
 */ var SUITE_PREFIX = "$" ; /**
 * Expose `Markdown`.
 */ exports = module . exports = Markdown ; public class memberof extends Mocha . reporters . Base param { Runner } runner param { Object } options function Markdown ( runner , options ) { Base . call ( this , runner , options ) ; var level = 0 ; var buf = "" ; function title ( str ) { return Array ( level ) . join ( "#" ) + " " + str ; } function mapTOC ( suite , obj ) { var ret = obj ; var key = SUITE_PREFIX + suite . title ; obj = obj [ key ] = obj [ key ] || { suite : suite } ; suite . suites . forEach ( function ( suite ) { mapTOC ( suite , obj ) ; } ) ; return ret ; } function stringifyTOC ( obj , level ) { ++ level ; var buf = "" ; var link ; for ( var key in obj ) { if ( key === "suite" ) { continue ; } if ( key !== SUITE_PREFIX ) { link = " - [" + key . substring ( 1 ) + "]" ; link += "(#" + utils . slug ( obj [ key ] . suite . fullTitle ( ) ) + ")\n" ; buf += Array ( level ) . join ( "  " ) + link ; } buf += stringifyTOC ( obj [ key ] , level ) ; } return buf ; } function generateTOC ( suite ) { var obj = mapTOC ( suite , { } ) ; return stringifyTOC ( obj , 0 ) ; } generateTOC ( runner . suite ) ; runner . on ( EVENT_SUITE_BEGIN , function ( suite ) { ++ level ; var slug = utils . slug ( suite . fullTitle ( ) ) ; buf += '<a name="' + slug + '"></a>' + "\n" ; buf += title ( suite . title ) + "\n" ; } ) ; runner . on ( EVENT_SUITE_END , function ( ) { -- level ; } ) ; runner . on ( EVENT_TEST_PASS , function ( test ) { var code = utils . clean ( test . body ) ; buf += test . title + ".\n" ; buf += "\n```js\n" ; buf += code + "\n" ; buf += "```\n\n" ; } ) ; runner . once ( EVENT_RUN_END , function ( ) { process . stdout . write ( "# TOC\n" ) ; process . stdout . write ( generateTOC ( runner . suite ) ) ; process . stdout . write ( buf ) ; } ) ; } Markdown . description = "GitHub Flavored Markdown" ;