Skip to content
Converts HTML to Coffeekup markup
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

Not fully complete, but still a huge time saver. Tested on dozens of files that only needed minor touch ups after conversion.


npm install -g html2coffeekup

Command Line Synopsys

html2coffeekup test/simple.html

Example Output (for above usage)

doctype TODO
html ->
  head ->
    title 'A simple test page'
    style type: 'text/css', '.foo {\n        color: red\n      }'
  body '.awesome', ->
    div '#root.super.special', ->
      comment 'This page is rapidly becoming not-so-simple'
      h1 'A simple test page'
      p ->
        text 'With some awesome text, and a'
        a href: '', 'link'
        text '.'
      p '#paragraph_2', ->
        text 'And here is an image:'
        img src: 'fake/source', title: 'not really'
        text 'As well as a disabled select:'
        select disabled: 'disabled', ->
          option 'Oh boy!'
      script type: 'text/javascript', 'console.log("Hello there");\n        console.log("How\'s it going?");'

Full Command Line Usage

html2coffeekup [options] <html-file>

--prefix=<string>   Prepends a string to each element function call
--no-prefix         Disables prefix (default)
--selectors         Output css-selectors for id and classes (default)
--no-selectors      Disables output of css-selectors for id and classes
--export[=<name>]   Wraps the output in a Node.js style export
--no-export         Disables wrapping the output in an export (default)

See "Supported options" below for additional details.

Public API

convert(html, stream, [options], [callback])

html must be a string.

stream is a "Writable Stream".

options is an optional hash. See next section for details.

callback is optional and passed (error) if something goes wrong.

Supported options:

  • prefix prepends a string to the begining of each element functional call. (default: '')

For example, using the prefix @ would result in @body ->.

  • selectors is a boolean to toggle emitting classes and ids as a first argument to element functions as a selector string (default: true).

For example, when true you get div '#id.cls1.cls2. When false you get div id: "id", class: "cls1 cls2"

  • exports is a boolean or a string name. When truthy, wraps the output in a Node.js style function export. (default: false).

When true you get module.exports = ->. When a "foo" you get = ->

Example REPL Session

coffee> {convert} = require('html2coffeekup')
{ convert: [Function] }
coffee> convert '<a href="">Github</a>', process.stdout, -> console.log 'done!'
a href: '', 'Github'
You can’t perform that action at this time.