Skip to content
This repository


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

ruby template engine based on radius and liquid

branch: master

Fetching latest commit…


Cannot retrieve the latest commit at this time

Octocat-spinner-32 lib
Octocat-spinner-32 spec
Octocat-spinner-32 .document
Octocat-spinner-32 .gitignore
Octocat-spinner-32 .rspec
Octocat-spinner-32 .rvmrc
Octocat-spinner-32 Gemfile
Octocat-spinner-32 Gemfile.lock
Octocat-spinner-32 LICENSE.txt
Octocat-spinner-32 Rakefile
Octocat-spinner-32 VERSION
Octocat-spinner-32 tongo.gemspec


tongo is a ruby template engine based in Radius and Liquid. I couldn't have done it without the help of Temple, in my opinion, one of the most interesting projects I've ever seen. Right now the implementation is pretty naïve, I haven't done any kind of optimizations and there are probably bugs sneaking around.

Here comes what you were looking for, an example:

Given a context like this one:

class CustomContext < Tongo::Context
  tag :shout do

  tag :whisper do

  tag :upcase do |content|

  tag :loop do |attrs,content|
    number = (attrs['times'] || 1).to_i
    result = ''
    number.times { result << content }

When you use it to handle this template:

<h1 class="highlight">Header</h1>
  <tng:loop times="3">
    <li>Hello World</li>
<tng:shout />
<strong><tng:shout /></strong>
<em>%{whisper | upcase}, %{shout}</em>

You should get this result:

<h1 class="highlight">Header</h1>

    <li>Hello World</li>

    <li>Hello World</li>

    <li>Hello World</li>

<em>SHHH, ARGH!</em>

So basically, it supports markup tags like , that can be empty or nested, and text tags like %{whatever | filter}.

Contributing to tongo

  • Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
  • Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it
  • Fork the project
  • Start a feature/bugfix branch
  • Commit and push until you are happy with your contribution
  • Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.
  • Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.


Copyright (c) 2011 Rodrigo Alvarez. See LICENSE.txt for further details.

Something went wrong with that request. Please try again.