Skip to content
This repository was archived by the owner on Jan 24, 2022. It is now read-only.

Commit

Permalink
ability to override <% and %>
Browse files Browse the repository at this point in the history
  • Loading branch information
piranha committed Apr 2, 2013
1 parent 067c957 commit b360fe5
Show file tree
Hide file tree
Showing 5 changed files with 17 additions and 12 deletions.
3 changes: 2 additions & 1 deletion src/command.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,8 @@ run = ->
if options['no-include-helpers']
template = compiler.compile(source)
else
template = compiler.compile(source, helpers, options['helpers-name'])
template = compiler.compile(source,
{helpers, helpersName: options['helpers-name']})

return wrap(options.wrap, template, options[0])

Expand Down
4 changes: 2 additions & 2 deletions src/compiler.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
CoffeeScript = require 'coffee-script'


compile = (source, helpers, helpersName) ->
compile = (source, options={}) ->
tokens = tokenize(source)
coffee = transform(tokens, {}, helpers, helpersName)
coffee = transform(tokens, options)
CoffeeScript.compile(coffee, bare: true)


Expand Down
9 changes: 5 additions & 4 deletions src/tokenizer.coffee
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
_ = require 'underscore'

BEGIN = '<%'
END = '%>'

tokenize = (source, options={}) ->
options = _.extend {begin: '<%', end: '%>', moreTokenNames: {}}, options
tokenNames = _.extend {}, defaultTokenNames, options.moreTokenNames
BEGIN = options.begin
END = options.end

tokenize = (source, moreTokenNames={}) ->
tokenNames = _.extend {}, defaultTokenNames, moreTokenNames
tokens = []
start = 0
while true
Expand Down
11 changes: 7 additions & 4 deletions src/transformer.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -34,14 +34,17 @@ getWriter = ->
@level--


transform = (tokens, moreTokenMap={}, helpers={}, helpersName='helpers') ->
tokenMap = _.extend {}, getDefaultTokenMap(helpersName), moreTokenMap
transform = (tokens, options) ->
options = _.extend({helpers: {}, helpersName: 'helpers', moreTokenMap: {}},
options)
tokenMap = _.extend({}, getDefaultTokenMap(options.helpersName),
options.moreTokenMap)

writer = getWriter()
writer.write '(ctx) ->', indent: true

if Object.keys(helpers).length
for line in dumpHelpers(helpers, helpersName)
if Object.keys(options.helpers).length
for line in dumpHelpers(options.helpers, options.helpersName)
writer.write line

writer.write '((out) ->', indent: 'out).call(ctx, []).join("")'
Expand Down
2 changes: 1 addition & 1 deletion test/test_render.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ read = (x) -> fs.readFileSync(__dirname + '/fixtures/' + x).toString()
f = (x) -> read(x + '.out')
t = (x, ctx) ->
tokens = tokenize(read(x + '.eco'))
tpl = transform(tokens, {}, helpers)
tpl = transform(tokens, {helpers})
CoffeeScript.eval(tpl)(ctx)


Expand Down

0 comments on commit b360fe5

Please sign in to comment.