Sha256: 9de0215a12e57fe0bfacaf9111afe64d3c89134a7e7ac5bdbdafcaa70cbf7bea

Contents?: true

Size: 1.81 KB

Versions: 19

Compression:

Stored size: 1.81 KB

Contents

FS      = require 'fs'
Path    = require 'path'
mkdirp  = require 'mkdirp'
_       = require 'underscore'
hamlc   = require 'haml-coffee'
walkdir = require 'walkdir'
Mincer  = require 'mincer'
Nib     = require 'nib'
Theme   = require './_theme'

module.exports = class Theme.Templater

  sourceOf: (subject) ->
    Path.join(__dirname, '..', subject)

  constructor: (@destination) ->
    Mincer.StylusEngine.configure (stylus) => stylus.use Nib()
    Mincer.CoffeeEngine.configure bare: false

    @JST = []

    templates = @sourceOf('templates')

    for template in walkdir.sync(templates)
      unless FS.lstatSync(template).isDirectory()
        relative = Path.relative(templates, template)
        dirname  = Path.dirname(relative)
        basename = Path.basename(template, '.hamlc')

        keyword = basename
        keyword = dirname + '/' + basename unless dirname == '.'

        @JST[keyword] = hamlc.compile FS.readFileSync(template, 'utf8'),
          escapeAttributes: false

  compileAsset: (from, to=false) ->
    mincer = new Mincer.Environment()
    mincer.appendPath @sourceOf('assets')

    asset = mincer.findAsset(from)
    file  = Path.join(@destination, to || from)
    dir   = Path.dirname(file)

    mkdirp.sync(dir)
    FS.writeFileSync(file, asset.buffer)

  # Render the given template with the context and the
  # global context object merged as template data. Writes
  # the file as the output filename.
  #
  # @param [String] template the template name
  # @param [Object] context the context object
  # @param [String] filename the output file name
  #
  render: (template, context = {}, filename = '') ->
    html = @JST[template](context)

    if filename.length > 0
      file = Path.join @destination, filename
      dir  = Path.dirname(file)

      mkdirp.sync(dir)
      FS.writeFileSync(file, html)

    html

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
ela-4.1.6 node_modules/codo/themes/default/lib/templater.coffee
ela-4.1.5 node_modules/codo/themes/default/lib/templater.coffee
ela-4.1.4 node_modules/codo/themes/default/lib/templater.coffee
ela-4.1.3 node_modules/codo/themes/default/lib/templater.coffee
ela-4.1.2 node_modules/codo/themes/default/lib/templater.coffee
ela-4.1.1 node_modules/codo/themes/default/lib/templater.coffee
ela-4.1.0 node_modules/codo/themes/default/lib/templater.coffee
ela-4.0.0 node_modules/codo/themes/default/lib/templater.coffee
ela-3.4.3 node_modules/codo/themes/default/lib/templater.coffee
ela-3.4.2 node_modules/codo/themes/default/lib/templater.coffee
ela-3.4.0 node_modules/codo/themes/default/lib/templater.coffee
ela-3.3.1 node_modules/codo/themes/default/lib/templater.coffee
ela-3.3.0 node_modules/codo/themes/default/lib/templater.coffee
ela-3.2.0 node_modules/codo/themes/default/lib/templater.coffee
ela-3.1.1 node_modules/codo/themes/default/lib/templater.coffee
ela-3.1.0 node_modules/codo/themes/default/lib/templater.coffee
ela-3.0.0 node_modules/codo/themes/default/lib/templater.coffee
ela-2.0.0 node_modules/codo/themes/default/lib/templater.coffee
ela-1.1.0 node_modules/codo/themes/default/lib/templater.coffee