Skip to content

Instantly share code, notes, and snippets.

@dux
Created September 29, 2015 01:43
Show Gist options
  • Save dux/f089666f829a72a1ab30 to your computer and use it in GitHub Desktop.
Save dux/f089666f829a72a1ab30 to your computer and use it in GitHub Desktop.
# html = render.tag 'head', ->
# [
# @h1 class:'test', -> @tag('small', 'product') + 'Dux'
# @div ->
# [2,4,6,7].map (el) =>
# @li el
# @tag '.bla.blo', 'div.bla'
# @tag '#bla.klass', 'div id bla'
# ]
@render =
tag: (name, opts, data) ->
if ['string','function','number'].indexOf(typeof(opts)) > -1
data = opts
opts = {}
if name.indexOf('.') > -1
parts = name.split('.')
name = parts.shift() || 'div'
opts['class'] = parts.join(' ')
if name.indexOf('#') > -1
parts = name.split('#',2)
name = parts.shift() || 'div'
opts['id'] = parts[0]
if typeof(data) == 'function'
data = data.call(@)
if typeof(data) == 'object'
data = data.join('')
tags = []
for k,v of opts
tags.push " #{k}='#{v}'"
"""\t<#{name}#{tags.join(' ')}>#{data}</#{name}>\n"""
for el in 'div.span.a.small.ul.ol.dl.dt.dd.li.h1.h2.h3.h4.h5.h6'.split('.')
eval """ window.render.#{el} = function(opts, data) { return window.render.tag('#{el}', opts, data); } """
# window.t[el] = (opts, data) -> window.t.tag(el, opts, data)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment