function Cleaver(document, options, includePath) {
  this.document = document.toString();
  this.options = clone(options) || {};
  this.path = path.resolve(includePath || '.');

  if (!debugInited) {
    if (this.options.debug) {
      debug.enable('*');
    }
    debug = debug('cleaver');
    debugInited = true;
  }

  /**
   * Require helper using `this.path` as a context for where to locate any
   * specified assets
   */
  helper = require('./helper')(this.path, this.options.debug);

  this.templates = {
    layout: 'templates/layout.mustache',
    author: 'templates/author.mustache',
    slides: 'templates/default.mustache'
  };

  this.resources = {
    style: 'resources/default.css',
    githubStyle: 'resources/github.css',
    script: 'resources/script.js'
  };

  this.external = {
    style: []
  };

  this.slides = [];
  this.override = false;

  marked.setOptions({
    gfm: true,
    highlight: function (code, lang) {
      try {
        return hljs.highlight(lang, code).value;
      } catch (e) {
        return code;
      }
    }
  });
}
function Cleaver(document, options, includePath) {
  this.document = document.toString();
  this.options = clone(options) || {};
  this.path = path.resolve(includePath || '.');

  if (!debugInited) {
    if (this.options.debug) {
      debug.enable('*');
    }
    debug = debug('cleaver');
    debugInited = true;
  }

  
  helper = require('./helper')(this.path, this.options.debug);

  this.templates = {
    layout: 'templates/layout.mustache',
    author: 'templates/author.mustache',
    slides: 'templates/default.mustache'
  };

  this.resources = {
    style: 'resources/default.css',
    githubStyle: 'resources/github.css',
    script: 'resources/script.js'
  };

  this.external = {
    style: []
  };

  this.slides = [];
  this.override = false;

  marked.setOptions({
    gfm: true,
    highlight: function (code, lang) {
      try {
        return hljs.highlight(lang, code).value;
      } catch (e) {
        return code;
      }
    }
  });
}
function Cleaver ( document , options , includePath ) { this . document = document . toString ( ) ; this . options = clone ( options ) || { } ; this . path = path . resolve ( includePath || '.' ) ; if ( ! debugInited ) { if ( this . options . debug ) { debug . enable ( '*' ) ; } debug = debug ( 'cleaver' ) ; debugInited = true ; } /**
   * Require helper using `this.path` as a context for where to locate any
   * specified assets
   */ helper = require ( './helper' ) ( this . path , this . options . debug ) ; this . templates = { layout : 'templates/layout.mustache' , author : 'templates/author.mustache' , slides : 'templates/default.mustache' } ; this . resources = { style : 'resources/default.css' , githubStyle : 'resources/github.css' , script : 'resources/script.js' } ; this . external = { style : [ ] } ; this . slides = [ ] ; this . override = false ; marked . setOptions ( { gfm : true , highlight : function ( code , lang ) { try { return hljs . highlight ( lang , code ) . value ; } catch ( e ) { return code ; } } } ) ; }
Constructor accepts a document (as a string) and a path from which to
include external dependencies (stylesheets, scripts, etc)

@param {string} document The input document
@param {!Object} options Optional settings object to overwrite the options
listed in the cleaver document
@param {!string} includePath Optional resource path (default: '.')
@constructor
Constructor accepts a document ( as a string ) and a path from which to include external dependencies ( stylesheets scripts etc )