Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Instrument is a simple library for producing dynamically generated "controls" with various templating languages.
Ruby
Branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
lib
spec
tasks
website
.gitignore
CHANGELOG
LICENSE
README
Rakefile

README

== 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)
Something went wrong with that request. Please try again.