Maruku is a Markdown-superset interpreter.
Maruku implements:
- The original Markdown syntax.
- All the improvements in PHP Markdown Extra.
- A new meta-data syntax.
Read more about Maruku's Markdown syntax. It also supports inline math. Maruku docs.
News about Maruku is posted at http://benhollis.net/blog/category/maruku/
Make sure you have Ruby and RubyGems, then run:
gem install maruku
To convert Markdown from your Ruby programs, first create a new document and then get
its HTML representation with the method to_html
:
doc = Maruku.new(markdown_string)
puts doc.to_html
The #to_html
method returns a string,
representing an HTML fragment.
Maruku.new("## Header ##").to_html
# => "<h2 id='header'>header</h2>"
If you want to create full HTML documents, use the #to_html_document
method.
Maruku warns you if something is wrong with the input. The default behaviour is to print a warning on standard error, and then try to continue.
This behavior can be customized with the :on_error
option.
For example:
Maruku.new(string, :on_error => :raise)
This tells Maruku to raise an exception if it encounters a parsing error.
To change the error stream, use the :error_stream
option:
errors = "Errors reported by Maruku:\n"
Maruku.new(invalid, :error_stream => errors)
You can pass in any object that supports the <<
method.
Maruku comes with two command-line programs: maruku
and marutex
.
maruku
converts Markdown to HTML:
$ maruku file.md # creates file.html
marutex
converts Markdown to LaTeX,
then calls pdflatex
to transform the LaTeX to a PDF:
$ marutex file.md # creates file.tex and file.pdf
The public interface is the Maruku
class.
Everything else is in the module MaRuKu
.
Maruku will not depend on any gem that is not pure-Ruby. This helps maximize compatibility across Ruby implementations and make Maruku easy to use. Beyond that, Maruku should not depend on any other gem unless absolutely necessary - this make Maruku easy to consume and avoids dependency version conflicts.
This library aims to support and is tested against the following Ruby implementations:
- Ruby 1.8.7
- Ruby 1.9.2
- Ruby 1.9.3
- Ruby 2.0.0
- JRuby (Travis' version, 1.8 and 1.9 modes)
- Rubinius (Travis' version, 1.8 and 1.9 modes)
If something doesn't work on one of these interpreters, it's a bug.
- Find something you would like to work on.
- Look for anything you can help with in the issue tracker.
- Look at the code quality metrics or code coverage report for anything you can help clean up or add tests for.
- Or anything else!
- Fork the project and do your work in a topic branch.
- Make sure your changes will work on all the Rubies we test on.
- Add tests in
spec/block_docs
for the behavior you want to test. - Run all the tests using
bundle exec rake
. - Rebase your branch against
bhollis/maruku
to make sure everything is up to date. - Commit your changes and send a pull request.
Copyright (c) 2006 Andrea Censi. MIT license, see MIT-LICENSE.txt for details.