John W. Long
2006-May-01 19:45 UTC
[Rails] [ANN] Radius 0.0.1 -- Powerful Tag-Based Templates
I am pleased to announce the immediate release of Radius 0.5.0.
Radius is a small, but powerful tag-based template language for Ruby
inspired by the template languages used in MovableType
<www.movabletype.org> and TextPattern <www.textpattern.com>. It uses
tags similar to XML, but can be used to generate any form of plain text
(HTML, e-mail, etc...).
This release is much more feature complete than previous releases with
it''s own domain language and support for nested tags.
From the change log:
0.5.0
* Created a DSL for tag definitions (introducing a DSL makes this
version of Radiant incompatible with the last). The DSL has the
following features:
- full support for nested tags
- global and local tag variables
- Contexts can now be defined dynamically (instead of being
subclassed)
- see the QUICKSTART for more info
* Many refactorings of the library and unit tests.
* Changed the license to the MIT-LICENSE.
* Updated documentation to reflect the changes.
* Updated the version number to reflect the maturity of the code base.
Download:
http://rubyforge.org/frs/?group_id=1262
Documentation:
http://radius.rubyforge.org
Instalation:
% gem install --remote radius
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!
Learn more by reading the Quick Start guide:
http://radius.rubyforge.org/files/QUICKSTART.html
Enjoy!
--
John Long
http://wiseheartdesign.com/
Ed Howland
2006-Aug-18 21:00 UTC
[Rails] [ANN] Radius 0.0.1 -- Powerful Tag-Based Templates
On 5/1/06, John W. Long <ng@johnwlong.com> wrote:> I am pleased to announce the immediate release of Radius 0.5.0. > > Radius is a small, but powerful tag-based template language for Ruby > inspired by the template languages used in MovableType > <www.movabletype.org> and TextPattern <www.textpattern.com>. It uses > tags similar to XML, but can be used to generate any form of plain text > (HTML, e-mail, etc...).Hi, I d/l the current release 0.5.0 and some things didn''t work. The docs say that the default tag prefix is ''radius'', but the default when I created it was nil. This then only works for tags like this: <:hello name="john" /> Also the Quickstart guide has an example using just c=Context.new But you need: c=Radius::Context.new Cool lib tho. I''d previously been using MasterView [1] and there are some similarities. But I like the way I can create individual contexts and reuse them here. I can use them in helper libs, inside RHTML templates, etc. I''m attempting a larger DSL around this. One thing, I don''t get is how to get these to automatically get called from within rails. I guess, you have to just use erb''s <%parser.parse ''<r:my_tag /> %> Is there a way in Rails to intercept the default render dispatch with your own thing? There is the block parameter to render, but does that do anything. Should there be a specific file extension, say file.rad which would fire up Radius to do the parsing? MV does this somehow, but it is dark magic. Ed [1] MasterView - Rails-optimized (x)html friendly template engine http://masterview.org/> -- > John Long > http://wiseheartdesign.com/-- Ed Howland http://greenprogrammer.blogspot.com