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
 |