ShadowBelmolve-formtastic 0.2.1 → 0.9.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. data/README.textile +191 -176
  2. data/Rakefile +65 -22
  3. data/generators/form/USAGE +16 -0
  4. data/generators/form/form_generator.rb +120 -0
  5. data/generators/form/templates/view__form.html.erb +5 -0
  6. data/generators/form/templates/view__form.html.haml +4 -0
  7. data/generators/formtastic/formtastic_generator.rb +24 -0
  8. data/generators/{formtastic_stylesheets → formtastic}/templates/formtastic.css +2 -0
  9. data/generators/formtastic/templates/formtastic.rb +51 -0
  10. data/generators/{formtastic_stylesheets → formtastic}/templates/formtastic_changes.css +0 -0
  11. data/generators/formtastic_stylesheets/formtastic_stylesheets_generator.rb +5 -10
  12. data/lib/formtastic.rb +1234 -895
  13. data/lib/formtastic/i18n.rb +32 -0
  14. data/lib/locale/en.yml +2 -2
  15. data/rails/init.rb +1 -1
  16. data/spec/buttons_spec.rb +149 -0
  17. data/spec/commit_button_spec.rb +344 -0
  18. data/spec/custom_builder_spec.rb +62 -0
  19. data/spec/custom_macros.rb +561 -0
  20. data/spec/defaults_spec.rb +20 -0
  21. data/spec/error_proc_spec.rb +27 -0
  22. data/spec/errors_spec.rb +85 -0
  23. data/spec/form_helper_spec.rb +120 -0
  24. data/spec/i18n_spec.rb +131 -0
  25. data/spec/include_blank_spec.rb +70 -0
  26. data/spec/input_spec.rb +608 -0
  27. data/spec/inputs/boolean_input_spec.rb +93 -0
  28. data/spec/inputs/check_boxes_input_spec.rb +162 -0
  29. data/spec/inputs/country_input_spec.rb +80 -0
  30. data/spec/inputs/date_input_spec.rb +45 -0
  31. data/spec/inputs/datetime_input_spec.rb +155 -0
  32. data/spec/inputs/file_input_spec.rb +33 -0
  33. data/spec/inputs/hidden_input_spec.rb +52 -0
  34. data/spec/inputs/numeric_input_spec.rb +44 -0
  35. data/spec/inputs/password_input_spec.rb +46 -0
  36. data/spec/inputs/radio_input_spec.rb +149 -0
  37. data/spec/inputs/select_input_spec.rb +459 -0
  38. data/spec/inputs/string_input_spec.rb +47 -0
  39. data/spec/inputs/text_input_spec.rb +33 -0
  40. data/spec/inputs/time_input_spec.rb +44 -0
  41. data/spec/inputs/time_zone_input_spec.rb +102 -0
  42. data/spec/inputs_spec.rb +395 -0
  43. data/spec/label_spec.rb +48 -0
  44. data/spec/nested_forms_spec.rb +50 -0
  45. data/spec/semantic_fields_for_spec.rb +44 -0
  46. data/spec/spec.opts +2 -0
  47. data/spec/spec_helper.rb +212 -0
  48. metadata +121 -16
  49. data/lib/justin_french/formtastic.rb +0 -10
  50. data/spec/formtastic_spec.rb +0 -3072
  51. data/spec/test_helper.rb +0 -14
