![Showdown](https://raw.githubusercontent.com/showdownjs/logo/master/dist/logo.readme.png) [![Build Status](https://travis-ci.org/showdownjs/showdown.svg?branch=master)](https://travis-ci.org/showdownjs/showdown) [![npm version](https://badge.fury.io/js/showdown.svg)](http://badge.fury.io/js/showdown) [![Bower version](https://badge.fury.io/bo/showdown.svg)](http://badge.fury.io/bo/showdown) ------ Showdown is a Javascript Markdown to HTML converter, based on the original works by John Gruber. Showdown can be used client side (in the browser) or server side (with NodeJs). ## Installation ### Download tarball You can download the latest release tarball directly from https://github.com/showdownjs/showdown/releases ### Bower bower install showdown ### npm (server-side) npm install showdown ## Browser Compatibility Showdown has been tested successfully with: * Firefox 1.5 and 2.0 * Internet Explorer 6 and 7 * Safari 2.0.4 * Opera 8.54 and 9.10 * Netscape 8.1.2 * Konqueror 3.5.4 In theory, Showdown will work in any browser that supports ECMA 262 3rd Edition (JavaScript 1.5). The converter itself might even work in things that aren't web browsers, like Acrobat. No promises. ## Node compatibility Showdown has been tested with node 0.8 and 0.10. However, it should work with previous versions, such as node 0.6. ## Legacy version If you're looking for showdown v<1.0.0, you can find it in the [**legacy branch**](https://github.com/showdownjs/showdown/tree/legacy). ## Quick Example ### Node ```js var showdown = require('showdown'), converter = new showdown.Converter(), text = '#hello, markdown!', html = converter.makeHtml(text); ``` ### Browser ```js var converter = new showdown.Converter(), text = '#hello, markdown!', html = converter.makeHtml(text); ``` ### Output Both examples should output... ```html
var foo = 'bar';
```
Becomes this:
```html
var foo = 'bar';
```
* **prefixHeaderId**: (string/boolean) Adds a prefix to the generated header ids. Passing a string will prefix that string to the header id. Setting to `true` will add a generic 'section' prefix.
## Integration with AngularJS
ShowdownJS project also provides seamlessly integration with AngularJS via a "plugin".
Please visit https://github.com/showdownjs/ngShowdown for more information.
## Extensions
Showdown allows additional functionality to be loaded via extensions.
### Client-side Extension Usage
```js
var converter = new showdown.Converter({ extensions: 'twitter' });
```
### Server-side Extension Usage
```js
var showdown = require('showdown'),
myExtension = require('myExtension'),
converter = new showdown.Converter({ extensions: ['myExtension'] });
```
## Tests
A suite of tests is available which require node.js. Once node is installed, run the following command from the project root to install the development dependencies:
npm install --dev
Once installed the tests can be run from the project root using:
npm test
New test cases can easily be added. Create a markdown file (ending in `.md`) which contains the markdown to test. Create a `.html` file of the exact same name. It will automatically be tested when the tests are executed with `mocha`.
## Known Differences in Output
In most cases, Showdown's output is identical to that of Perl Markdown v1.0.2b7. What follows is a list of all known deviations. Please file an issue if you find more.
* This release uses the HTML parser from Markdown 1.0.2b2,
which means it fails `Inline HTML (Advanced).text` from
the Markdown test suite: