hammerdown

Streaming HTML To Markdown Writer

hammerdown

Streaming html to markdown writer

Get Started

Checkout The Live Demo here!

var hammerdown = require("hammerdown");
 
//HTML 
var htmlToConvert = = "<h1>A Markdown Header</h1><p>Some text <b>bold text</b></p>"
 
//Write markdown  
hammerdown().parse(htmlToConvert,function(errormarkdown){
    if(error) 
        throw error;
 
    console.log(markdown);
});
 
//Outputs 
//  # A Markdown Header 
// 
//  Some text **bold text** 
var hammerdown = require("hammerdown");
 
//HTML 
var htmlToConvert = = "<h1>A Markdown Header</h1><p>Some text <b>bold text</b></p>"
 
//Write markdown 
hammerdown().parse(htmlToConvert).pipe(process.stdout);
 
//Outputs 
//  # A Markdown Header 
// 
//  Some text **bold text** 

Installation

npm install hammerdown
bower install hammerdown

NOTE: If using in the browser use the following:

//HTML 
var htmlToConvert = = "<h1>A Markdown Header</h1><p>Some text <b>bold text</b></p>"
 
hammerdown().parse(htmlToConvert,function(errormarkdown){
    if(error) 
        throw error;
 
    console.log(markdown);
});
var hammerdown = require("hammerdown");
 
//Write markdown 
var htmlString = "<pre>" +
                    "<code class='language-javascript'>"+
                        "var awesomeoFunction = function(){"+
                            "return true;"+
                        "}"+
                    "</code>"+
                "</pre>";
hammerdown({type:"gfm"}).parse(htmlString).pipe(process.stdout);
 
//Outputs 
//  ```javascript 
//  function myFunction(params){return true;}; 
//  ``` 

Purpose

Existing html to markdown writers didn't:

  • Support windows easily (html.md)
  • Lack of support for github flavored markdown (to-markdown)
  • Didn't support streams

To have an easy way to programatically generate a stream of markdown text from html. This library includes converters for standard markdown and it also includes Github-Flavored-Markdown definitions.

Markdown is a mechanism to create documents. See for more details. Hammerdown allows developers to leverage the simplicity of Markdown from html text.

Gulp Plugin!

For adding to your build process checkout gulp-hammerdown

Options

Hammerdown currently accepts one option: type. If type is "gfm" then hammerdown will produce markdown using github flavored markdown(gfm).

Examples

Below is a select group of examples. More examples can be found by looking at the integration tests.

Github Flavored Markdown Examples

var fs = require('fs');
var hammerdown = require('hammerdown');
 
var htmlFileStream = fs.createReadStream("anyHtmlFile.html");
 
//Output markdown 
htmlFileStream.pipe(hammerdown()).pipe(process.stdout);
 
//Outputs 
//  # Any header     
//   
//  Any **Content** 
<!-- anyHtmlFile.html-->
<!doctype html>
<html>
<head>
    <title>Any Title</title>
</head>
<body>
    <h1>Any header</h1>
    <p>Any <b>Content</b></p>
</body>
</html>
var fs = require('fs')
var hammerdown = require('hammerdown');
 
var htmlFileStream = fs.createReadStream("anyTable.html");
 
//Output markdown 
htmlFileStream.pipe(hammerdown({type:"gfm"})).pipe(process.stdout);
 
//Outputs 
//  |Header1|Header1| 
//  |---|---| 
//  |row1-col1|row1-col2| 
//  |row2-col1|row2-col2| 
<!-- anyTable.html -->
<!doctype html>
<html>
    <head>
        <title>Table Html</title>
    </head>
    <body>
        <table>
            <tr>
                <th>
                    Header1
                </th>
                <th>
                    Header1
                </th>
            </tr>
            <tr>
                <td>
                    row1-col1
                </td>
                <td>
                    row1-col2
                </td>
            </tr>
            <tr>
                <td>
                    row2-col1
                </td>
                <td>
                    row2-col2
                </td>
            </tr>
        </table>
    </body>
</html>
var fs = require('fs')
var hammerdown = require('hammerdown');
 
var htmlFileStream = fs.createReadStream("anyTable.html");
 
//Output markdown 
htmlFileStream.pipe(hammerdown({type:"gfm"})).pipe(process.stdout);
 
//Outputs 
//  ```javascript 
//  var awesomeoFunction = function(){ 
//              return true; 
//  }; 
//  ``` 
<!-- anyFencedCodeBlock.html -->
<!doctype html>
<html>
    <head>
        <title>Fenced Code Block</title>
    </head>
    <body>
        <pre>
        <code class='language-javascript'>
            var awesomeoFunction = function(){
                return true;
            };
        </code>
        </pre>
    </body>
</html>

Credits and other frameworks