== Instrument
Homepage:: instrument.rubyforge.org[http://instrument.rubyforge.org/]
Author:: Bob Aman (mailto:bob@sporkmonger.com)
Copyright:: Copyright © 2008 Day Automation Systems, Inc.
License:: MIT
== Description
Instrument is a simple library for producing dynamically generated "controls"
with various templating languages.
== Features
* Generate controls with Erb, Haml, Markaby, or XML Builder. Instrument
doesn't care what template language you prefer.
* Output XHTML, XML, or JSON. Instrument doesn't care what your output
format is.
== Example Usage
select_control = SelectControl.new(:name => "base", :selections => [
{:label => "One", :value => "1"},
{:label => "Two", :value => "2"},
{:label => "Three", :value => "3"},
{:label => "Four", :value => "4"}
])
xhtml_output = select_control.to_xhtml
or
include Instrument::ControlBuilder
select_control(:name => "base", :selections => [
{:label => "One", :value => "1"},
{:label => "Two", :value => "2"},
{:label => "Three", :value => "3"},
{:label => "Four", :value => "4"}
]).to_xhtml
select_control.rb:
require "instrument"
class SelectControl < Instrument::Control
class Option
def initialize(label, value)
@label, @value = label, value
end
attr_accessor :label
attr_accessor :value
end
def element_id
return self.options[:id] || self.options[:name]
end
def element_name
return self.options[:name]
end
def selections
if !defined?(@selections) || @selections == nil
@selections = []
for selection in self.options[:selections]
if selection.kind_of?(Hash)
@selections << Option.new(selection[:label], selection[:value])
else
@selections << Option.new(selection, selection)
end
end
end
return @selections
end
end
select.xhtml.haml:
%select{:id => element_id, :name => element_name}
- for selection in selections
%option{:value => selection.value}
= selection.label
== Requirements
* Instrument has no explicit dependencies. If you want to output Haml, you
will need the Haml library installed. Same goes for any of the other
template languages.
== Install
* sudo gem install instrument
* sudo gem install haml (optional)
* sudo gem install erubis (optional)
* sudo gem install markaby (optional)
* sudo gem install builder (optional)