101 lines
2.4 KiB
Plaintext
101 lines
2.4 KiB
Plaintext
= Radius -- Powerful Tag-Based Templates
|
|
|
|
Radius is a powerful tag-based template language for Ruby inspired by the
|
|
template languages used in MovableType[http://www.movabletype.org] and
|
|
TextPattern[http://www.textpattern.com]. It uses tags similar to XML, but can
|
|
be used to generate any form of plain text (HTML, e-mail, etc...).
|
|
|
|
|
|
== Usage
|
|
|
|
With Radius, it is extremely easy to create custom tags and parse them. Here's a small
|
|
example:
|
|
|
|
require 'radius'
|
|
|
|
# Define tags on a context that will be available to a template:
|
|
context = Radius::Context.new do |c|
|
|
c.define_tag 'hello' do
|
|
'Hello world'
|
|
end
|
|
c.define_tag 'repeat' do |tag|
|
|
number = (tag.attr['times'] || '1').to_i
|
|
result = ''
|
|
number.times { result << tag.expand }
|
|
result
|
|
end
|
|
end
|
|
|
|
# Create a parser to parse tags that begin with 'r:'
|
|
parser = Radius::Parser.new(context, :tag_prefix => 'r')
|
|
|
|
# Parse tags and output the result
|
|
puts parser.parse(%{A small example:\n<r:repeat times="3">* <r:hello />!\n</r:repeat>})
|
|
|
|
Output:
|
|
|
|
A small example:
|
|
* Hello world!
|
|
* Hello world!
|
|
* Hello world!
|
|
|
|
|
|
== Quick Start
|
|
|
|
Read the QUICKSTART file to get up and running with Radius.
|
|
|
|
|
|
== Requirements
|
|
|
|
Radius does not have any external requirements for using the library in your
|
|
own programs.
|
|
|
|
Ragel is required to create the ruby parser from the Ragel specification,
|
|
and both Ragel and Graphviz are required to draw the state graph for the
|
|
parser.
|
|
|
|
|
|
== Installation
|
|
|
|
It is recommended that you install Radius using the RubyGems packaging system:
|
|
|
|
% gem install --remote radius
|
|
|
|
|
|
== License
|
|
|
|
Radius is released under the MIT license and is copyright (c) 2006-2010
|
|
John W. Long. A copy of the MIT license can be found in the LICENSE file.
|
|
|
|
|
|
== Roadmap
|
|
|
|
This is a prioritized roadmap for future releases:
|
|
|
|
1. Clean up the current code base. [Done]
|
|
|
|
2. Add support for multi-level contexts: tags should be able to be
|
|
defined to only be valid within other sets of tags. [Done]
|
|
|
|
3. Create a simple DSL for defining contexts. [Done]
|
|
|
|
4. Optimize for speed, modify scan.rl to emit C.
|
|
|
|
|
|
== Development
|
|
|
|
The latest version of Radius can be found on RubyForge:
|
|
|
|
http://rubyforge.org/projects/radius
|
|
|
|
Experimental and development versions of Radius can be found on Github:
|
|
|
|
http://github.com/jlong/radius
|
|
|
|
If you are interested in helping with the development of Radius, feel free to
|
|
fork the project on GitHub and send me a pull request.
|
|
|
|
|
|
John Long ::
|
|
http://wiseheartdesign.com
|