humpyard_form 0.0.1

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.
data/Gemfile ADDED
@@ -0,0 +1,24 @@
1
+ source 'http://gemcutter.org'
2
+
3
+ gem "rails", :git => "git://github.com/rails/rails.git"
4
+ gem 'haml', :git => 'git://github.com/nex3/haml.git'
5
+ gem 'compass', :git => 'git://github.com/chriseppstein/compass.git'
6
+
7
+ group :test do
8
+ gem 'test-unit'
9
+ gem 'rspec-rails', '>= 2.0.0.beta.7'
10
+ gem 'capybara', '>= 0.3.7'
11
+ gem 'database_cleaner', '>= 0.5.2'
12
+ gem 'cucumber', '= 0.6.4' #'> 0.7.0.beta.2' # as 0.7.2.beta.2 is not running for us
13
+ gem 'cucumber-rails', :git => 'git://github.com/aslakhellesoy/cucumber-rails.git'
14
+ gem 'pickle', '>= 0.2.4'
15
+ gem 'capybara', '>= 0.3.5'
16
+ gem 'factory_girl', '>= 1.2.3'
17
+ gem 'markup_validity', '>= 1.1.0'
18
+ gem 'sqlite3-ruby', :require => 'sqlite3'
19
+ gem 'thin'
20
+ end
21
+
22
+ if RUBY_VERSION < '1.9'
23
+ gem 'ruby-debug', '>= 0.10.3'
24
+ end
data/LICENCE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2009-2010 Sven G. Brönstrup
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.rdoc ADDED
@@ -0,0 +1,37 @@
1
+ = humpyard_form
2
+
3
+ A HumpyardForm is doing fare control. So HumpyardForm is an authentication system for Rails 3 applications.
4
+
5
+ == Installation
6
+
7
+ * Add HumpyardForm to your Rails application's Gemfile. It does require edge rails at the moment.
8
+ gem 'rails', :git => 'git://github.com/rails/rails.git'
9
+ gem 'haml', :git => 'git://github.com/nex3/haml.git'
10
+ gem 'compass', :git => 'git://github.com/chriseppstein/compass.git'
11
+ gem 'humpyard_form', :git => 'git://github.com/starpeak/humpyard_form.git'
12
+
13
+ * Change into your Rails application's directory
14
+
15
+ * Generate HumpyardForm skeleton
16
+ rails generate humpyard_form:skeleton
17
+
18
+ * Migrate the HumpyardForm database tables
19
+ rake humpyard_form:db:migrate
20
+
21
+ == API Documentation
22
+
23
+ * API Documentation can be created by running
24
+ rake rdoc
25
+ from the humpyard_form project directory.
26
+
27
+ == Note on Patches/Pull Requests
28
+
29
+ * Fork the project.
30
+ * Make your feature addition or bug fix.
31
+ * Add tests for it. No discussion. No tests, no game. We use rspec and cucumber with associated addons.
32
+ * Commit, do not mess with rakefile, version, or history. If you want to have your own version, thats fine. But bump your version in a seperate commit that can be ignored when pulling.
33
+ * Send me a pull request. Bonus points for topic branches.
34
+
35
+ == Copyright
36
+
37
+ Copyright (c) 2010 Sven G. Brönstrup. See LICENSE for details.
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.0.1
@@ -0,0 +1 @@
1
+ %input{:type => "text", :name => "#{form.namespace}[#{name}]", :value => "#{form.object.send(name)}", :'data-date-input' => "true", :class => "datetime-field text ui-widget-content ui-corner-all field-highlight"}
@@ -0,0 +1 @@
1
+ %input{:type => "file", :name => "#{form.namespace}[#{name}]", :value => "#{form.object.send(name)}", :class => "text ui-widget-content ui-corner-all field-highlight"}
@@ -0,0 +1,3 @@
1
+ - #html_options[:method] = :put
2
+ = form_tag(form.url, form.html_options) do
3
+ = inner_haml
@@ -0,0 +1,9 @@
1
+ - puts name
2
+ .input{:class => "attr_#{name}"}
3
+ %div
4
+ %label{:for => "#{form.namespace}[#{name}]", :class => form.object.class.validators_on(name.to_s).map(&:class).include?(ActiveModel::Validations::PresenceValidator) ? 'required' : false}
5
+ = form.object.class.human_attribute_name(name)
6
+ %span.field-errors.ui-state-error-text{:style => form.object.errors[name].first.nil? ? 'display:none;' : ''}
7
+ = form.object.errors[name].first
8
+ %div
9
+ = render :partial => "/humpyard_form/#{as.to_s}_input", :locals => {:form => form, :name => name, :options => options}
@@ -0,0 +1,14 @@
1
+ - if form.object.send(name).file?
2
+ - if form.object.send(name).styles.keys.include?(:thumb)
3
+ - style = form.object.send(name).styles[:thumb]
4
+ = image_tag form.object.send(name).url(:thumb), :size => style.geometry.match(/(\d+x\d+)/)[1]
5
+ - else
6
+ = image_tag form.object.send(name).ur
7
+ [
8
+ = form.object.send("#{name}_file_name")
9
+ = form.object.send("#{name}_file_size")
10
+ = form.object.send("#{name}_content_type")
11
+ ]
12
+ - else
13
+ [none]
14
+ %input{:type => "file", :name => "#{form.namespace}[#{name}]", :value => "#{form.object.send(name)}", :class => "text ui-widget-content ui-corner-all field-highlight"}
@@ -0,0 +1,4 @@
1
+ %select{:name => "#{form.namespace}[#{name}]", :class => "select"}
2
+ - options[:select_options].each do |option|
3
+ %option{:value => "#{option[1]}", :selected => (option[1] == form.object.send(name))}
4
+ = option[0] #form.object.send(name)
@@ -0,0 +1 @@
1
+ %input{:type => "text", :name => "#{form.namespace}[#{name}]", :value => "#{form.object.send(name)}", :class => "text ui-widget-content ui-corner-all field-highlight"}
@@ -0,0 +1 @@
1
+ %button Submit
@@ -0,0 +1,2 @@
1
+ %textarea{:name => "#{form.namespace}[#{name}]", :class => "text ui-widget-content ui-corner-all field-highlight"}
2
+ = preserve raw(form.object.send(name))
@@ -0,0 +1,3 @@
1
+ en:
2
+ humpyard_form:
3
+ start: 'Loading HumpyardForm {{version}}'
@@ -0,0 +1,35 @@
1
+ module HumpyardForm
2
+ module ActionController #:nodoc:
3
+ module Base #:nodoc:
4
+
5
+
6
+ end
7
+ end
8
+ end
9
+
10
+ ActionController::Base.send :include, HumpyardForm::ActionController::Base
11
+
12
+ # register a custom json renderer for humpyard form to overcome xhr file upload limits.
13
+ # if a file input is present in the form, it should be sent as a normal form
14
+ # submit, targeted to a (hidden) iframe. client code can pick up the response from there.
15
+ # two things with this workaround: the MIME type cannot be the proper json type
16
+ # because the response would end up being downloaded by common browsers.
17
+ # additionally, there is some escaping going on in the browser which can
18
+ # render the json unparseable. to prevent this, we send the json wrapped
19
+ # in a <textarea> element. (this is the way jquery.form handles things)
20
+ # until there is a decent way to upload files using xhr (also supporting
21
+ # streaming large uploads), we have to use this rather ugly hack.
22
+ # this code is based on the original rails :json option for rendering.
23
+ # to use the workaround, include a parameter url_quirk=true in the request.
24
+
25
+ ActionController.add_renderer :json do |json, options|
26
+ json = ActiveSupport::JSON.encode(json) unless json.respond_to?(:to_str)
27
+ json = "#{options[:callback]}(#{json})" unless options[:callback].blank?
28
+ if params[:ul_quirk]
29
+ self.content_type ||= Mime::HTML
30
+ self.response_body = "<textarea>" + json + "</textarea>"
31
+ else
32
+ self.content_type ||= Mime::JSON
33
+ self.response_body = json
34
+ end
35
+ end
@@ -0,0 +1,22 @@
1
+ module HumpyardForm
2
+ module ActionView
3
+ module FormHelper
4
+ def humpyard_form_for(record, options={}, &block)
5
+ form = HumpyardForm::FormBuilder.new(self, record, options)
6
+ inner_haml = capture_haml(form, &block)
7
+ render :partial => '/humpyard_form/form', :locals => {:form => form, :inner_haml => inner_haml}
8
+ end
9
+
10
+ # execute a block with a given locale
11
+ def with_locale(locale, &block)
12
+ old_locale = I18n.locale
13
+ I18n.locale = locale
14
+ yield(locale)
15
+ I18n.locale = old_locale
16
+ end
17
+
18
+ end
19
+ end
20
+ end
21
+
22
+ ActionView::Base.send :include, HumpyardForm::ActionView::FormHelper
@@ -0,0 +1,6 @@
1
+ require 'compass'
2
+
3
+ options = Hash.new
4
+ options[:stylesheets_directory] = ::File.expand_path(::File.join(::File.dirname(__FILE__), '..', '..', 'compass', 'stylesheets'))
5
+ options[:templates_directory] = ::File.expand_path(::File.join(File.dirname(__FILE__), '..', '..', 'compass', 'templates'))
6
+ ::Compass::Frameworks.register('humpyard_form', options)
@@ -0,0 +1,42 @@
1
+ module HumpyardForm
2
+ ####
3
+ # HumpyardForm::Config is responsible for holding and managing the configuration
4
+ # for your HumpyardForm Rails Application.
5
+ #
6
+ # Possible configuration options are:
7
+ # +table_name_prefix+::
8
+ # The prefix for the SQL tables
9
+ #
10
+ # The default value is <tt>"humpyard_form_"</tt>
11
+ # +admin_prefix+::
12
+ # The prefix for the admin controllers
13
+ #
14
+ # The default value is <tt>"admin"</tt>
15
+
16
+ class Config
17
+ def initialize(&block) #:nodoc:
18
+ configure(&block) if block_given?
19
+ end
20
+
21
+ # Configure your HumpyardForm Rails Application with the given parameters in
22
+ # the block. For possible options see above.
23
+ def configure(&block)
24
+ yield(self)
25
+ end
26
+
27
+ def locales=(locales) #:nodoc:
28
+ if locales.nil?
29
+ @locales = nil
30
+ elsif locales.class == Array
31
+ @locales = locales.map{|l| l.to_sym}
32
+ else
33
+ @locales = locales.split(',').collect{|l| l.to_sym}
34
+ end
35
+ end
36
+
37
+ def locales #:nodoc:
38
+ @locales ||= [:en]
39
+ end
40
+
41
+ end
42
+ end
@@ -0,0 +1,7 @@
1
+ module HumpyardForm
2
+ ####
3
+ # HumpyardForm::Engine is the ::Rails::Engine running the HumpyardForm
4
+ class Engine < ::Rails::Engine
5
+ #engine_name :humpyard_form
6
+ end
7
+ end
@@ -0,0 +1,145 @@
1
+ module HumpyardForm
2
+ ####
3
+ # HumpyardForm::FormHelper is a helper for forms
4
+ class FormBuilder
5
+ attr_reader :object, :options, :html_options, :url, :form_type
6
+
7
+ @@file_methods = [ :file?, :public_filename ]
8
+
9
+ cattr_accessor :file_methods
10
+
11
+ def initialize(renderer, object, options={})
12
+ @renderer = renderer
13
+ @object = @renderer.convert_to_model(object)
14
+ @html_options = options.delete(:html) || {}
15
+ @url = options.delete(:url) || @renderer.polymorphic_path(@object)
16
+ @options = options
17
+
18
+ if object.respond_to?(:persisted?) && object.persisted?
19
+ @form_type = 'Edit'
20
+ @html_options[:'data-action'] = @renderer.dom_class(object, :edit),
21
+ @html_options[:method] = :put
22
+ else
23
+ @form_type = 'New'
24
+ @html_options[:'data-action'] = @renderer.dom_class(object, :new),
25
+ @html_options[:method] = :post
26
+ end
27
+ end
28
+
29
+ def namespace
30
+ if @options[:as]
31
+ @options[:as]
32
+ else
33
+ @object.class.name.underscore.gsub('/', '_')
34
+ end
35
+ end
36
+
37
+ def inputs
38
+ end
39
+
40
+ # def input(method, options = {})
41
+ # options[:required] = method_required?(method) unless options.key?(:required)
42
+ # options[:as] ||= default_input_type(method)
43
+ #
44
+ # html_class = [ options[:as], (options[:required] ? :required : :optional) ]
45
+ # html_class << 'error' if @object && @object.respond_to?(:errors) && !@object.errors[method.to_sym].blank?
46
+ #
47
+ # wrapper_html = options.delete(:wrapper_html) || {}
48
+ # wrapper_html[:id] ||= generate_html_id(method)
49
+ # wrapper_html[:class] = (html_class << wrapper_html[:class]).flatten.compact.join(' ')
50
+ #
51
+ # if options[:input_html] && options[:input_html][:id]
52
+ # options[:label_html] ||= {}
53
+ # options[:label_html][:for] ||= options[:input_html][:id]
54
+ # end
55
+ #
56
+ # input_parts = @@inline_order.dup
57
+ # input_parts.delete(:errors) if options[:as] == :hidden
58
+ #
59
+ # list_item_content = input_parts.map do |type|
60
+ # send(:"inline_#{type}_for", method, options)
61
+ # end.compact.join("\n")
62
+ #
63
+ # return template.content_tag(:li, list_item_content, wrapper_html)
64
+ # end
65
+
66
+
67
+ def input(method, options={}) #:nodoc:
68
+ #options[:required] = method_required?(method) unless options.key?(:required)
69
+ options[:as] ||= default_input_type(method)
70
+ options[:translation_info] = translation_info(method)
71
+ #puts options.inspect
72
+ @renderer.render :partial => "/humpyard_form/form_element", :locals => {:form => self, :name => method, :options => options, :as => options[:as]}
73
+ end
74
+
75
+ def submit(options={})
76
+ @renderer.render :partial => '/humpyard_form/submit', :locals => {:form => self, :options => options}
77
+ end
78
+
79
+ def translation_info(method) #:nodoc:
80
+ if @object.respond_to?(:translated_attribute_names) and @object.translated_attribute_names.include?(method)
81
+ tmp = @object.translation_class.new
82
+ if tmp
83
+ column = tmp.column_for_attribute(method) if tmp.respond_to?(:column_for_attribute)
84
+ if column
85
+ {:locales => HumpyardForm::config.locales, :column => column}
86
+ end
87
+ end
88
+ else
89
+ false
90
+ end
91
+ end
92
+
93
+ # For methods that have a database column, take a best guess as to what the input method
94
+ # should be. In most cases, it will just return the column type (eg :string), but for special
95
+ # cases it will simplify (like the case of :integer, :float & :decimal to :numeric), or do
96
+ # something different (like :password and :select).
97
+ #
98
+ # If there is no column for the method (eg "virtual columns" with an attr_accessor), the
99
+ # default is a :string, a similar behaviour to Rails' scaffolding.
100
+ #
101
+ def default_input_type(method) #:nodoc:
102
+ column = @object.column_for_attribute(method) if @object.respond_to?(:column_for_attribute)
103
+
104
+ # translated attributes dont have a column info at this point
105
+ # check the associated translation class
106
+ if not column
107
+ tx_info = translation_info(method)
108
+ if tx_info
109
+ column = tx_info[:column]
110
+ end
111
+ end
112
+
113
+ if column
114
+ # handle the special cases where the column type doesn't map to an input method
115
+ return :time_zone if column.type == :string && method.to_s =~ /time_zone/
116
+ return :select if column.type == :integer && method.to_s =~ /_id$/
117
+ return :datetime if column.type == :timestamp
118
+ return :numeric if [:integer, :float, :decimal].include?(column.type)
119
+ return :password if column.type == :string && method.to_s =~ /password/
120
+ return :country if column.type == :string && method.to_s =~ /country/
121
+
122
+ # otherwise assume the input name will be the same as the column type (eg string_input)
123
+ return column.type
124
+ else
125
+ if @object
126
+ #return :select if find_reflection(method)
127
+
128
+ file = @object.send(method) if @object.respond_to?(method)
129
+ if file && @@file_methods.any? { |m| file.respond_to?(m) }
130
+ if file.styles.keys.empty?
131
+ return :file
132
+ else
133
+ return :image_file
134
+ end
135
+ end
136
+ end
137
+
138
+ return :password if method.to_s =~ /password/
139
+ return :string
140
+ end
141
+ end
142
+
143
+
144
+ end
145
+ end
@@ -0,0 +1,53 @@
1
+ ####
2
+ # Welcome to HumpyardForm
3
+
4
+ module HumpyardForm
5
+ # This is the actual version of the HumpyardForm gem
6
+ VERSION = ::File.read(::File.join(::File.dirname(__FILE__), "..", "VERSION")).strip
7
+
8
+ def self.load options = {} #:nodoc:
9
+ require ::File.expand_path('../humpyard_form/rake_tasks', __FILE__)
10
+ end
11
+
12
+ # This is the path to the HumpyardForm gem's root directory
13
+ def base_directory
14
+ ::File.expand_path(::File.join(::File.dirname(__FILE__), '..'))
15
+ end
16
+
17
+ # This is the path to the HumpyardForm gem's lib directory
18
+ def lib_directory
19
+ ::File.expand_path(::File.join(::File.dirname(__FILE__)))
20
+ end
21
+
22
+ module_function :base_directory, :lib_directory
23
+
24
+ class << self
25
+ # To access the actual configuration of your HumpyardForm, you can call this.
26
+ #
27
+ # An example would be <tt>HumpyardForm.config.www_prefix = 'cms/:locale/'</tt>
28
+ #
29
+ # See HumpyardForm::Config for configuration options.
30
+ def config
31
+ @config ||= HumpyardForm::Config.new
32
+ end
33
+
34
+ # Configure the HumpyardForm
35
+ # See HumpyardForm::Config.configure for details
36
+ def configure(&block)
37
+ config.configure(&block)
38
+ end
39
+ end
40
+ end
41
+
42
+ require File.expand_path('../humpyard_form/config', __FILE__)
43
+ require File.expand_path('../humpyard_form/engine', __FILE__)
44
+ require File.expand_path('../humpyard_form/compass', __FILE__)
45
+
46
+ require 'i18n'
47
+ I18n.load_path += Dir.glob("#{File.dirname(__FILE__)}/../config/locales/*.yml")
48
+ puts "=> #{I18n.t 'humpyard_form.start', :version => HumpyardForm::VERSION}"
49
+
50
+ require File.expand_path('../humpyard_form/action_controller/base', __FILE__)
51
+ require File.expand_path('../humpyard_form/action_view/form_helper', __FILE__)
52
+
53
+
metadata ADDED
@@ -0,0 +1,165 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: humpyard_form
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 0
8
+ - 1
9
+ version: 0.0.1
10
+ platform: ruby
11
+ authors:
12
+ - Sven G. Broenstrup
13
+ - Andreas Pieper
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2010-05-02 00:00:00 +02:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: builder
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ segments:
29
+ - 0
30
+ version: "0"
31
+ type: :runtime
32
+ version_requirements: *id001
33
+ - !ruby/object:Gem::Dependency
34
+ name: rails
35
+ prerelease: false
36
+ requirement: &id002 !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ segments:
41
+ - 3
42
+ - 0
43
+ - 0
44
+ - beta
45
+ version: 3.0.0.beta
46
+ type: :runtime
47
+ version_requirements: *id002
48
+ - !ruby/object:Gem::Dependency
49
+ name: haml
50
+ prerelease: false
51
+ requirement: &id003 !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ segments:
56
+ - 2
57
+ - 2
58
+ - 20
59
+ version: 2.2.20
60
+ type: :runtime
61
+ version_requirements: *id003
62
+ - !ruby/object:Gem::Dependency
63
+ name: acts_as_tree
64
+ prerelease: false
65
+ requirement: &id004 !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ segments:
70
+ - 0
71
+ - 1
72
+ - 1
73
+ version: 0.1.1
74
+ type: :runtime
75
+ version_requirements: *id004
76
+ - !ruby/object:Gem::Dependency
77
+ name: cancan
78
+ prerelease: false
79
+ requirement: &id005 !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ segments:
84
+ - 1
85
+ - 1
86
+ - 1
87
+ version: 1.1.1
88
+ type: :runtime
89
+ version_requirements: *id005
90
+ - !ruby/object:Gem::Dependency
91
+ name: globalize2
92
+ prerelease: false
93
+ requirement: &id006 !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - ">="
96
+ - !ruby/object:Gem::Version
97
+ segments:
98
+ - 0
99
+ - 2
100
+ - 0
101
+ version: 0.2.0
102
+ type: :runtime
103
+ version_requirements: *id006
104
+ description: HumpyardForm is an form builder for Rails 3 applications. It is developed as part of the humpyard cms
105
+ email: info@humpyard.org
106
+ executables: []
107
+
108
+ extensions: []
109
+
110
+ extra_rdoc_files: []
111
+
112
+ files:
113
+ - lib/humpyard_form/action_controller/base.rb
114
+ - lib/humpyard_form/action_view/form_helper.rb
115
+ - lib/humpyard_form/compass.rb
116
+ - lib/humpyard_form/config.rb
117
+ - lib/humpyard_form/engine.rb
118
+ - lib/humpyard_form/form_builder.rb
119
+ - lib/humpyard_form.rb
120
+ - app/views/humpyard_form/_datetime_input.html.haml
121
+ - app/views/humpyard_form/_file_input.html.haml
122
+ - app/views/humpyard_form/_form.html.haml
123
+ - app/views/humpyard_form/_form_element.html.haml
124
+ - app/views/humpyard_form/_image_file_input.html.haml
125
+ - app/views/humpyard_form/_select_input.html.haml
126
+ - app/views/humpyard_form/_string_input.html.haml
127
+ - app/views/humpyard_form/_submit.html.haml
128
+ - app/views/humpyard_form/_text_input.html.haml
129
+ - config/locales/en.yml
130
+ - VERSION
131
+ - README.rdoc
132
+ - LICENCE
133
+ - Gemfile
134
+ has_rdoc: true
135
+ homepage: http://humpyard.org/
136
+ licenses: []
137
+
138
+ post_install_message:
139
+ rdoc_options: []
140
+
141
+ require_paths:
142
+ - lib
143
+ required_ruby_version: !ruby/object:Gem::Requirement
144
+ requirements:
145
+ - - ">="
146
+ - !ruby/object:Gem::Version
147
+ segments:
148
+ - 0
149
+ version: "0"
150
+ required_rubygems_version: !ruby/object:Gem::Requirement
151
+ requirements:
152
+ - - ">="
153
+ - !ruby/object:Gem::Version
154
+ segments:
155
+ - 0
156
+ version: "0"
157
+ requirements: []
158
+
159
+ rubyforge_project:
160
+ rubygems_version: 1.3.6
161
+ signing_key:
162
+ specification_version: 3
163
+ summary: HumpyardForm is a Rails form builder
164
+ test_files: []
165
+