Methods
Public Class
Classes and Modules
Constants
CGI | = | Object.new | ||
CONFIGURATIONS | = | {:default=>{}} |
Hash storing all configurations. Configurations are groups of related transformers, so that you can specify a single :config option when creating a |
|
ESCAPE_TABLE | = | {'&' => '&', '<' => '<', '>' => '>', '"' => '"', "'" => '''}.freeze | ||
MAJOR | = | 2 |
The major version of |
|
MINOR | = | 3 |
The minor version of |
|
SHARED_WRAPPERS | = | [:tr, :table, :ol, :fieldset_ol] |
Transformer symbols shared by wrapper and inputs_wrapper |
|
TINY | = | 0 |
The patch version of |
|
TRANSFORMERS | = | {} |
Main hash storing the registered transformers. Maps transformer type symbols to subhashes containing the registered transformers for that type. Those subhashes should have symbol keys and values that are either classes or objects that respond to |
|
TRANSFORMER_TYPES | = | [:formatter, :serializer, :wrapper, :error_handler, :helper, :labeler, :inputs_wrapper, :tag_wrapper, :set_wrapper] |
Array of all supported transformer types. |
|
VERSION | = | "#{MAJOR}.#{MINOR}.#{TINY}".freeze |
Version constant, use |
|
VERSION_NUMBER | = | MAJOR*10000 + MINOR*100 + TINY |
The full version of |
Attributes
default_add_blank_prompt | [RW] |
The default prompt to use for the :add_blank option (default: nil). |
default_config | [RW] |
Set the default configuration to use if none is explicitly specified (default: :default). |
Public Class methods
Update the :class
entry in the attr
hash with the given classes
, adding the classes after any existing classes.
# File lib/forme.rb 101 def self.attr_classes(attr, *classes) 102 attr[:class] = merge_classes(attr[:class], *classes) 103 end
Update the :class
entry in the attr
hash with the given classes
, adding the classes before any existing classes.
# File lib/forme/bs5.rb 8 def self.attr_classes_after(attr, *classes) 9 attr[:class] = merge_classes(*classes, attr[:class]) 10 end
Call Forme::Form.form
with the given arguments and block.
# File lib/forme.rb 95 def self.form(*a, &block) 96 Form.form(*a, &block) 97 end
# File lib/forme.rb 18 def self.h(value) 19 CGI.escapeHTML(value.to_s) 20 end
Return a string that includes all given class strings
# File lib/forme.rb 106 def self.merge_classes(*classes) 107 classes.compact.join(' ') 108 end
Create a RawString
using the given string, which will disable automatic escaping for that string.
# File lib/forme.rb 112 def self.raw(s) 113 RawString.new(s) 114 end
Register a new configuration. Type is the configuration name symbol, and hash maps transformer type symbols to transformer name symbols.
# File lib/forme.rb 88 def self.register_config(type, hash) 89 CONFIGURATIONS[type] = CONFIGURATIONS[hash.fetch(:base, :default)].merge(hash) 90 end
Register a new transformer with this library. Arguments:
type |
Transformer type symbol |
sym |
Transformer name symbol |
obj/block |
Transformer to associate with this symbol. Should provide either |
# File lib/forme.rb 80 def self.register_transformer(type, sym, obj=nil, &block) 81 raise Error, "Not a valid transformer type" unless TRANSFORMERS.has_key?(type) 82 raise Error, "Must provide either block or obj, not both" if obj && block 83 TRANSFORMERS[type][sym] = obj||block 84 end
If there is a related transformer, call it with the given args
and block
. Otherwise, attempt to return the initial input without modifying it.
# File lib/forme.rb 118 def self.transform(type, trans_name, default_opts, *args, &block) 119 if trans = transformer(type, trans_name, default_opts) 120 trans.call(*args, &block) 121 else 122 case type 123 when :inputs_wrapper 124 yield 125 when :labeler, :error_handler, :wrapper, :helper, :set_wrapper, :tag_wrapper 126 args.first 127 else 128 raise Error, "No matching #{type}: #{trans_name.inspect}" 129 end 130 end 131 end
Get the related transformer for the given transformer type. Output depends on the type of trans
:
Symbol |
Assume a request for a registered transformer, so look it up in the |
Hash |
If |
nil |
Assume the default transformer for this receiver. |
otherwise |
return |
# File lib/forme.rb 141 def self.transformer(type, trans, default_opts=nil) 142 case trans 143 when Symbol 144 type = :wrapper if type == :set_wrapper || type == :tag_wrapper 145 TRANSFORMERS[type][trans] || raise(Error, "invalid #{type}: #{trans.inspect} (valid #{type}s: #{TRANSFORMERS[type].keys.map(&:inspect).join(', ')})") 146 when Hash 147 if trans.has_key?(type) 148 if v = trans[type] 149 transformer(type, v, default_opts) 150 end 151 else 152 transformer(type, nil, default_opts) 153 end 154 when nil 155 transformer(type, default_opts[type]) if default_opts 156 else 157 if trans.respond_to?(:call) 158 trans 159 else 160 raise Error, "#{type} #{trans.inspect} must respond to #call" 161 end 162 end 163 end
Returns the version as a frozen string (e.g. ‘0.1.0’)
# File lib/forme/version.rb 22 def self.version 23 VERSION 24 end