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 |