easy_form 0.0.1 → 0.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 +4 -4
- data/easy_form.gemspec +15 -0
- data/lib/easy_form/builder.rb +7 -0
- data/lib/easy_form/field.rb +39 -0
- data/lib/easy_form/template.rb +21 -0
- data/lib/easy_form/version.rb +3 -0
- data/lib/generators/easy_form/view_generator.rb +12 -0
- data/lib/generators/easy_form/views/easy_form/_bootstrap.html.erb +6 -0
- data/lib/generators/easy_form/views/easy_form/_default.html.erb +7 -0
- data/readme.markdown +81 -0
- metadata +10 -1
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 9e29536c0b9549c789633a3b14ff5bf6d62d13ff
         | 
| 4 | 
            +
              data.tar.gz: 371f546e9666837efd820bd5feb3f2266b4d2e33
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: c731dd1ca55343adab51f9ebccff8c969e49eb27940f4dc711fdd9a8398984da111026bee60dfd026763fe0c03b55122b541576380035a72ca63ccffff77b9b6
         | 
| 7 | 
            +
              data.tar.gz: 211cada54b7fb760fc385056fa1ddca14be5699f3db3855fcdb658086258aa54058632a167d224d241a50f43b07daaf1048ab83291dddde9fb4895432a955a33
         | 
    
        data/easy_form.gemspec
    ADDED
    
    | @@ -0,0 +1,15 @@ | |
| 1 | 
            +
            lib = File.expand_path('../lib', __FILE__)
         | 
| 2 | 
            +
            $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
         | 
| 3 | 
            +
            require 'easy_form/version'
         | 
| 4 | 
            +
            Gem::Specification.new do |s|
         | 
| 5 | 
            +
              s.name        = 'easy_form'
         | 
| 6 | 
            +
              s.version     = EasyForm::VERSION
         | 
| 7 | 
            +
              s.date        = '2015-05-26'
         | 
| 8 | 
            +
              s.summary     = "form builder without complex dsl"
         | 
| 9 | 
            +
              s.description = "form builder without complex dsl"
         | 
| 10 | 
            +
              s.authors     = ["kikyous"]
         | 
| 11 | 
            +
              s.email       = 'kikyous@163.com'
         | 
| 12 | 
            +
              s.files       = `git ls-files`.split("\n")
         | 
| 13 | 
            +
              s.homepage    = 'https://github.com/kikyous/easy_form'
         | 
| 14 | 
            +
              s.license     = 'MIT'
         | 
| 15 | 
            +
            end
         | 
| @@ -0,0 +1,39 @@ | |
| 1 | 
            +
            module EasyForm
         | 
| 2 | 
            +
              class Field
         | 
| 3 | 
            +
                attr_accessor :builder, :type, :options, :args
         | 
| 4 | 
            +
                def initialize(builder, args, &block)
         | 
| 5 | 
            +
                  @builder = builder
         | 
| 6 | 
            +
                  @options = args.extract_options!
         | 
| 7 | 
            +
                  @args    = args
         | 
| 8 | 
            +
                  @block   = block
         | 
| 9 | 
            +
                end
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                def field
         | 
| 12 | 
            +
                  @args[1]
         | 
| 13 | 
            +
                end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                def model
         | 
| 16 | 
            +
                  builder.object.class
         | 
| 17 | 
            +
                end
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                def input(options={})
         | 
| 20 | 
            +
                  builder.send(*args, @options.merge(options), &@block)
         | 
| 21 | 
            +
                end
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                def required?
         | 
| 24 | 
            +
                  field && model.validators_on(field).any?{ActiveRecord::Validations::PresenceValidator}
         | 
| 25 | 
            +
                end
         | 
| 26 | 
            +
             | 
| 27 | 
            +
                def label_text
         | 
| 28 | 
            +
                  options[:label] || field.to_s.humanize
         | 
| 29 | 
            +
                end
         | 
| 30 | 
            +
             | 
| 31 | 
            +
                def to_s
         | 
| 32 | 
            +
                  EasyForm::Template.render(template_name, binding)
         | 
| 33 | 
            +
                end
         | 
| 34 | 
            +
             | 