@@ -0,0 +1,48 @@
1
+ # coding: utf-8
2
+ require File.dirname(__FILE__) + '/spec_helper'
3
+
4
+ describe 'SemanticFormBuilder#label' do
5
+
6
+ include FormtasticSpecHelper
7
+
8
+ before do
9
+ @output_buffer = ''
10
+ mock_everything
11
+ end
12
+
13
+ it 'should humanize the given attribute' do
14
+ semantic_form_for(@new_post) do |builder|
15
+ builder.label(:login).should have_tag('label', :with => /Login/)
16
+ end
17
+ end
18
+
19
+ describe 'when required is given' do
20
+ it 'should append a required note' do
21
+ semantic_form_for(@new_post) do |builder|
22
+ builder.label(:login, nil, :required => true).should have_tag('label abbr')
23
+ end
24
+ end
25
+
26
+ it 'should allow require option to be given as second argument' do
27
+ semantic_form_for(@new_post) do |builder|
28
+ builder.label(:login, :required => true).should have_tag('label abbr')
29
+ end
30
+ end
31
+ end
32
+
33
+ describe 'when label is given' do
34
+ it 'should allow the text to be given as label option' do
35
+ semantic_form_for(@new_post) do |builder|
36
+ builder.label(:login, :required => true, :label => 'My label').should have_tag('label', :with => /My label/)
37
+ end
38
+ end
39
+
40
+ it 'should return nil if label is false' do
41
+ semantic_form_for(@new_post) do |builder|
42
+ builder.label(:login, :label => false).should be_blank
43
+ end
44
+ end
45
+ end
46
+
47
+ end
48
+
@@ -0,0 +1,50 @@
1
+ # coding: utf-8
2
+ require File.dirname(__FILE__) + '/spec_helper'
3
+
4
+ describe "Nested Js Helpers" do
5
+ include FormtasticSpecHelper
6
+
7
+ before do
8
+ @output_buffer = ''
9
+ mock_everything
10
+ end
11
+
12
+ it "should have a add method" do
13
+ @new_post.stub!(:authors).and_return(@mock_authors = mock("Authors", :build => []))
14
+
15
+ semantic_form_for(@new_post) do |builder|
16
+ builder.should_receive(:render_associated_form).and_return("")
17
+
18
+ builder.inputs(:name => "Authors", :id => "authors") do
19
+ concat(builder.add_associated_link("+ Author", :authors))
20
+ end
21
+ end
22
+
23
+ output_buffer.should eql("<form action=\"/posts\" class=\"formtastic post\" id=\"new_post\" method=\"post\"><fieldset class=\"inputs\" id=\"authors\"><legend><span>Authors</span></legend><ol><a href=\"#\" onclick=\";if (typeof formtastic_next_array_id == 'undefined') formtastic_next_array_id = 0;\n $('#arrays').append(&quot;&quot;.replace(/__idx__/g, 'attributes_' +\n formtastic_next_array_id).replace(/__idxx__/g, '[' + formtastic_next_array_id++ + ']'));; return false;\">+ Author</a></ol></fieldset></form>")
24
+ end
25
+
26
+ it "should have a remove method" do
27
+ @new_post.stub!(:authors).and_return(@mock_authors = mock("Authors", :build => []))
28
+
29
+ semantic_form_for(@new_post) do |builder|
30
+ builder.semantic_fields_for(:authors) do |link_builder|
31
+ concat(link_builder.remove_link("Remove"))
32
+ end
33
+ end
34
+
35
+ output_buffer.should eql("<form action=\"/posts\" class=\"formtastic post\" id=\"new_post\" method=\"post\"><input id=\"post_authors__delete\" name=\"post[authors][_delete]\" type=\"hidden\" /><a href=\"#\" onclick=\";$(this).parents('.nil_class').hide(); $(this).prev(':input').val('1');; return false;\">Remove</a></form>")
36
+ end
37
+
38
+ it "should have a show method" do
39
+ pending "Need to put this spec inside actioncontroller, because of 'render'"
40
+ @new_post.stub!(:authors).and_return(@mock_authors = mock("Authors"))
41
+ semantic_form_for(@new_post) do |builder|
42
+ builder.inputs :name => "Authors", :id => 'authors' do
43
+ concat(builder.render_associated_form @new_post.authors)
44
+ end
45
+ end
46
+
47
+ output_buffer.should eql("<form action=\"/posts\" class=\"formtastic post\" id=\"new_post\" method=\"post\"><fieldset class=\"inputs\"><legend><span>Contacts</span></legend><ol><a href=\"#\" onclick=\"if (typeof formtastic_next_array_id == 'undefined') formtastic_next_array_id = 0;\n $('#arrays').append($.template(null), { number: --formtastic_next_array_id});; return false;\">name</a></ol></fieldset></form>")
48
+ end
49
+
50
+ end
@@ -0,0 +1,44 @@
1
+ # coding: utf-8
2
+ require File.dirname(__FILE__) + '/spec_helper'
3
+
4
+ describe 'SemanticFormBuilder#semantic_fields_for' do
5
+
6
+ include FormtasticSpecHelper
7
+
8
+ before do
9
+ @output_buffer = ''
10
+ mock_everything
11
+ @new_post.stub!(:author).and_return(::Author.new)
12
+ end
13
+
14
+ it 'yields an instance of SemanticFormHelper.builder' do
15
+ semantic_form_for(@new_post) do |builder|
16
+ builder.semantic_fields_for(:author) do |nested_builder|
17
+ nested_builder.class.should == ::Formtastic::SemanticFormHelper.builder
18
+ end
19
+ end
20
+ end
21
+
22
+ it 'nests the object name' do
23
+ semantic_form_for(@new_post) do |builder|
24
+ builder.semantic_fields_for(@bob) do |nested_builder|
25
+ nested_builder.object_name.should == 'post[author]'
26
+ end
27
+ end
28
+ end
29
+
30
+ it 'should sanitize html id for li tag' do
31
+ @bob.stub!(:column_for_attribute).and_return(mock('column', :type => :string, :limit => 255))
32
+ semantic_form_for(@new_post) do |builder|
33
+ builder.semantic_fields_for(@bob, :index => 1) do |nested_builder|
34
+ concat(nested_builder.inputs(:login))
35
+ end
36
+ end
37
+ output_buffer.should have_tag('form fieldset.inputs #post_author_1_login_input')
38
+ # Not valid selector, so using good ol' regex
39
+ output_buffer.should_not =~ /id="post\[author\]_1_login_input"/
40
+ # <=> output_buffer.should_not have_tag('form fieldset.inputs #post[author]_1_login_input')
41
+ end
42
+
43
+ end
44
+
@@ -0,0 +1,2 @@
1
+ --color
2
+ --format=progress
@@ -0,0 +1,212 @@
1
+ # coding: utf-8
2
+ require 'rubygems'
3
+
4
+ def smart_require(lib_name, gem_name, gem_version = '>= 0.0.0')
5
+ begin
6
+ require lib_name if lib_name
7
+ rescue LoadError
8
+ if gem_name
9
+ gem gem_name, gem_version
10
+ require lib_name if lib_name
11
+ end
12
+ end
13
+ end
14
+
15
+ smart_require 'spec', 'spec', '>= 1.2.6'
16
+ smart_require false, 'rspec-rails', '>= 1.2.6'
17
+ smart_require 'hpricot', 'hpricot', '>= 0.6.1'
18
+ smart_require 'rspec_tag_matchers', 'rspec_tag_matchers', '>= 1.0.0'
19
+ smart_require 'active_support', 'activesupport', '>= 2.3.4'
20
+ smart_require 'action_controller', 'actionpack', '>= 2.3.4'
21
+ smart_require 'action_view', 'actionpack', '>= 2.3.4'
22
+
23
+ require 'custom_macros'
24
+
25
+ Spec::Runner.configure do |config|
26
+ config.include(RspecTagMatchers)
27
+ config.include(CustomMacros)
28
+ end
29
+
30
+ require File.expand_path(File.join(File.dirname(__FILE__), '../lib/formtastic'))
31
+
32
+
33
+ module FormtasticSpecHelper
34
+ include ActionView::Helpers::FormHelper
35
+ include ActionView::Helpers::FormTagHelper
36
+ include ActionView::Helpers::FormOptionsHelper
37
+ include ActionView::Helpers::UrlHelper
38
+ include ActionView::Helpers::TagHelper
39
+ include ActionView::Helpers::TextHelper
40
+ include ActionView::Helpers::ActiveRecordHelper
41
+ include ActionView::Helpers::RecordIdentificationHelper
42
+ include ActionView::Helpers::DateHelper
43
+ include ActionView::Helpers::CaptureHelper
44
+ include ActiveSupport
45
+ include ActionController::PolymorphicRoutes
46
+
47
+ include Formtastic::SemanticFormHelper
48
+
49
+ def default_input_type(column_type, column_name = :generic_column_name)
50
+ @new_post.stub!(column_name)
51
+ @new_post.stub!(:column_for_attribute).and_return(mock('column', :type => column_type)) unless column_type.nil?
52
+
53
+ semantic_form_for(@new_post) do |builder|
54
+ @default_type = builder.send(:default_input_type, column_name)
55
+ end
56
+
57
+ return @default_type
58
+ end
59
+
60
+ class ::Post
61
+ def id
62
+ end
63
+ end
64
+ class ::Author
65
+ def to_label
66
+ end
67
+ end
68
+ class ::Continent
69
+ end
70
+
71
+ def mock_everything
72
+
73
+ # Resource-oriented styles like form_for(@post) will expect a path method for the object,
74
+ # so we're defining some here.
75
+ def post_path(o); "/posts/1"; end
76
+ def posts_path; "/posts"; end
77
+ def new_post_path; "/posts/new"; end
78
+
79
+ def author_path(o); "/authors/1"; end
80
+ def authors_path; "/authors"; end
81
+ def new_author_path; "/authors/new"; end
82
+
83
+ @fred = mock('user')
84
+ @fred.stub!(:class).and_return(::Author)
85
+ @fred.stub!(:to_label).and_return('Fred Smith')
86
+ @fred.stub!(:login).and_return('fred_smith')
87
+ @fred.stub!(:id).and_return(37)
88
+ @fred.stub!(:new_record?).and_return(false)
89
+ @fred.stub!(:errors).and_return(mock('errors', :[] => nil))
90
+
91
+ @bob = mock('user')
92
+ @bob.stub!(:class).and_return(::Author)
93
+ @bob.stub!(:to_label).and_return('Bob Rock')
94
+ @bob.stub!(:login).and_return('bob')
95
+ @bob.stub!(:created_at)
96
+ @bob.stub!(:id).and_return(42)
97
+ @bob.stub!(:posts).and_return([])
98
+ @bob.stub!(:post_ids).and_return([])
99
+ @bob.stub!(:new_record?).and_return(false)
100
+ @bob.stub!(:errors).and_return(mock('errors', :[] => nil))
101
+
102
+ @james = mock('user')
103
+ @james.stub!(:class).and_return(::Author)
104
+ @james.stub!(:to_label).and_return('James Shock')
105
+ @james.stub!(:login).and_return('james')
106
+ @james.stub!(:id).and_return(75)
107
+ @james.stub!(:posts).and_return([])
108
+ @james.stub!(:post_ids).and_return([])
109
+ @james.stub!(:new_record?).and_return(false)
110
+ @james.stub!(:errors).and_return(mock('errors', :[] => nil))
111
+
112
+
113
+ ::Author.stub!(:find).and_return([@fred, @bob])
114
+ ::Author.stub!(:human_attribute_name).and_return { |column_name| column_name.humanize }
115
+ ::Author.stub!(:human_name).and_return('::Author')
116
+ ::Author.stub!(:reflect_on_validations_for).and_return([])
117
+ ::Author.stub!(:reflect_on_association).and_return { |column_name| mock('reflection', :options => {}, :klass => Post, :macro => :has_many) if column_name == :posts }
118
+ ::Author.stub!(:content_columns).and_return([mock('column', :name => 'login'), mock('column', :name => 'created_at')])
119
+
120
+ # Sometimes we need a mock @post object and some Authors for belongs_to
121
+ @new_post = mock('post')
122
+ @new_post.stub!(:class).and_return(::Post)
123
+ @new_post.stub!(:id).and_return(nil)
124
+ @new_post.stub!(:new_record?).and_return(true)
125
+ @new_post.stub!(:errors).and_return(mock('errors', :[] => nil))
126
+ @new_post.stub!(:author).and_return(nil)
127
+ @new_post.stub!(:main_post).and_return(nil)
128
+ @new_post.stub!(:sub_posts).and_return([]) #TODO should be a mock with methods for adding sub posts
129
+
130
+ @freds_post = mock('post')
131
+ @freds_post.stub!(:class).and_return(::Post)
132
+ @freds_post.stub!(:to_label).and_return('Fred Smith')
133
+ @freds_post.stub!(:id).and_return(19)
134
+ @freds_post.stub!(:author).and_return(@fred)
135
+ @freds_post.stub!(:author_id).and_return(@fred.id)
136
+ @freds_post.stub!(:authors).and_return([@fred])
137
+ @freds_post.stub!(:author_ids).and_return([@fred.id])
138
+ @freds_post.stub!(:new_record?).and_return(false)
139
+ @freds_post.stub!(:errors).and_return(mock('errors', :[] => nil))
140
+ @fred.stub!(:posts).and_return([@freds_post])
141
+ @fred.stub!(:post_ids).and_return([@freds_post.id])
142
+
143
+ ::Post.stub!(:human_attribute_name).and_return { |column_name| column_name.humanize }
144
+ ::Post.stub!(:human_name).and_return('Post')
145
+ ::Post.stub!(:reflect_on_all_validations).and_return([])
146
+ ::Post.stub!(:reflect_on_validations_for).and_return([])
147
+ ::Post.stub!(:reflect_on_association).and_return do |column_name|
148
+ case column_name
149
+ when :author, :author_status
150
+ mock = mock('reflection', :options => {}, :klass => ::Author, :macro => :belongs_to)
151
+ mock.stub!(:[]).with(:class_name).and_return("Author")
152
+ mock
153
+ when :authors
154
+ mock('reflection', :options => {}, :klass => ::Author, :macro => :has_and_belongs_to_many)
155
+ when :sub_posts
156
+ mock('reflection', :options => {}, :klass => ::Post, :macro => :has_many)
157
+ when :main_post
158
+ mock('reflection', :options => {}, :klass => ::Post, :macro => :belongs_to)
159
+ end
160
+
161
+ end
162
+ ::Post.stub!(:find).and_return([@freds_post])
163
+ ::Post.stub!(:content_columns).and_return([mock('column', :name => 'title'), mock('column', :name => 'body'), mock('column', :name => 'created_at')])
164
+
165
+ @new_post.stub!(:title)
166
+ @new_post.stub!(:body)
167
+ @new_post.stub!(:published)
168
+ @new_post.stub!(:publish_at)
169
+ @new_post.stub!(:created_at)
170
+ @new_post.stub!(:secret)
171
+ @new_post.stub!(:time_zone)
172
+ @new_post.stub!(:category_name)
173
+ @new_post.stub!(:allow_comments)
174
+ @new_post.stub!(:column_for_attribute).with(:meta_description).and_return(mock('column', :type => :string, :limit => 255))
175
+ @new_post.stub!(:column_for_attribute).with(:title).and_return(mock('column', :type => :string, :limit => 50))
176
+ @new_post.stub!(:column_for_attribute).with(:body).and_return(mock('column', :type => :text))
177
+ @new_post.stub!(:column_for_attribute).with(:published).and_return(mock('column', :type => :boolean))
178
+ @new_post.stub!(:column_for_attribute).with(:publish_at).and_return(mock('column', :type => :date))
179
+ @new_post.stub!(:column_for_attribute).with(:time_zone).and_return(mock('column', :type => :string))
180
+ @new_post.stub!(:column_for_attribute).with(:allow_comments).and_return(mock('column', :type => :boolean))
181
+
182
+ @new_post.stub!(:author).and_return(@bob)
183
+ @new_post.stub!(:author_id).and_return(@bob.id)
184
+
185
+ @new_post.should_receive(:publish_at=).any_number_of_times
186
+ @new_post.should_receive(:title=).any_number_of_times
187
+ @new_post.stub!(:main_post_id).and_return(nil)
188
+
189
+ end
190
+
191
+ def self.included(base)
192
+ base.class_eval do
193
+
194
+ attr_accessor :output_buffer
195
+
196
+ def protect_against_forgery?
197
+ false
198
+ end
199
+
200
+ end
201
+ end
202
+
203
+ def with_config(config_method_name, value, &block)
204
+ old_value = ::Formtastic::SemanticFormBuilder.send(config_method_name)
205
+ ::Formtastic::SemanticFormBuilder.send(:"#{config_method_name}=", value)
206
+ yield
207
+ ::Formtastic::SemanticFormBuilder.send(:"#{config_method_name}=", old_value)
208
+ end
209
+
210
+ end
211
+
212
+ ::ActiveSupport::Deprecation.silenced = false
metadata CHANGED
@@ -1,18 +1,57 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ShadowBelmolve-formtastic
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.9.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Justin French
8
- autorequire: formtastic
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-06-17 00:00:00 -07:00
12
+ date: 2009-12-04 00:00:00 -04:00
13
13
  default_executable:
14
- dependencies: []
15
-
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: activesupport
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: 2.3.0
24
+ version:
25
+ - !ruby/object:Gem::Dependency
26
+ name: actionpack
27
+ type: :runtime
28
+ version_requirement:
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 2.3.0
34
+ version:
35
+ - !ruby/object:Gem::Dependency
36
+ name: rspec-rails
37
+ type: :development
38
+ version_requirement:
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: 1.2.6
44
+ version:
45
+ - !ruby/object:Gem::Dependency
46
+ name: rspec_tag_matchers
47
+ type: :development
48
+ version_requirement:
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: 1.0.0
54
+ version:
16
55
  description: A Rails form builder plugin/gem with semantically rich and accessible markup
17
56
  email: justin@indent.com.au
18
57
  executables: []
@@ -25,19 +64,56 @@ files:
25
64
  - MIT-LICENSE
26
65
  - README.textile
27
66
  - Rakefile
67
+ - generators/form/USAGE
68
+ - generators/form/form_generator.rb
69
+ - generators/form/templates/view__form.html.erb
70
+ - generators/form/templates/view__form.html.haml
71
+ - generators/formtastic/formtastic_generator.rb
72
+ - generators/formtastic/templates/formtastic.css
73
+ - generators/formtastic/templates/formtastic.rb
74
+ - generators/formtastic/templates/formtastic_changes.css
28
75
  - generators/formtastic_stylesheets/formtastic_stylesheets_generator.rb
