middleman-syntax
is an extension for the Middleman static site generator that adds syntax highlighting via Rouge.
If you're just getting started, install the middleman
gem and generate a new project:
gem install middleman
middleman init MY_PROJECT
If you already have a Middleman project: Add gem "middleman-syntax"
to your Gemfile
and run bundle install
.
This plugin will not work on Ruby 1.8! Rouge requires 1.9+, so we do too.
activate :syntax
You can also pass options to Rouge:
activate :syntax, :line_numbers => true
The full set of options can be seen on your preview server's /__middleman/config/
page.
The extension adds a new code
helper to Middleman that you can use from your templates:
<% code("ruby") do %>
def my_cool_method(message)
puts message
end
<% end %>
That'll produce syntax-highlighted HTML wrapped in <pre class="highlight ruby">
.
On a default (i.e. unstyled) Middleman project, it will appear as if middleman-syntax
isn't working, since obviously no CSS has been applied to color your code. You can use any Pygments-compatible stylesheet to style your code.
You can also let Rouge generate some CSS for you by creating a new stylesheet with a .css.erb
extension in your Middleman project, and then including:
<%= Rouge::Themes::ThankfulEyes.render(:scope => '.highlight') %>
Rouge has ThankfulEyes
, Colorful
, Github
, Base16
, Base16::Solarized
(like Octopress), Base16::Monokai
, and Monokai
themes.
The extension also makes code blocks in Markdown produce highlighted code. Make sure you're using RedCarpet or Kramdown as your Markdown engine (in config.rb
):
set :markdown_engine, :redcarpet
set :markdown, :fenced_code_blocks => true, :smartypants => true
## OR
set :markdown_engine, :kramdown
Now your Markdown will work just like it does on GitHub - you can write something like this with Redcarpet:
```ruby def my_cool_method(message) puts message end ```
or with Kramdown:
~~~ ruby def my_cool_method(message) puts message end ~~~
When using Haml, a :code
filter is exposed for outputting highlighted code. Because Haml filters don't allow arguments, you must use a special comment to indicate the language of the code to be highlighted (or let Rouge guess):
#example
:code
# lang: ruby
def foo
puts 'bar'
end
With the special # lang: <language tag>
comment on the first line, the :code
filter is just like calling the code
helper, but without the indentation problems that Haml might otherwise have. However, if you prefer, you can use the code
helper along with the :preserve
filter, as explained below.
Some templating languages, like Haml, will indent your HTML for you,
which will mess up code formatted in <pre>
tags. When
using Haml, either use the :code
filter (recommended), use the
:preserve
filter, or add set :haml, { ugly: true }
in your config.rb
to turn off
Haml's automatic indentation.
Example of using :preserve
:
- code('ruby') do
:preserve
def foo
puts 'bar'
end
The official community forum is available at: http://forum.middlemanapp.com
Github Issues are used for managing bug reports and feature requests. If you run into issues, please search the issues and submit new problems: https://github.com/middleman/middleman-syntax/issues
The best way to get quick responses to your issues and swift fixes to your bugs is to submit detailed bug reports, include test cases and respond to developer questions in a timely manner. Even better, if you know Ruby, you can submit Pull Requests containing Cucumber Features which describe how your feature should work or exploit the bug you are submitting.
- Checkout Repository:
git clone https://github.com/middleman/middleman-syntax.git
- Install Bundler:
gem install bundler
- Run
bundle install
inside the project root to install the gem dependencies. - Run test cases:
bundle exec rake test
Click here to lend your support to Middleman
Copyright (c) 2012-2014 Benjamin Hollis. MIT Licensed, see LICENSE for details.