| 35 | 
            +
                def template_name
         | 
| 36 | 
            +
                  builder.options[:template] || options[:template] || :default
         | 
| 37 | 
            +
                end
         | 
| 38 | 
            +
              end
         | 
| 39 | 
            +
            end
         | 
| @@ -0,0 +1,21 @@ | |
| 1 | 
            +
            module EasyForm
         | 
| 2 | 
            +
              class Template
         | 
| 3 | 
            +
                class << self
         | 
| 4 | 
            +
                  def store
         | 
| 5 | 
            +
                    return {} if Rails.env.development?
         | 
| 6 | 
            +
                    @store ||= {}
         | 
| 7 | 
            +
                  end
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                  def cache(name)
         | 
| 10 | 
            +
                    store[name] ||= yield
         | 
| 11 | 
            +
                  end
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                  def render(template_name, binding)
         | 
| 14 | 
            +
                    template = cache template_name do
         | 
| 15 | 
            +
                      File.read [Rails.root, '/app/views/easy_form/_', template_name, '.html.erb'].join
         | 
| 16 | 
            +
                    end
         | 
| 17 | 
            +
                    ERB.new(template).result(binding).html_safe
         | 
| 18 | 
            +
                  end
         | 
| 19 | 
            +
                end
         | 
| 20 | 
            +
              end
         | 
| 21 | 
            +
            end
         | 
| @@ -0,0 +1,12 @@ | |
| 1 | 
            +
            module EasyForm
         | 
| 2 | 
            +
              module Generators
         | 
| 3 | 
            +
                class ViewGenerator < Rails::Generators::Base
         | 
| 4 | 
            +
                  source_root File.expand_path('../', __FILE__)
         | 
| 5 | 
            +
                  desc "This generator copy template files to app/views/easy_form"
         | 
| 6 | 
            +
                  def copy_default_template_file
         | 
| 7 | 
            +
                    copy_file "views/easy_form/_bootstrap.html.erb", 'app/views/easy_form/_bootstrap.html.erb'
         | 
| 8 | 
            +
                    copy_file "views/easy_form/_default.html.erb", 'app/views/easy_form/_default.html.erb'
         | 
| 9 | 
            +
                  end
         | 
| 10 | 
            +
                end
         | 
| 11 | 
            +
              end
         | 
| 12 | 
            +
            end
         | 
    
        data/readme.markdown
    ADDED
    
    | @@ -0,0 +1,81 @@ | |
| 1 | 
            +
            EasyForm
         | 
| 2 | 
            +
            ===
         | 
| 3 | 
            +
            ### form builder without complex dsl
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            turn
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            ```ruby
         | 
| 8 | 
            +
            <%= f.text_field, :title %>
         | 
| 9 | 
            +
            ```
         | 
| 10 | 
            +
            into
         | 
| 11 | 
            +
             | 
| 12 | 
            +
            ```ruby
         | 
| 13 | 
            +
            <%= f.field :text_field, :title %>
         | 
| 14 | 
            +
            ```
         | 
| 15 | 
            +
            > as you see `field` is a proxy method that send method and args to `ActionView::Helpers::FormBuilder` instance, so you can write like this: `
         | 
| 16 | 
            +
            <%= f.field :text_area, :title %>
         | 
| 17 | 
            +
            `
         | 
| 18 | 
            +
             | 
| 19 | 
            +
            output:
         | 
| 20 | 
            +
             | 
| 21 | 
            +
            ```html
         | 
| 22 | 
            +
            <div class='row'>
         | 
| 23 | 
            +
              <div class="large-12 columns">
         | 
| 24 | 
            +
                <label>* Title
         | 
| 25 | 
            +
                  <input type="text" value="" name="article[title]" id="article_title">
         | 
| 26 | 
            +
                </label>
         | 
| 27 | 
            +
              </div>
         | 
| 28 | 
            +
            </div>
         | 
| 29 | 
            +
            ```
         | 
| 30 | 
            +
            template above:
         | 
| 31 | 
            +
             | 
| 32 | 
            +
            `app/views/easy_form/_default.html.erb`
         | 
| 33 | 
            +
             | 