29
- - generators/formtastic_stylesheets/templates/formtastic.css
30
- - generators/formtastic_stylesheets/templates/formtastic_changes.css
31
76
  - lib/formtastic.rb
32
- - lib/justin_french/formtastic.rb
77
+ - lib/formtastic/i18n.rb
33
78
  - lib/locale/en.yml
34
79
  - rails/init.rb
35
- - spec/formtastic_spec.rb
36
- - spec/test_helper.rb
37
- has_rdoc: false
38
- homepage: http://github.com/justinfrench/formtastic/tree/master
39
- licenses:
40
- post_install_message:
80
+ - spec/buttons_spec.rb
81
+ - spec/commit_button_spec.rb
82
+ - spec/custom_builder_spec.rb
83
+ - spec/custom_macros.rb
84
+ - spec/defaults_spec.rb
85
+ - spec/error_proc_spec.rb
86
+ - spec/errors_spec.rb
87
+ - spec/form_helper_spec.rb
88
+ - spec/i18n_spec.rb
89
+ - spec/include_blank_spec.rb
90
+ - spec/input_spec.rb
91
+ - spec/inputs/boolean_input_spec.rb
92
+ - spec/inputs/check_boxes_input_spec.rb
93
+ - spec/inputs/country_input_spec.rb
94
+ - spec/inputs/date_input_spec.rb
95
+ - spec/inputs/datetime_input_spec.rb
96
+ - spec/inputs/file_input_spec.rb
97
+ - spec/inputs/hidden_input_spec.rb
98
+ - spec/inputs/numeric_input_spec.rb
99
+ - spec/inputs/password_input_spec.rb
100
+ - spec/inputs/radio_input_spec.rb
101
+ - spec/inputs/select_input_spec.rb
102
+ - spec/inputs/string_input_spec.rb
103
+ - spec/inputs/text_input_spec.rb
104
+ - spec/inputs/time_input_spec.rb
105
+ - spec/inputs/time_zone_input_spec.rb
106
+ - spec/inputs_spec.rb
107
+ - spec/label_spec.rb
108
+ - spec/nested_forms_spec.rb
109
+ - spec/semantic_fields_for_spec.rb
110
+ - spec/spec.opts
111
+ - spec/spec_helper.rb
112
+ has_rdoc: true
113
+ homepage: http://github.com/ShadowBelmolve/formtastic/tree/master
114
+ licenses: []
115
+
116
+ post_install_message: "\n ========================================================================\n Thanks for installing Formtastic!\n ------------------------------------------------------------------------\n You can now (optionally) run the generator to copy some stylesheets and\n a config initializer into your application:\n ./script/generate formtastic\n\n To generate some semantic form markup for your exisiting models, just run:\n ./script/generate form MODEL_NAME\n\n Find out more and get involved:\n http://github.com/justinfrench/formtastic\n http://groups.google.com.au/group/formtastic\n ========================================================================\n "
41
117
  rdoc_options:
42
118
  - --charset=UTF-8
43
119
  require_paths:
@@ -62,5 +138,34 @@ signing_key:
62
138
  specification_version: 3
63
139
  summary: A Rails form builder plugin/gem with semantically rich and accessible markup
64
140
  test_files:
65
- - spec/formtastic_spec.rb
66
- - spec/test_helper.rb
141
+ - spec/errors_spec.rb
142
+ - spec/buttons_spec.rb
143
+ - spec/custom_macros.rb
144
+ - spec/input_spec.rb
145
+ - spec/inputs/radio_input_spec.rb
146
+ - spec/inputs/boolean_input_spec.rb
147
+ - spec/inputs/text_input_spec.rb
148
+ - spec/inputs/password_input_spec.rb
149
+ - spec/inputs/numeric_input_spec.rb
150
+ - spec/inputs/string_input_spec.rb
151
+ - spec/inputs/time_zone_input_spec.rb
152
+ - spec/inputs/datetime_input_spec.rb
153
+ - spec/inputs/date_input_spec.rb
154
+ - spec/inputs/time_input_spec.rb
155
+ - spec/inputs/country_input_spec.rb
156
+ - spec/inputs/check_boxes_input_spec.rb
157
+ - spec/inputs/select_input_spec.rb
158
+ - spec/inputs/file_input_spec.rb
159
+ - spec/inputs/hidden_input_spec.rb
160
+ - spec/error_proc_spec.rb
161
+ - spec/include_blank_spec.rb
162
+ - spec/nested_forms_spec.rb
163
+ - spec/custom_builder_spec.rb
164
+ - spec/spec_helper.rb
165
+ - spec/inputs_spec.rb
166
+ - spec/i18n_spec.rb
167
+ - spec/commit_button_spec.rb
168
+ - spec/defaults_spec.rb
169
+ - spec/form_helper_spec.rb
170
+ - spec/semantic_fields_for_spec.rb
171
+ - spec/label_spec.rb