Jig version 0.1.0 has been released.
A jig is a data structure designed to facilitate construction and
manipulation of strings with an inherent hierarchical syntax. The
idea is derived from the project (http://www.brics.dk/bigwig/)
and in particular the XML templating constructs described in the
paper: A Type System for Dynamic Web Documents
(http://www.brics.dk/bigwig/publications/dyndoc.pdf). The name is
derived from woodworking where a jig is a template designed to guide
A jig is an ordered sequence of objects (usually strings) and named
gaps. When rendered as a string by Jig#to_s, the objects are
rendered by calling #to_s on each object in order. The gaps are skipped.
A new jig may be constructed from an existing jig by ‘plugging’ one
or more of the named gaps. The new jig shares the objects and their
ordering from the original jig but with the named gap replaced with
the ‘plug’. Gaps may be plugged by any object or sequence of
objects. When a gap is plugged with another jig, the contents
(including gaps) are incorporated into the new jig.
In addition to strings and gaps, a Jig may contain proc objects
(or lambdas or methods). Procs within a jig are not evaluated until
the jig is rendered as a string by #to_s.
The Jig package includes subclasses for constructing XML, XHTML,
and CSS documents.
Install (once the gem shows up in the gem mirrors):
gem install jig