 
     _.extend @, defaults, options
 
-  ###*
-   * loop through all the templates specified, compile them, and add a wrapper
-   * @return {String} the source of a JS object which holds all the templates
-   * @public
-  ###
+  
+  # loop through all the templates specified, compile them, and add a wrapper
+  # @return {String} the source of a JS object which holds all the templates
+  # @public
+  
   compile: ->
     buf = ["""
     (function(){

  buf = precompiler.compile()
  buf = compressor buf, 'js'

  # TODO: make output folder dynamic
  output_path = path.normalize('public/js/templates.js')
  mkdirp.sync path.dirname(output_path)
  fs.writeFileSync output_path, buf


class Precompiler
  ###*
   * deals with setting up the variables for options
   * @param {Object} options = {} an object holding all the options to be
     passed to the compiler. 'templates' must be specified.
   * @constructor
  ###
  constructor: (options = {}) ->
    defaults =
      include_helpers: true

    buf.push '})();'
    return buf.join ''

  
  # compile individual templates
  # @param {String} template the full filename & path of the template to be compiled
  # @return {String} source of the template function
  # @private
  
  compileTemplate: (template) ->
    templateNamespace = path.basename(template, '.jade').replace(/\//g, '.') # Replaces '/' with '.'
    data = fs.readFileSync(template, 'utf8')
    data = jade.compile(data, { compileDebug: @debug || false, inline: @inline || false, client: true })
    return "#{@namespace}.#{templateNamespace} = #{data};\n"

  
  # Gets Jade's helpers and combines them into string
  # @return {String} source of Jade's helpers
  # @private
  
  helpers: ->
    buf = [
      jade.runtime.attrs.toString().replace(/exports\./g,''),
      jade.runtime.escape.toString()
    ]

    buf.push jade.runtime.rethrow.toString() if @debug

    buf.push """
    var jade = {
