Discount Markdown Processor for Ruby (with some extras)

Discount is an implementation of John Gruber's Markdown markup language in C. It implements all of the language described in the markdown syntax document and passes the Markdown 1.0 test suite.

Discount was developed by David Loren Parsons. The Ruby extension was developed by Ryan Tomayko and extended by Nathan Hoad.

Installation, Hacking

The Moredown gem can be installed from Github:

$ gem sources -a http://gems.github.com
$ [sudo] gem install nathanhoad-moredown

The Moredown sources are available via Git:

$ git clone git://github.com/nathanhoad/moredown.git
$ cd moredown
$ rake --tasks

For more information, see the project page.

Usage

Moredown can be used in any way that RDiscount can be (see below). In addition, Moredown implements some extras:

  • Static method for simple calls

    require 'nathanhoad-moredown'
    html = Moredown.text_to_html("Hello World!")
    
  • Remap relative URLs

    Moredown.new(text, :base_url => 'http://nathanhoad.net').to_html
    
  • Remap headings (eg. h1 becomes h3).

    Moredown.new(text, :map_headings => 2)
    
  • Embed Youtube videos (similar to image syntax except the title text is used for width and height)

    ![Video](youtube:lfAzVe5H-vE)
    ![Blah](youtube:lfAzVe5H-vE "400 300")
    
  • Use Flash movies (include the width and height if you want)

    ![Flash](flash:movieclip.swf)
    ![Something](flash:something.swf "200 100")
    
  • Use SwfObject (javascript not included) for graceful Flash degradation

    Moredown.new(text, :swfobject => { :src => 'swfobject.js', :version => '10', :fallback => 'No Flash' })
    
  • Image alignments (extension to image syntax)

    ![Image](/images/test.jpg):left
    ![Image](/images/test.jpg):right
    ![Image](/images/test.jpg):center
    
  • Emoticons

    :-)
    :-P
    :-D
    :-(
    :-@
    ;-)
    
  • RDiscount extensions are now passed under :extensions

    Moredown.new(text, :extensions => [:smart])
    

RDiscount implements the basic protocol popularized by RedCloth and adopted by BlueCloth:

require 'nathanhoad-moredown'
markdown = Moredown.new("Hello World!")
puts markdown.to_html

Inject Moredown into your BlueCloth-using code by replacing your bluecloth require statements with the following:

begin
  require 'nathanhoad-moredown'
  BlueCloth = Moredown
rescue LoadError
  require 'bluecloth'
end

COPYING

Discount is free software; it is released under a BSD-style license that allows you to do as you wish with it as long as you don't attempt to claim it as your own work. RDiscount adopts Discount's license verbatim. See the file COPYING for more information.