| 34 | 
            +
            ```erb
         | 
| 35 | 
            +
            <div class='row'>
         | 
| 36 | 
            +
              <div class='large-12 columns'>
         | 
| 37 | 
            +
                <label><%= '*' if required? %> <%= label_text %>
         | 
| 38 | 
            +
                  <%= input %>
         | 
| 39 | 
            +
                </label>
         | 
| 40 | 
            +
              </div>
         | 
| 41 | 
            +
            </div>
         | 
| 42 | 
            +
             | 
| 43 | 
            +
            ```
         | 
| 44 | 
            +
            or you can use a named template:
         | 
| 45 | 
            +
             | 
| 46 | 
            +
            ```ruby
         | 
| 47 | 
            +
            <%= f.field :text_field, :title, template: 'bootstrap' %>
         | 
| 48 | 
            +
            ```
         | 
| 49 | 
            +
            or globally:
         | 
| 50 | 
            +
             | 
| 51 | 
            +
            ```ruby
         | 
| 52 | 
            +
            <%= form_for @article, template: 'bootstrap' %>
         | 
| 53 | 
            +
            ```
         | 
| 54 | 
            +
            ###Install
         | 
| 55 | 
            +
             | 
| 56 | 
            +
            `gem 'easy_form', github: 'kikyous/easy_form'`
         | 
| 57 | 
            +
             | 
| 58 | 
            +
             | 
| 59 | 
            +
            ```
         | 
| 60 | 
            +
            bundle
         | 
| 61 | 
            +
            rails g easy_form:view
         | 
| 62 | 
            +
            ```
         | 
| 63 | 
            +
            ###More example
         | 
| 64 | 
            +
            ```erb
         | 
| 65 | 
            +
            <%= f.field :text_area, :content %>
         | 
| 66 | 
            +
            <%= f.field :collection_check_boxes, :category_ids, Category.all, :id, :name %>
         | 
| 67 | 
            +
            <%= f.field :collection_check_boxes, :category_ids, Category.all, :id, :name do |b| %>
         | 
| 68 | 
            +
              <% b.label { b.check_box } %>
         | 
| 69 | 
            +
            <% end %>
         | 
| 70 | 
            +
             | 
| 71 | 
            +
            <%= f.field :collection_select, :user_id, User.all, :id, :name %>
         | 
| 72 | 
            +
             | 
| 73 | 
            +
            ```
         | 
| 74 | 
            +
             | 
| 75 | 
            +
            ###Method and object in template
         | 
| 76 | 
            +
             | 
| 77 | 
            +
            - input  (input tag generated with rails form builder)
         | 
| 78 | 
            +
            - field  (field, such as :title)
         | 
| 79 | 
            +
            - label_text (text display as label)
         | 
| 80 | 
            +
            - required? (this field is required?)
         | 
| 81 | 
            +
            - builder (rails form builder)
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: easy_form
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.0. | 
| 4 | 
            +
              version: 0.0.2
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - kikyous
         | 
| @@ -16,7 +16,16 @@ executables: [] | |
| 16 16 | 
             
            extensions: []
         | 
| 17 17 | 
             
            extra_rdoc_files: []
         | 
| 18 18 | 
             
            files:
         | 
| 19 | 
            +
            - easy_form.gemspec
         | 
| 19 20 | 
             
            - lib/easy_form.rb
         | 
| 21 | 
            +
            - lib/easy_form/builder.rb
         | 
| 22 | 
            +
            - lib/easy_form/field.rb
         | 
| 23 | 
            +
            - lib/easy_form/template.rb
         | 
| 24 | 
            +
            - lib/easy_form/version.rb
         | 
| 25 | 
            +
            - lib/generators/easy_form/view_generator.rb
         | 
| 26 | 
            +
            - lib/generators/easy_form/views/easy_form/_bootstrap.html.erb
         | 
| 27 | 
            +
            - lib/generators/easy_form/views/easy_form/_default.html.erb
         | 
| 28 | 
            +
            - readme.markdown
         | 
| 20 29 | 
             
            homepage: https://github.com/kikyous/easy_form
         | 
| 21 30 | 
             
            licenses:
         | 
| 22 31 | 
             
            - MIT
         |