mediatainment-bootstrap-form 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +4 -0
- data/.travis.yml +6 -0
- data/Gemfile +4 -0
- data/Gemfile.rails.3.2 +7 -0
- data/Gemfile.rails.4.0 +7 -0
- data/README.md +83 -0
- data/Rakefile +11 -0
- data/bootsrap-form.gemspec +27 -0
- data/lib/bootstrap-form.rb +3 -0
- data/lib/bootstrap-form/form_helper.rb +90 -0
- data/lib/bootstrap-form/version.rb +5 -0
- data/test/lib/action_view/helpers/form_helper_test.rb +151 -0
- data/test/test_helper.rb +30 -0
- metadata +115 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 27e04d509a138726a643f04f7a3f6cbbdee8c9d3
|
4
|
+
data.tar.gz: 65d8d281a0a6af71294ebf05ee282074fe20b5fb
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 534335bfe1b343ad4e31fbf327e3668f80c095c7cf0ad3f1def4eba0e0df7980ce9d58b983312e3baeb47ba05d11dcf9b653748e4fe91bdec42bd9a09a531b36
|
7
|
+
data.tar.gz: 16a525b9f8fbc77a3fa2c5ba92c8b629fdee3820d70cc5d944229858dec73eb044881a8d5616afd0972f5deaa5f2d96cb8371b68007a41e9bc54f957cde12fdb
|
data/.gitignore
ADDED
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/Gemfile.rails.3.2
ADDED
data/Gemfile.rails.4.0
ADDED
data/README.md
ADDED
@@ -0,0 +1,83 @@
|
|
1
|
+
# Bootstrap Form
|
2
|
+
|
3
|
+
[](https://travis-ci.org/dabit/bootstrap-form)
|
4
|
+
|
5
|
+
Form Helpers to make your form inputs [look like this](http://twitter.github.com/bootstrap/#forms).
|
6
|
+
|
7
|
+
Helps you to create beautiful mocks really quickly.
|
8
|
+
|
9
|
+
Works with Bootstrap 2.3.0 and Rails 3.2+ (including Rails 4)
|
10
|
+
|
11
|
+
## Usage
|
12
|
+
|
13
|
+
Add the gem to your Gemfile
|
14
|
+
|
15
|
+
gem 'bootstrap-form'
|
16
|
+
|
17
|
+
Bundle install
|
18
|
+
|
19
|
+
bundle install
|
20
|
+
|
21
|
+
To make them look even better, I recommend you add this to your
|
22
|
+
application.rb
|
23
|
+
|
24
|
+
ActionView::Base.field_error_proc = proc { |input, instance| input }
|
25
|
+
|
26
|
+
## Example
|
27
|
+
|
28
|
+
You write this:
|
29
|
+
|
30
|
+
form_for @account do |f|
|
31
|
+
f.bootstrap_text_field :name
|
32
|
+
end
|
33
|
+
|
34
|
+
|
35
|
+
You get something like this:
|
36
|
+
|
37
|
+
<div class="control-group">
|
38
|
+
<label class="control-label" for="account_name">Name</label>
|
39
|
+
<div class="controls">
|
40
|
+
<input id="account_name" name="account_name" size="30" type="text">
|
41
|
+
</div>
|
42
|
+
</div>
|
43
|
+
|
44
|
+
Pretty straight forward.
|
45
|
+
|
46
|
+
## Custom Label
|
47
|
+
|
48
|
+
You can specify a custom label for the input by setting the label
|
49
|
+
option:
|
50
|
+
|
51
|
+
form_for @account do |f|
|
52
|
+
f.bootstrap_text_field :name, :label => 'A custom label'
|
53
|
+
end
|
54
|
+
|
55
|
+
Then, you get something like this:
|
56
|
+
|
57
|
+
<div class="control-group">
|
58
|
+
<label class="control-label" for="account_name">A custom label</label>
|
59
|
+
<div class="controls">
|
60
|
+
<input id="account_name" name="account_name" size="30" type="text">
|
61
|
+
</div>
|
62
|
+
</div>
|
63
|
+
|
64
|
+
## Current Helpers List
|
65
|
+
|
66
|
+
* bootstrap_text_field
|
67
|
+
* bootstrap_password_field
|
68
|
+
* bootstrap_collection_select
|
69
|
+
* bootstrap_select
|
70
|
+
* bootstrap_file_field
|
71
|
+
* bootstrap_text_area
|
72
|
+
* bootstrap_email_field
|
73
|
+
|
74
|
+
## Error handling
|
75
|
+
|
76
|
+
All fields will automatically add the classes to show errors with Twitter
|
77
|
+
bootstrap styles.
|
78
|
+
|
79
|
+
## TODO
|
80
|
+
|
81
|
+
Coming soon:
|
82
|
+
|
83
|
+
* More form inputs
|
data/Rakefile
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "bootstrap-form/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "mediatainment-bootstrap-form"
|
7
|
+
s.version = Bootstrap::Form::VERSION
|
8
|
+
s.authors = ["David Padilla"]
|
9
|
+
s.email = ["mail@mediatainment-productions.com"]
|
10
|
+
s.homepage = ""
|
11
|
+
s.summary = %q{Twitter Bootstrap Form helpers}
|
12
|
+
s.description = %q{Twitter Bootstrap Form helpers}
|
13
|
+
|
14
|
+
s.rubyforge_project = "bootstrap-form"
|
15
|
+
|
16
|
+
s.files = `git ls-files`.split("\n")
|
17
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
18
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
|
+
s.require_paths = ["lib"]
|
20
|
+
|
21
|
+
|
22
|
+
s.add_dependency 'railties', '> 3.2'
|
23
|
+
s.add_dependency 'actionpack', '> 3.2'
|
24
|
+
|
25
|
+
s.add_development_dependency "minitest"
|
26
|
+
s.add_development_dependency "rr"
|
27
|
+
end
|
@@ -0,0 +1,90 @@
|
|
1
|
+
module ActionView
|
2
|
+
module Helpers
|
3
|
+
module FormHelper
|
4
|
+
|
5
|
+
BOOTSTRAP_OPTIONS = [:label, :hint].freeze
|
6
|
+
|
7
|
+
def bootstrap_text_field(object_name, method, options={})
|
8
|
+
bootstrap_control_group_wrap(object_name, method, text_field(object_name, method, extract_input_options(options)), options)
|
9
|
+
end
|
10
|
+
|
11
|
+
def bootstrap_email_field(object_name, method, options={})
|
12
|
+
bootstrap_control_group_wrap(object_name, method, email_field(object_name, method, extract_input_options(options)), options)
|
13
|
+
end
|
14
|
+
|
15
|
+
def bootstrap_password_field(object_name, method, options={})
|
16
|
+
bootstrap_control_group_wrap(object_name, method, password_field(object_name, method, extract_input_options(options)), options)
|
17
|
+
end
|
18
|
+
|
19
|
+
def bootstrap_collection_select(object_name, method, collection, value_method, text_method, options = {}, html_options = {})
|
20
|
+
bootstrap_control_group_wrap(object_name, method, collection_select(object_name, method, collection, value_method, text_method, extract_input_options(options), html_options), options)
|
21
|
+
end
|
22
|
+
|
23
|
+
def bootstrap_select(object_name, method, choices, options, html_options)
|
24
|
+
bootstrap_control_group_wrap(object_name, method, select(object_name, method, choices, extract_input_options(options), html_options), options)
|
25
|
+
end
|
26
|
+
|
27
|
+
def bootstrap_file_field(object_name, method, options={})
|
28
|
+
bootstrap_control_group_wrap(object_name, method, file_field(object_name, method, extract_input_options(options)), options)
|
29
|
+
end
|
30
|
+
|
31
|
+
def bootstrap_text_area(object_name, method, options={})
|
32
|
+
bootstrap_control_group_wrap(object_name, method, text_area(object_name, method, extract_input_options(options)), options)
|
33
|
+
end
|
34
|
+
|
35
|
+
def bootstrap_control_group_wrap(object_name, method, content, options={})
|
36
|
+
error_messages = options[:object].errors[method]
|
37
|
+
control_group_tag = error_messages.blank? ? 'control-group' : 'control-group error'
|
38
|
+
inline_help = inline_help_tag(error_messages.presence || options[:hint])
|
39
|
+
|
40
|
+
content_tag(:div, label(object_name, method, options[:label], :class => 'control-label') +
|
41
|
+
content_tag(:div, content + inline_help, :class => 'controls'),
|
42
|
+
:class => control_group_tag)
|
43
|
+
end
|
44
|
+
|
45
|
+
def inline_help_tag(messages)
|
46
|
+
messages = Array.wrap(messages)
|
47
|
+
return '' if messages.empty?
|
48
|
+
message_span = ActiveSupport::SafeBuffer.new(" #{messages.to_sentence}")
|
49
|
+
content_tag(:span, message_span, :class => 'help-inline')
|
50
|
+
end
|
51
|
+
|
52
|
+
private
|
53
|
+
|
54
|
+
def extract_input_options(options)
|
55
|
+
options.except(*BOOTSTRAP_OPTIONS)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
class ActionView::Helpers::FormBuilder #:nodoc:
|
62
|
+
def bootstrap_text_field(method, options={})
|
63
|
+
@template.bootstrap_text_field(@object_name, method, objectify_options(options))
|
64
|
+
end
|
65
|
+
|
66
|
+
def bootstrap_email_field(method, options={})
|
67
|
+
@template.bootstrap_email_field(@object_name, method, objectify_options(options))
|
68
|
+
end
|
69
|
+
|
70
|
+
def bootstrap_password_field(method, options={})
|
71
|
+
@template.bootstrap_password_field(@object_name, method, objectify_options(options))
|
72
|
+
end
|
73
|
+
|
74
|
+
def bootstrap_collection_select(method, collection, value_method, text_method, options = {}, html_options = {})
|
75
|
+
@template.bootstrap_collection_select(@object_name, method, collection, value_method, text_method, objectify_options(options), html_options)
|
76
|
+
end
|
77
|
+
|
78
|
+
def bootstrap_select(method, choices, options={}, html_options={})
|
79
|
+
@template.bootstrap_select(@object_name, method, choices, objectify_options(options), html_options)
|
80
|
+
end
|
81
|
+
|
82
|
+
def bootstrap_file_field(method, options={})
|
83
|
+
self.multipart = true
|
84
|
+
@template.bootstrap_file_field(@object_name, method, objectify_options(options))
|
85
|
+
end
|
86
|
+
|
87
|
+
def bootstrap_text_area(method, options={})
|
88
|
+
@template.bootstrap_text_area(@object_name, method, objectify_options(options))
|
89
|
+
end
|
90
|
+
end
|
@@ -0,0 +1,151 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class FormHelperTest < ActionView::TestCase
|
4
|
+
def test_bootstrap_control_group_wrap
|
5
|
+
object = mock
|
6
|
+
errors = { :name => [] }
|
7
|
+
options = { :object => object }
|
8
|
+
content = ::ActiveSupport::SafeBuffer.new('content')
|
9
|
+
stub(object).errors { errors }
|
10
|
+
stub(object).name { 'Object Name' }
|
11
|
+
|
12
|
+
expected_code = %{<div class="control-group"><label class="control-label" for="post_name">Name</label><div class="controls">content</div></div>}
|
13
|
+
assert_equal expected_code, bootstrap_control_group_wrap(:post, :name, content, options)
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_bootstrap_control_group_wrap_with_label
|
17
|
+
object = mock
|
18
|
+
errors = { :name => [] }
|
19
|
+
options = { :object => object, :label => "Custom" }
|
20
|
+
content = ::ActiveSupport::SafeBuffer.new('content')
|
21
|
+
stub(object).errors { errors }
|
22
|
+
stub(object).name { 'Object Name' }
|
23
|
+
|
24
|
+
expected_code = %{<div class="control-group"><label class="control-label" for="post_name">Custom</label><div class="controls">content</div></div>}
|
25
|
+
assert_equal expected_code, bootstrap_control_group_wrap(:post, :name, content, options)
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_bootstrap_control_group_wrap_with_errors
|
29
|
+
object = mock
|
30
|
+
errors = { :name => ["can't be blank"] }
|
31
|
+
options = { :object => object }
|
32
|
+
content = ::ActiveSupport::SafeBuffer.new('content')
|
33
|
+
stub(object).errors { errors }
|
34
|
+
stub(object).name { 'Object Name' }
|
35
|
+
|
36
|
+
expected_code = %{<div class="control-group error"><label class="control-label" for="post_name">Name</label><div class="controls">content<span class="help-inline"> can't be blank</span></div></div>}
|
37
|
+
assert_equal expected_code, bootstrap_control_group_wrap(:post, :name, content, options)
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_bootstrap_control_group_wrap_with_many_errors
|
41
|
+
object = mock
|
42
|
+
errors = { :name => ["has already been taken", "is reserved", "must be odd"] }
|
43
|
+
options = { :object => object }
|
44
|
+
content = ::ActiveSupport::SafeBuffer.new('content')
|
45
|
+
stub(object).errors { errors }
|
46
|
+
stub(object).name { 'Object Name' }
|
47
|
+
|
48
|
+
expected_code = %{<div class="control-group error"><label class="control-label" for="post_name">Name</label><div class="controls">content<span class="help-inline"> has already been taken, is reserved, and must be odd</span></div></div>}
|
49
|
+
assert_equal expected_code, bootstrap_control_group_wrap(:post, :name, content, options)
|
50
|
+
end
|
51
|
+
|
52
|
+
def test_bootstrap_control_group_wrap_with_hint
|
53
|
+
object = mock
|
54
|
+
errors = {}
|
55
|
+
options = { :object => object, :hint => "format matters" }
|
56
|
+
content = ::ActiveSupport::SafeBuffer.new('content')
|
57
|
+
stub(object).errors { errors }
|
58
|
+
stub(object).name { 'Object Name' }
|
59
|
+
|
60
|
+
expected_code = %{<div class="control-group"><label class="control-label" for="post_name">Name</label><div class="controls">content<span class="help-inline"> format matters</span></div></div>}
|
61
|
+
assert_equal expected_code, bootstrap_control_group_wrap(:post, :name, content, options)
|
62
|
+
end
|
63
|
+
|
64
|
+
def test_bootstrap_control_group_wrap_with_hint_and_errors
|
65
|
+
object = mock
|
66
|
+
errors = { :name => ["can't be blank"] }
|
67
|
+
options = { :object => object, :hint => "format matters" }
|
68
|
+
content = ::ActiveSupport::SafeBuffer.new('content')
|
69
|
+
stub(object).errors { errors }
|
70
|
+
stub(object).name { 'Object Name' }
|
71
|
+
|
72
|
+
expected_code = %{<div class="control-group error"><label class="control-label" for="post_name">Name</label><div class="controls">content<span class="help-inline"> can't be blank</span></div></div>}
|
73
|
+
assert_equal expected_code, bootstrap_control_group_wrap(:post, :name, content, options)
|
74
|
+
end
|
75
|
+
|
76
|
+
def test_bootstrap_text_field
|
77
|
+
html, text_field = mock, mock
|
78
|
+
options = { :object => mock }
|
79
|
+
|
80
|
+
mock(self).text_field(:post, :name, options) { text_field }
|
81
|
+
mock(self).bootstrap_control_group_wrap(:post, :name, text_field, options.dup) { html }
|
82
|
+
assert_equal html, bootstrap_text_field(:post, :name, options)
|
83
|
+
end
|
84
|
+
|
85
|
+
def test_bootstrap_email_field
|
86
|
+
html, email_field = mock, mock
|
87
|
+
options = { :object => mock }
|
88
|
+
|
89
|
+
mock(self).email_field(:post, :email, options) { email_field }
|
90
|
+
mock(self).bootstrap_control_group_wrap(:post, :email, email_field, options.dup) { html }
|
91
|
+
assert_equal html, bootstrap_email_field(:post, :email, options)
|
92
|
+
end
|
93
|
+
|
94
|
+
def test_bootstrap_password_field
|
95
|
+
html, password_field = mock, mock
|
96
|
+
options = { :object => mock }
|
97
|
+
|
98
|
+
mock(self).password_field(:post, :password, options) { password_field }
|
99
|
+
mock(self).bootstrap_control_group_wrap(:post, :password, password_field, options.dup) { html }
|
100
|
+
assert_equal html, bootstrap_password_field(:post, :password, options)
|
101
|
+
end
|
102
|
+
|
103
|
+
def test_bootstrap_collection_select
|
104
|
+
html, collection_select_html, collection, object = mock, mock, mock, mock
|
105
|
+
options = { :object => mock }
|
106
|
+
|
107
|
+
mock(self).collection_select(:post, :name, collection, :id, :name, options, {}) { collection_select_html }
|
108
|
+
mock(self).bootstrap_control_group_wrap(:post, :name, collection_select_html, options.dup) { html }
|
109
|
+
|
110
|
+
assert_equal html, bootstrap_collection_select(:post, :name, collection, :id ,:name, options)
|
111
|
+
end
|
112
|
+
|
113
|
+
def test_bootstrap_select
|
114
|
+
choices, select_html, html = mock, mock, mock
|
115
|
+
options = { :object => mock }
|
116
|
+
|
117
|
+
mock(self).select(:post, :name, choices, options, {}) { select_html }
|
118
|
+
mock(self).bootstrap_control_group_wrap(:post, :name, select_html, options.dup) { html }
|
119
|
+
|
120
|
+
assert_equal html, bootstrap_select(:post, :name, choices, options, {})
|
121
|
+
end
|
122
|
+
|
123
|
+
def test_bootstrap_file_field
|
124
|
+
html, text_field = mock, mock
|
125
|
+
options = { :object => mock }
|
126
|
+
|
127
|
+
mock(self).file_field(:post, :attachment, options) { text_field }
|
128
|
+
mock(self).bootstrap_control_group_wrap(:post, :attachment, text_field, options.dup) { html }
|
129
|
+
assert_equal html, bootstrap_file_field(:post, :attachment, options)
|
130
|
+
end
|
131
|
+
|
132
|
+
def test_bootstrap_text_area
|
133
|
+
html, text_area = mock, mock
|
134
|
+
options = { :object => mock }
|
135
|
+
|
136
|
+
mock(self).text_area(:post, :description, options) { text_area }
|
137
|
+
mock(self).bootstrap_control_group_wrap(:post, :description, text_area, options.dup) { html }
|
138
|
+
assert_equal html, bootstrap_text_area(:post, :description, options)
|
139
|
+
end
|
140
|
+
|
141
|
+
def test_ignore_bootstrap_options
|
142
|
+
html, text_area = mock, mock
|
143
|
+
options = { :object => mock, :label => "Custom", :hint => "be careful" }
|
144
|
+
|
145
|
+
mock(self).text_area(:post, :description, options.except(:label, :hint)) { text_area }
|
146
|
+
mock(self).bootstrap_control_group_wrap(:post, :description, text_area, options.dup) { html }
|
147
|
+
assert_equal html, bootstrap_text_area(:post, :description, options)
|
148
|
+
end
|
149
|
+
|
150
|
+
|
151
|
+
end
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'bundler/setup'
|
3
|
+
|
4
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
5
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
6
|
+
|
7
|
+
ENV["RAILS_ENV"] = "test"
|
8
|
+
|
9
|
+
require 'minitest/autorun'
|
10
|
+
require 'rails'
|
11
|
+
require 'action_controller'
|
12
|
+
require 'action_view'
|
13
|
+
require 'rails/test_help'
|
14
|
+
require 'bootstrap-form'
|
15
|
+
require 'rr'
|
16
|
+
|
17
|
+
module BootstrapForm
|
18
|
+
class Application < Rails::Application ; end
|
19
|
+
end
|
20
|
+
|
21
|
+
BootstrapForm::Application.routes.draw do
|
22
|
+
get '/:controller(/:action(/:id))'
|
23
|
+
end
|
24
|
+
BootstrapForm::Application.config.secret_key_base = 'bootstrap'
|
25
|
+
|
26
|
+
ActionController::Base.send :include, BootstrapForm::Application.routes.url_helpers
|
27
|
+
|
28
|
+
class MiniTest::Unit::TestCase
|
29
|
+
include RR::Adapters::TestUnit
|
30
|
+
end
|
metadata
ADDED
@@ -0,0 +1,115 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: mediatainment-bootstrap-form
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.2
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- David Padilla
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2013-12-30 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: railties
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '>'
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '3.2'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>'
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '3.2'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: actionpack
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '>'
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '3.2'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '>'
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '3.2'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: minitest
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rr
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
description: Twitter Bootstrap Form helpers
|
70
|
+
email:
|
71
|
+
- mail@mediatainment-productions.com
|
72
|
+
executables: []
|
73
|
+
extensions: []
|
74
|
+
extra_rdoc_files: []
|
75
|
+
files:
|
76
|
+
- .gitignore
|
77
|
+
- .travis.yml
|
78
|
+
- Gemfile
|
79
|
+
- Gemfile.rails.3.2
|
80
|
+
- Gemfile.rails.4.0
|
81
|
+
- README.md
|
82
|
+
- Rakefile
|
83
|
+
- bootsrap-form.gemspec
|
84
|
+
- lib/bootstrap-form.rb
|
85
|
+
- lib/bootstrap-form/form_helper.rb
|
86
|
+
- lib/bootstrap-form/version.rb
|
87
|
+
- test/lib/action_view/helpers/form_helper_test.rb
|
88
|
+
- test/test_helper.rb
|
89
|
+
homepage: ''
|
90
|
+
licenses: []
|
91
|
+
metadata: {}
|
92
|
+
post_install_message:
|
93
|
+
rdoc_options: []
|
94
|
+
require_paths:
|
95
|
+
- lib
|
96
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
97
|
+
requirements:
|
98
|
+
- - '>='
|
99
|
+
- !ruby/object:Gem::Version
|
100
|
+
version: '0'
|
101
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
102
|
+
requirements:
|
103
|
+
- - '>='
|
104
|
+
- !ruby/object:Gem::Version
|
105
|
+
version: '0'
|
106
|
+
requirements: []
|
107
|
+
rubyforge_project: bootstrap-form
|
108
|
+
rubygems_version: 2.0.3
|
109
|
+
signing_key:
|
110
|
+
specification_version: 4
|
111
|
+
summary: Twitter Bootstrap Form helpers
|
112
|
+
test_files:
|
113
|
+
- test/lib/action_view/helpers/form_helper_test.rb
|
114
|
+
- test/test_helper.rb
|
115
|
+
has_rdoc:
|