bootstrap_builder 0.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.DS_Store +0 -0
- data/LICENSE.txt +20 -0
- data/README.md +63 -0
- data/Rakefile +14 -0
- data/VERSION +1 -0
- data/app/.DS_Store +0 -0
- data/app/assets/images/glyphicons-halflings-white.png +0 -0
- data/app/assets/images/glyphicons-halflings.png +0 -0
- data/app/assets/javascripts/bootstrap.js +1722 -0
- data/app/assets/javascripts/formatted_form.js +17 -0
- data/app/assets/stylesheets/bootstrap-responsive.css +567 -0
- data/app/assets/stylesheets/bootstrap.css +3365 -0
- data/app/views/bootstrap_builder/_check_box.html.haml +14 -0
- data/app/views/bootstrap_builder/_default_field.html.haml +33 -0
- data/app/views/bootstrap_builder/_radio_button.html.haml +24 -0
- data/app/views/bootstrap_builder/_submit.html.haml +9 -0
- data/bootstrap_builder.gemspec +62 -0
- data/lib/bootstrap_builder/.DS_Store +0 -0
- data/lib/bootstrap_builder/builder.rb +168 -0
- data/lib/bootstrap_builder/configuration.rb +17 -0
- data/lib/bootstrap_builder/engine.rb +14 -0
- data/lib/bootstrap_builder/helper.rb +13 -0
- data/lib/bootstrap_builder/railtie.rb +12 -0
- data/lib/bootstrap_builder.rb +20 -0
- data/rails-bootstrap-builder.gemspec +52 -0
- data/vendor/.DS_Store +0 -0
- metadata +74 -0
@@ -0,0 +1,14 @@
|
|
1
|
+
.control-group{:class => ('error' if error_messages.present?)}
|
2
|
+
|
3
|
+
= builder.label(method, label_text, :class => 'control-label')
|
4
|
+
.controls
|
5
|
+
- if defined?(values)
|
6
|
+
- values.each do |value|
|
7
|
+
%label.checkbox #{value[:field]} #{value[:label_text]}
|
8
|
+
- else
|
9
|
+
%label.checkbox
|
10
|
+
= field
|
11
|
+
= help_block if help_block.present?
|
12
|
+
|
13
|
+
- if error_messages.present?
|
14
|
+
%span.help-inline= error_messages
|
@@ -0,0 +1,33 @@
|
|
1
|
+
- if builder.options[:html] && builder.options[:html][:class] =~ /form-horizontal/
|
2
|
+
.control-group{:class => ('error' if error_messages.present?)}
|
3
|
+
= builder.label(method, label_text, :class => 'control-label')
|
4
|
+
.controls
|
5
|
+
- if prepend.present?
|
6
|
+
.input-prepend
|
7
|
+
%span.add-on= prepend
|
8
|
+
= field
|
9
|
+
- elsif append.present?
|
10
|
+
.input-append
|
11
|
+
= field
|
12
|
+
%span.add-on= append
|
13
|
+
- else
|
14
|
+
= field
|
15
|
+
|
16
|
+
|
17
|
+
- if error_messages.present?
|
18
|
+
%span.help-inline= error_messages
|
19
|
+
|
20
|
+
- if help_block.present?
|
21
|
+
%p.help-block= help_block
|
22
|
+
|
23
|
+
- else
|
24
|
+
- if label_text.present?
|
25
|
+
= builder.label(method, label_text, :class => 'control-label')
|
26
|
+
= field
|
27
|
+
|
28
|
+
- if error_messages.present?
|
29
|
+
%span.help-inline= error_messages
|
30
|
+
|
31
|
+
- if help_block.present?
|
32
|
+
%p.help-block= help_block
|
33
|
+
|
@@ -0,0 +1,24 @@
|
|
1
|
+
.clearfix{:class => ('error' if error_messages.present?)}
|
2
|
+
|
3
|
+
%label
|
4
|
+
= label_text
|
5
|
+
- if required
|
6
|
+
%span.required *
|
7
|
+
|
8
|
+
.input
|
9
|
+
%ul.inputs-list
|
10
|
+
- choices.each do |choice|
|
11
|
+
%li
|
12
|
+
%label{:for => choice[:label_for]}
|
13
|
+
= choice[:field]
|
14
|
+
%span= choice[:label]
|
15
|
+
|
16
|
+
|
17
|
+
|
18
|
+
- if description.present?
|
19
|
+
%span.help-block= description
|
20
|
+
|
21
|
+
- if error_messages.present?
|
22
|
+
%span.help-inline= error_messages
|
23
|
+
|
24
|
+
|
@@ -0,0 +1,62 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = "bootstrap_builder"
|
8
|
+
s.version = "0.0.0"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["Jack Neto", "The Working Group Inc."]
|
12
|
+
s.date = "2012-02-05"
|
13
|
+
s.description = ""
|
14
|
+
s.email = "jack@twg.ca"
|
15
|
+
s.extra_rdoc_files = [
|
16
|
+
"LICENSE.txt",
|
17
|
+
"README.md"
|
18
|
+
]
|
19
|
+
s.files = [
|
20
|
+
".DS_Store",
|
21
|
+
"LICENSE.txt",
|
22
|
+
"README.md",
|
23
|
+
"Rakefile",
|
24
|
+
"VERSION",
|
25
|
+
"app/.DS_Store",
|
26
|
+
"app/assets/images/glyphicons-halflings-white.png",
|
27
|
+
"app/assets/images/glyphicons-halflings.png",
|
28
|
+
"app/assets/javascripts/bootstrap.js",
|
29
|
+
"app/assets/javascripts/formatted_form.js",
|
30
|
+
"app/assets/stylesheets/bootstrap-responsive.css",
|
31
|
+
"app/assets/stylesheets/bootstrap.css",
|
32
|
+
"app/views/bootstrap_builder/_check_box.html.haml",
|
33
|
+
"app/views/bootstrap_builder/_default_field.html.haml",
|
34
|
+
"app/views/bootstrap_builder/_radio_button.html.haml",
|
35
|
+
"app/views/bootstrap_builder/_submit.html.haml",
|
36
|
+
"bootstrap_builder.gemspec",
|
37
|
+
"lib/bootstrap_builder.rb",
|
38
|
+
"lib/bootstrap_builder/.DS_Store",
|
39
|
+
"lib/bootstrap_builder/builder.rb",
|
40
|
+
"lib/bootstrap_builder/configuration.rb",
|
41
|
+
"lib/bootstrap_builder/engine.rb",
|
42
|
+
"lib/bootstrap_builder/helper.rb",
|
43
|
+
"lib/bootstrap_builder/railtie.rb",
|
44
|
+
"rails-bootstrap-builder.gemspec",
|
45
|
+
"vendor/.DS_Store"
|
46
|
+
]
|
47
|
+
s.homepage = "http://github.com/twg/bootstrap_builder"
|
48
|
+
s.licenses = ["MIT"]
|
49
|
+
s.require_paths = ["lib"]
|
50
|
+
s.rubygems_version = "1.8.15"
|
51
|
+
s.summary = "A Rails form builder that generates Twitter Bootstrap markup"
|
52
|
+
|
53
|
+
if s.respond_to? :specification_version then
|
54
|
+
s.specification_version = 3
|
55
|
+
|
56
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
57
|
+
else
|
58
|
+
end
|
59
|
+
else
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
Binary file
|
@@ -0,0 +1,168 @@
|
|
1
|
+
module BootstrapBuilder
|
2
|
+
class Builder < ActionView::Helpers::FormBuilder
|
3
|
+
|
4
|
+
%w(text_field password_field text_area file_field datetime_select date_select time_zone_select).each do |field_name|
|
5
|
+
define_method field_name do |method, *args|
|
6
|
+
options = args.detect { |a| a.is_a?(Hash) } || {}
|
7
|
+
render_field(field_name, method, options) { super(method, options) }
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
def select(method, choices, options = {}, html_options = {})
|
12
|
+
render_field('select', method, options) { super(method, choices, options, html_options) }
|
13
|
+
end
|
14
|
+
|
15
|
+
def hidden_field(method, options = {}, html_options = {})
|
16
|
+
super(method, options)
|
17
|
+
end
|
18
|
+
|
19
|
+
def check_box(method, options = {}, checked_value = "1", unchecked_value = "0")
|
20
|
+
if options[:values].present?
|
21
|
+
values = options[:values].collect do |key, val|
|
22
|
+
|
23
|
+
{
|
24
|
+
:field => super(method, options.merge({:name => "#{object_name}[#{method}][]"}), val, nil),
|
25
|
+
:label_text => key,
|
26
|
+
:label_for => "#{object_name}_#{method}_#{val.to_s.gsub(' ', '_').underscore}"
|
27
|
+
}
|
28
|
+
end
|
29
|
+
@template.render(:partial => "#{BootstrapBuilder.config.template_folder}/check_box", :locals => {
|
30
|
+
:builder => self,
|
31
|
+
:method => method,
|
32
|
+
:values => values,
|
33
|
+
:label_text => label_text(method, options.delete(:label)),
|
34
|
+
:error_messages => error_messages_for(method)
|
35
|
+
})
|
36
|
+
else
|
37
|
+
render_field('check_box', method, options) do
|
38
|
+
super(method, options, checked_value, unchecked_value)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def radio_button(method, tag_value, options = {})
|
44
|
+
case tag_value
|
45
|
+
when Array
|
46
|
+
choices = tag_value.collect do |choice|
|
47
|
+
if !choice.is_a?(Array)
|
48
|
+
choice = [choice, choice]
|
49
|
+
elsif choice.length == 1
|
50
|
+
choice << choice[0]
|
51
|
+
end
|
52
|
+
{
|
53
|
+
:field => super(method, choice[1], options),
|
54
|
+
:label => choice[0],
|
55
|
+
:label_for => "#{object_name}_#{method}_#{choice[1].to_s.gsub(' ', '_').underscore}"
|
56
|
+
}
|
57
|
+
end
|
58
|
+
else
|
59
|
+
choices = [{
|
60
|
+
:field => super(method, tag_value),
|
61
|
+
:label => tag_value,
|
62
|
+
:label_for => "#{object_name}_#{method}_#{tag_value.to_s.gsub(' ', '_').underscore}"
|
63
|
+
}]
|
64
|
+
end
|
65
|
+
|
66
|
+
@template.render(:partial => "#{BootstrapBuilder.config.template_folder}/radio_button", :locals => {
|
67
|
+
:builder => self,
|
68
|
+
:method => method,
|
69
|
+
:label_text => label_text(method, options.delete(:label)),
|
70
|
+
:choices => choices,
|
71
|
+
:required => options.delete(:required),
|
72
|
+
:before_text => @template.raw(options.delete(:before_text)),
|
73
|
+
:after_text => @template.raw(options.delete(:after_text)),
|
74
|
+
:help_block => @template.raw(options.delete(:help_block)),
|
75
|
+
:error_messages => error_messages_for(method)
|
76
|
+
})
|
77
|
+
end
|
78
|
+
|
79
|
+
# f.submit 'Log In', :change_to_text => 'Logging you in ...'
|
80
|
+
def submit(value, options={}, &block)
|
81
|
+
after_text = @template.capture(&block) if block_given?
|
82
|
+
|
83
|
+
# Add specific bootstrap class
|
84
|
+
options[:class] ||= ''
|
85
|
+
options[:class] += ' btn'
|
86
|
+
unless options[:class] =~ /btn-/
|
87
|
+
options[:class] += ' btn-primary'
|
88
|
+
end
|
89
|
+
|
90
|
+
# Set the script to change the text
|
91
|
+
if change_to_text = options.delete(:change_to_text)
|
92
|
+
options[:onclick] ||= ''
|
93
|
+
options[:onclick] = "$(this).closest('.actions').hide();$(this).closest('.actions').after($('<div class=actions>#{change_to_text}</div>'))"
|
94
|
+
end
|
95
|
+
|
96
|
+
@template.render(:partial => "#{BootstrapBuilder.config.template_folder}/submit", :locals => {
|
97
|
+
:builder => self,
|
98
|
+
:field => super(value, options),
|
99
|
+
:after_text => after_text,
|
100
|
+
:change_to_text => change_to_text
|
101
|
+
})
|
102
|
+
end
|
103
|
+
|
104
|
+
# generic container for all things form
|
105
|
+
def element(label = ' ', value = '', type = 'text_field', &block)
|
106
|
+
value += @template.capture(&block) if block_given?
|
107
|
+
%{
|
108
|
+
<div class='form_element #{type}'>
|
109
|
+
<div class='label'>
|
110
|
+
#{label}
|
111
|
+
</div>
|
112
|
+
<div class='value'>
|
113
|
+
#{value}
|
114
|
+
</div>
|
115
|
+
</div>
|
116
|
+
}.html_safe
|
117
|
+
end
|
118
|
+
|
119
|
+
def error_messages
|
120
|
+
if object && !object.errors.empty?
|
121
|
+
message = object.errors[:base].present? ? object.errors[:base]: 'There were some problems submitting this form. Please correct all the highlighted fields and try again'
|
122
|
+
@template.content_tag(:div, message, :class => 'form_error')
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
def error_messages_for(method)
|
127
|
+
if (object and object.respond_to?(:errors) and errors = object.errors[method] and !errors.empty?)
|
128
|
+
errors.is_a?(Array) ? errors.first : errors
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
def fields_for(record_or_name_or_array, *args, &block)
|
133
|
+
options = args.extract_options!
|
134
|
+
options.merge!(:builder => BootstrapBuilder::Builder)
|
135
|
+
super(record_or_name_or_array, *(args << options), &block)
|
136
|
+
end
|
137
|
+
|
138
|
+
|
139
|
+
protected
|
140
|
+
|
141
|
+
# Main rendering method
|
142
|
+
def render_field(field_name, method, options={}, &block)
|
143
|
+
case field_name
|
144
|
+
when 'check_box'
|
145
|
+
template = field_name
|
146
|
+
else
|
147
|
+
template = 'default_field'
|
148
|
+
end
|
149
|
+
@template.render(:partial => "#{BootstrapBuilder.config.template_folder}/#{template}", :locals => {
|
150
|
+
:builder => self,
|
151
|
+
:method => method,
|
152
|
+
:field_name => field_name,
|
153
|
+
:field => @template.capture(&block),
|
154
|
+
:label_text => label_text(method, options.delete(:label)),
|
155
|
+
:required => options.delete(:required),
|
156
|
+
:prepend => @template.raw(options.delete(:prepend)),
|
157
|
+
:append => @template.raw(options.delete(:append)),
|
158
|
+
:help_block => @template.raw(options.delete(:help_block)),
|
159
|
+
:error_messages => error_messages_for(method)
|
160
|
+
})
|
161
|
+
end
|
162
|
+
|
163
|
+
def label_text(method, text = nil)
|
164
|
+
text.nil? ? method.to_s.titleize.capitalize : @template.raw(text)
|
165
|
+
end
|
166
|
+
|
167
|
+
end
|
168
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module BootstrapBuilder
|
2
|
+
class Configuration
|
3
|
+
|
4
|
+
# The templates folder
|
5
|
+
attr_accessor :template_folder
|
6
|
+
|
7
|
+
# The templates folder
|
8
|
+
attr_accessor :default_form_class
|
9
|
+
|
10
|
+
# Configuration defaults
|
11
|
+
def initialize
|
12
|
+
@template_folder = :bootstrap_builder
|
13
|
+
@default_form_class = 'form-horizontal'
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require "bootstrap_builder"
|
2
|
+
require "rails"
|
3
|
+
|
4
|
+
module BootstrapBuilder
|
5
|
+
class Engine < Rails::Engine
|
6
|
+
|
7
|
+
initializer 'helper' do |app|
|
8
|
+
ActionView::Base.send(:include, BootstrapBuilder::Helper)
|
9
|
+
|
10
|
+
# Remove field_with_errors div around elements with errors
|
11
|
+
ActionView::Base.field_error_proc = proc { |input, instance| input }
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module BootstrapBuilder::Helper
|
2
|
+
|
3
|
+
def bootstrap_form_for(record_or_name_or_array, *args, &proc)
|
4
|
+
options = args.extract_options!
|
5
|
+
options.merge!(:builder => BootstrapBuilder::Builder)
|
6
|
+
options[:html] ||= {:class => ''}
|
7
|
+
if !(options[:html][:class] =~ /form-/)
|
8
|
+
options[:html][:class] += ' ' + BootstrapBuilder.config.default_form_class
|
9
|
+
end
|
10
|
+
form_for(record_or_name_or_array, *(args << options), &proc)
|
11
|
+
end
|
12
|
+
|
13
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
# Configure Rails 3.0 to use public/javascripts/jquery et al
|
2
|
+
module Jquery
|
3
|
+
module Rails
|
4
|
+
|
5
|
+
class Railtie < ::Rails::Railtie
|
6
|
+
config.before_configuration do
|
7
|
+
config.action_view.javascript_expansions[:defaults] |= ['bootstrap']
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'bootstrap_builder/engine'
|
2
|
+
require 'bootstrap_builder/builder'
|
3
|
+
require 'bootstrap_builder/helper'
|
4
|
+
require 'bootstrap_builder/configuration'
|
5
|
+
|
6
|
+
module BootstrapBuilder
|
7
|
+
class << self
|
8
|
+
|
9
|
+
def configure
|
10
|
+
yield configuration
|
11
|
+
end
|
12
|
+
|
13
|
+
def configuration
|
14
|
+
@configuration ||= Configuration.new
|
15
|
+
end
|
16
|
+
alias :config :configuration
|
17
|
+
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
@@ -0,0 +1,52 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = "rails-bootstrap-builder"
|
8
|
+
s.version = "0.0.0"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["Jack Neto", "The Working Group Inc."]
|
12
|
+
s.date = "2012-02-04"
|
13
|
+
s.description = ""
|
14
|
+
s.email = "jack@twg.ca"
|
15
|
+
s.extra_rdoc_files = [
|
16
|
+
"LICENSE.txt",
|
17
|
+
"README.md"
|
18
|
+
]
|
19
|
+
s.files = [
|
20
|
+
"LICENSE.txt",
|
21
|
+
"README.md",
|
22
|
+
"Rakefile",
|
23
|
+
"VERSION",
|
24
|
+
"app/.DS_Store",
|
25
|
+
"app/views/bootstrap_builder/_check_box.html.haml",
|
26
|
+
"app/views/bootstrap_builder/_default_field.html.haml",
|
27
|
+
"app/views/bootstrap_builder/_radio_button.html.haml",
|
28
|
+
"app/views/bootstrap_builder/_submit.html.haml",
|
29
|
+
"lib/bootstrap_builder.rb",
|
30
|
+
"lib/bootstrap_builder/.DS_Store",
|
31
|
+
"lib/bootstrap_builder/builder.rb",
|
32
|
+
"lib/bootstrap_builder/configuration.rb",
|
33
|
+
"lib/bootstrap_builder/engine.rb",
|
34
|
+
"lib/bootstrap_builder/helper.rb",
|
35
|
+
"vendor/.DS_Store"
|
36
|
+
]
|
37
|
+
s.homepage = "http://github.com/twg/rails-bootstrap-builder"
|
38
|
+
s.licenses = ["MIT"]
|
39
|
+
s.require_paths = ["lib"]
|
40
|
+
s.rubygems_version = "1.8.15"
|
41
|
+
s.summary = "A Rails form builder to the generates Twitter Bootstrap markup"
|
42
|
+
|
43
|
+
if s.respond_to? :specification_version then
|
44
|
+
s.specification_version = 3
|
45
|
+
|
46
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
47
|
+
else
|
48
|
+
end
|
49
|
+
else
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
data/vendor/.DS_Store
ADDED
Binary file
|
metadata
ADDED
@@ -0,0 +1,74 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: bootstrap_builder
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.0
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Jack Neto
|
9
|
+
- The Working Group Inc.
|
10
|
+
autorequire:
|
11
|
+
bindir: bin
|
12
|
+
cert_chain: []
|
13
|
+
date: 2012-02-05 00:00:00.000000000 Z
|
14
|
+
dependencies: []
|
15
|
+
description: ''
|
16
|
+
email: jack@twg.ca
|
17
|
+
executables: []
|
18
|
+
extensions: []
|
19
|
+
extra_rdoc_files:
|
20
|
+
- LICENSE.txt
|
21
|
+
- README.md
|
22
|
+
files:
|
23
|
+
- .DS_Store
|
24
|
+
- LICENSE.txt
|
25
|
+
- README.md
|
26
|
+
- Rakefile
|
27
|
+
- VERSION
|
28
|
+
- app/.DS_Store
|
29
|
+
- app/assets/images/glyphicons-halflings-white.png
|
30
|
+
- app/assets/images/glyphicons-halflings.png
|
31
|
+
- app/assets/javascripts/bootstrap.js
|
32
|
+
- app/assets/javascripts/formatted_form.js
|
33
|
+
- app/assets/stylesheets/bootstrap-responsive.css
|
34
|
+
- app/assets/stylesheets/bootstrap.css
|
35
|
+
- app/views/bootstrap_builder/_check_box.html.haml
|
36
|
+
- app/views/bootstrap_builder/_default_field.html.haml
|
37
|
+
- app/views/bootstrap_builder/_radio_button.html.haml
|
38
|
+
- app/views/bootstrap_builder/_submit.html.haml
|
39
|
+
- bootstrap_builder.gemspec
|
40
|
+
- lib/bootstrap_builder.rb
|
41
|
+
- lib/bootstrap_builder/.DS_Store
|
42
|
+
- lib/bootstrap_builder/builder.rb
|
43
|
+
- lib/bootstrap_builder/configuration.rb
|
44
|
+
- lib/bootstrap_builder/engine.rb
|
45
|
+
- lib/bootstrap_builder/helper.rb
|
46
|
+
- lib/bootstrap_builder/railtie.rb
|
47
|
+
- rails-bootstrap-builder.gemspec
|
48
|
+
- vendor/.DS_Store
|
49
|
+
homepage: http://github.com/twg/bootstrap_builder
|
50
|
+
licenses:
|
51
|
+
- MIT
|
52
|
+
post_install_message:
|
53
|
+
rdoc_options: []
|
54
|
+
require_paths:
|
55
|
+
- lib
|
56
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
63
|
+
none: false
|
64
|
+
requirements:
|
65
|
+
- - ! '>='
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: '0'
|
68
|
+
requirements: []
|
69
|
+
rubyforge_project:
|
70
|
+
rubygems_version: 1.8.15
|
71
|
+
signing_key:
|
72
|
+
specification_version: 3
|
73
|
+
summary: A Rails form builder that generates Twitter Bootstrap markup
|
74
|
+
test_files: []
|