index_for 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: ea4e0afe260da5eec24621e4bd92dd33be8324b1
4
+ data.tar.gz: e227a16664cc72ad69259e5a0e70344d30744e29
5
+ SHA512:
6
+ metadata.gz: eadee2671a17f880efdb5b007b35156a4180e3b62cc5a36416bc02dfc867df4cc7609c809e1166730ae5b59214f900628ae1585bd85d351972654b65617aed72
7
+ data.tar.gz: bd245387e4eb295aa3f3f482f0a8bb37a93af756437c2a3e74809d1ef9df6d88d3f17ec1c7c50a2eecd26f0569a7cc2bdd27e70d49bc9ea23ddb4ce6c68134f5
data/Rakefile ADDED
@@ -0,0 +1,14 @@
1
+ require "bundler/gem_tasks"
2
+
3
+ require 'rake/testtask'
4
+
5
+ desc 'Test the index_for plugin.'
6
+ Rake::TestTask.new(:test) do |t|
7
+ t.libs << 'lib'
8
+ t.libs << 'test'
9
+ t.pattern = 'test/**/*_test.rb'
10
+ t.verbose = true
11
+ end
12
+
13
+ # If you want to make this the default task
14
+ task :default => :test
@@ -0,0 +1,3 @@
1
+ To copy a IndexFor initializer to your Rails App, with some configuration values, just do:
2
+
3
+ rails generate index_for:install
@@ -0,0 +1,22 @@
1
+ module IndexFor
2
+ module Generators
3
+ class InstallGenerator < Rails::Generators::Base
4
+ desc "Copy IndexFor installation files"
5
+ class_option :template_engine, :desc => 'Template engine to be invoked (erb or haml or slim).'
6
+ source_root File.expand_path('../templates', __FILE__)
7
+
8
+ def copy_initializers
9
+ copy_file 'index_for.rb', 'config/initializers/index_for.rb'
10
+ end
11
+
12
+ def copy_locale_file
13
+ copy_file 'en.yml', 'config/locales/index_for.en.yml'
14
+ end
15
+
16
+ def copy_generator_template
17
+ engine = options[:template_engine]
18
+ copy_file "index.html.#{engine}", "lib/templates/#{engine}/scaffold/index.html.#{engine}"
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,14 @@
1
+ en:
2
+ index_for:
3
+ blank: "Not specified"
4
+ # If you want to use html tags with blank value use blank html translation
5
+ # blank_html: "<span>Not specified</span>"
6
+ "yes": "Yes"
7
+ "no": "No"
8
+ actions:
9
+ actions: Actions
10
+ show: Show
11
+ new: New
12
+ edit: Edit
13
+ destroy: Destroy
14
+ confirmation: "Are you sure?"
@@ -0,0 +1,8 @@
1
+ <%%= index_for @<%= plural_name %> do |i| %>
2
+ <% attributes.each do |attribute| -%>
3
+ <%%= i.<%= attribute.reference? ? :association : :attribute %> :<%= attribute.name %> %>
4
+ <% end -%>
5
+ <%%= i.actions :all %>
6
+ <%% end %>
7
+
8
+ <%%= link_to 'New', new_<%= singular_name %>_path(@<%= singular_name %>) %>
@@ -0,0 +1,7 @@
1
+ = index_for(@<%= plural_name %>) do |i|
2
+ <%- attributes.each do |attribute| -%>
3
+ = i.<%= attribute.reference? ? :association : :attribute %> :<%= attribute.name %>
4
+ <% end -%>
5
+ = i.actions :all
6
+
7
+ = link_to 'New', new_<%= singular_name %>_path(@<%= singular_name %>)
@@ -0,0 +1,24 @@
1
+ # Use this setup block to configure all options available in IndexFor.
2
+ IndexFor.setup do |config|
3
+ # The tag which wraps index_for calls.
4
+ # config.index_for_tag = :div
5
+
6
+ # The DOM class set for index_for tag. Default is nil
7
+ # config.index_for_class = :custom
8
+
9
+ # The tag which wraps header call. Default is :thead, set nil to turn off header.
10
+ # config.head_tag = nil
11
+
12
+ # The tag which wraps body call. Default is :tbody.
13
+ # config.body_tag = :ul
14
+
15
+ # The tag which wraps each head column call. Default is :th.
16
+ # config.head_column_tag = :li
17
+
18
+ # The tag which wraps each body column call. Default is :td.
19
+ # config.body_column_tag = :li
20
+
21
+ # The tag which wraps each row call. Default is :tr.
22
+ # config.row_tag = :p
23
+
24
+ end
@@ -0,0 +1,30 @@
1
+ module IndexFor
2
+ module Attribute
3
+
4
+ private
5
+
6
+ def attribute_value attribute_name, options
7
+ attribute_name = options[:value] if options[:value]
8
+ attribute_name = :"#{attribute_name}.#{options[:with]}" if options[:with]
9
+
10
+ parts = attribute_name.to_s.split(".")
11
+ attribute_name = parts.pop
12
+
13
+ object = @object
14
+ parts.each do |attribute_name|
15
+ object = object.send(attribute_name)
16
+ end if parts.any?
17
+
18
+ if object.respond_to?(:"human_#{attribute_name}")
19
+ object.send :"human_#{attribute_name}"
20
+ else
21
+ object.send(attribute_name)
22
+ end
23
+ end
24
+
25
+ def attribute_label attribute_name
26
+ @object.class.human_attribute_name(attribute_name)
27
+ end
28
+
29
+ end
30
+ end
@@ -0,0 +1,118 @@
1
+ require 'index_for/attribute'
2
+
3
+ module IndexFor
4
+ class Builder
5
+ include IndexFor::ShareHelper
6
+ include IndexFor::Attribute
7
+
8
+ attr_accessor :object, :html_options, :template
9
+
10
+ def initialize object, html_options, template
11
+ @object, @html_options, @template = object, html_options, template
12
+ end
13
+
14
+ def attribute attribute_name, options = {}, &block; end
15
+ def association attribute_name, options = {}, &block
16
+ attribute attribute_name, options, &block
17
+ end
18
+
19
+ def attributes *attribute_names
20
+ options = attribute_names.extract_options!
21
+
22
+ attribute_names.map do |attribute_name|
23
+ attribute attribute_name, options
24
+ end.join.html_safe
25
+ end
26
+
27
+ def actions *action_names, &block; end
28
+
29
+ private
30
+
31
+ def apply_html type, options = {} #:nodoc:
32
+ type_tag = html_options[:"#{type}_tag"] || IndexFor.try(:"#{type}_tag")
33
+ type_html_options = apply_html_options type, options
34
+
35
+ return type_tag, type_html_options
36
+ end
37
+
38
+ def apply_html_options type, options = {}
39
+ type_class = IndexFor.send :"#{type}_class"
40
+
41
+ type_html_options = {}
42
+ type_html_options.merge!(html_options[:"#{type}_html"]) if html_options[:"#{type}_html"]
43
+ type_html_options.merge!(options[:html]) if options[:html]
44
+
45
+ append_class type_html_options, type_class
46
+
47
+ type_html_options
48
+ end
49
+
50
+
51
+ def wrap_content_with type, content, options = {}, &block #:nodoc:
52
+ type_tag, type_html_options = apply_html type, options
53
+ append_class type_html_options, IndexFor.blank_content_class if content.blank?
54
+
55
+ @template.content_tag type_tag, type_html_options do
56
+ format_content(content, options, &block)
57
+ end
58
+ end
59
+
60
+ def format_content content, options = {}, &block
61
+ # We need to convert content to_a because when dealing with ActiveRecord
62
+ # Array proxies, the follow statement Array# === content return false
63
+ if block && block.arity == 1
64
+ content = block
65
+ elsif content.respond_to?(:to_ary)
66
+ content = content.to_a
67
+ end
68
+
69
+ case content
70
+ when Date, Time, DateTime
71
+ I18n.l content, :format => options[:format] || IndexFor.i18n_format
72
+ when TrueClass
73
+ translate :"show_for.yes", :default => "Yes"
74
+ when FalseClass
75
+ translate :"show_for.no", :default => "No"
76
+ when Array, Hash
77
+ content.empty? ? blank_content(options) :
78
+ collection_content(content, options, &block)
79
+ when Proc
80
+ @template.capture(@object, &content)
81
+ when NilClass
82
+ blank_content(options)
83
+ else
84
+ content.to_s
85
+ end
86
+ end
87
+
88
+ def blank_content options
89
+ options[:if_blank] || translate(:blank, :default => "Not specified")
90
+ end
91
+
92
+ def collection_content collection, options, &block
93
+ collection_tag = options[:collection_tag] || IndexFor.collection_tag
94
+ collection_column_tag = options[:collection_column_tag] || IndexFor.collection_column_tag
95
+ @template.content_tag collection_tag do
96
+ collection.map do |content|
97
+ if block
98
+ @template.capture content, collection, @object, &block
99
+ else
100
+ @template.content_tag collection_column_tag, content
101
+ end
102
+ end.join.html_safe
103
+ end
104
+ end
105
+
106
+ # Gets the default tag set in IndexFor module and apply (if defined)
107
+ # around the given content. It also check for html_options in @options
108
+ # hash related to the current type.
109
+ def wrap_with type, content, options = {} #:nodoc:
110
+ type_tag, type_html_options = apply_html type, options
111
+ if type_tag
112
+ @template.content_tag type_tag, content, type_html_options
113
+ else
114
+ content
115
+ end
116
+ end
117
+ end
118
+ end
@@ -0,0 +1,31 @@
1
+ require 'index_for/builder'
2
+
3
+ module IndexFor
4
+ class ActionBuilder < Builder
5
+
6
+ def action_link action_name, options = {}, &block
7
+ if block
8
+ @template.capture(@object, &block)
9
+ else
10
+ action_title = translate(:"actions.#{action_name}",
11
+ default: action_name.to_s.humanize).html_safe
12
+ action_html_options = apply_html_options :action_link, options[:html] || {}
13
+ append_class action_html_options, :"action_#{action_name}"
14
+
15
+ case action_name
16
+ when :show
17
+ @template.link_to action_title, @template.polymorphic_path(@object),
18
+ action_html_options
19
+ when :destroy
20
+ @template.link_to action_title, @template.polymorphic_path(@object),
21
+ { data: { method: :destroy, confirm: translate(:"actions.confirmation")
22
+ }}.merge(action_html_options)
23
+ else
24
+ @template.link_to action_title, @template.polymorphic_path(@object,
25
+ action: action_name), action_html_options
26
+ end
27
+ end
28
+ end
29
+
30
+ end
31
+ end
@@ -0,0 +1,23 @@
1
+ require 'index_for/builder'
2
+
3
+ module IndexFor
4
+ class BodyColumnBuilder < Builder
5
+
6
+ def attribute attribute_name, options = {}, &block
7
+ append_html_class options, :"attr_#{attribute_name}"
8
+ wrap_content_with :table_body_cell, attribute_value(attribute_name,
9
+ options), options, &block
10
+ end
11
+
12
+ def actions *action_names, &block
13
+ options = action_names.extract_options!
14
+ options[:html] = apply_html_options :table_actions_cell, options
15
+
16
+ content = @template.index_for_actions @object, *action_names,
17
+ options, &block
18
+
19
+ wrap_with :table_body_cell, content, options
20
+ end
21
+
22
+ end
23
+ end
@@ -0,0 +1,19 @@
1
+ require 'index_for/builder'
2
+
3
+ module IndexFor
4
+ class HeadColumnBuilder < Builder
5
+
6
+ def attribute attribute_name, options = {}
7
+ append_html_class options, :"attr_#{attribute_name}"
8
+ wrap_with :table_head_cell, attribute_label(attribute_name), options
9
+ end
10
+
11
+ def actions *action_names
12
+ options = action_names.extract_options!
13
+ options[:html] = apply_html_options :table_actions_cell, options
14
+
15
+ wrap_with :table_head_cell, translate(:"actions.actions"), options
16
+ end
17
+
18
+ end
19
+ end
@@ -0,0 +1,32 @@
1
+ require 'index_for/builder'
2
+
3
+ module IndexFor
4
+ class ListColumnBuilder < Builder
5
+
6
+ def attribute attribute_name, options = {}, &block
7
+ label_options = options
8
+ label_options[:html] = options[:label_html]
9
+
10
+ content_options = options
11
+ content_options[:html] = options[:content_html]
12
+
13
+ row_options = options
14
+ row_options[:html] = options[:row_html]
15
+
16
+ wrap_with :list_row, label(attribute_name, label_options) +
17
+ content(attribute_name, options, &block), row_options
18
+ end
19
+
20
+ def label attribute_name, options
21
+ append_html_class options, :"attr_#{attribute_name}"
22
+ wrap_with :list_label, attribute_label(attribute_name), options
23
+ end
24
+
25
+ def content attribute_name, options, &block
26
+ append_html_class options, :"attr_#{attribute_name}"
27
+ wrap_content_with :list_content, attribute_value(attribute_name,
28
+ options), options, &block
29
+ end
30
+
31
+ end
32
+ end
@@ -0,0 +1,140 @@
1
+ module IndexFor
2
+ module Helper
3
+ include IndexFor::ShareHelper
4
+
5
+ # Creates a table around the objects and yields a builder.
6
+ #
7
+ # Example:
8
+ #
9
+ # index_for @users do |t|
10
+ # t.attribute :name
11
+ # t.attribute :email
12
+ # end
13
+ #
14
+ def index_for objects, html_options = {}, &block
15
+ html_options = html_options.dup
16
+
17
+ tag = html_options[:table_tag] || IndexFor.table_tag
18
+
19
+ klass = html_options[:klass] || objects.try(:klass) || objects.first.class
20
+
21
+ html_options[:id] ||= index_for_id(klass)
22
+ html_options[:class] = index_for_class(klass, html_options)
23
+
24
+ head = index_for_head(klass.new, html_options, &block)
25
+ body = index_for_body(objects, html_options, &block)
26
+ content = head + body
27
+
28
+ content_tag(tag, content, html_options)
29
+ end
30
+
31
+ # Create action links and yields a builder.
32
+ #
33
+ # Example:
34
+ #
35
+ # index_for_actions @user do |a|
36
+ # a.action_link :show
37
+ # a.action_link :edit
38
+ # end
39
+ #
40
+ # index_for_actions @user, :show, :edit
41
+ #
42
+ def index_for_actions object, *action_names, &block
43
+ html_options = action_names.extract_options!
44
+ action_names = [:show, :edit, :destroy] if action_names == [:all]
45
+
46
+ builder = IndexFor::ActionBuilder.new(object, html_options, self)
47
+
48
+ content = capture(builder) do |a|
49
+ action_names.map do |action_name|
50
+ a.action_link action_name
51
+ end.join.html_safe
52
+ end
53
+
54
+ content += capture(builder, &block) if block
55
+
56
+ content
57
+ end
58
+
59
+ # Creates a desc list around the object and yields a builder.
60
+ #
61
+ # Example:
62
+ #
63
+ # show_for @user do |l|
64
+ # l.attribute :name
65
+ # l.attribute :email
66
+ # end
67
+ #
68
+ def show_for object, html_options = {}, &block
69
+ html_options = html_options.dup
70
+
71
+ tag = html_options[:list_tag] || IndexFor.list_tag
72
+
73
+ html_options[:id] ||= show_for_id(object)
74
+ html_options[:class] = show_for_class(object, html_options)
75
+
76
+ content = capture(IndexFor::ListColumnBuilder.new(object, html_options, self), &block)
77
+
78
+ content_tag(tag, content, html_options)
79
+ end
80
+
81
+ private
82
+
83
+ def index_for_head object, html_options = {}, &block
84
+ head_tag = html_options[:head_tag] || IndexFor.table_head_tag
85
+ row_tag = html_options[:row_tag] || IndexFor.table_row_tag
86
+
87
+ head_html_options = html_options[:head_html] || {}
88
+ append_class head_html_options, IndexFor.table_head_class
89
+
90
+ row_html_options = html_options[:row_html] || {}
91
+ append_class row_html_options, IndexFor.table_row_class, dom_class(object)
92
+
93
+ content = capture(IndexFor::HeadColumnBuilder.new(object, html_options, self), &block)
94
+
95
+ content_tag(head_tag, head_html_options) do
96
+ content_tag(row_tag, content, row_html_options)
97
+ end
98
+ end
99
+
100
+ def index_for_body objects, html_options = {}, &block
101
+ body_tag = html_options[:body_tag] || IndexFor.table_body_tag
102
+ row_tag = html_options[:row_tag] || IndexFor.table_row_tag
103
+
104
+ body_html_options = html_options[:body_html] || {}
105
+ append_class body_html_options, IndexFor.table_body_class
106
+
107
+ content_tag(body_tag, body_html_options) do
108
+ objects.map do |object|
109
+ row_html_options = html_options[:row_html] || {}
110
+ row_html_options[:id] ||= dom_id(object)
111
+ append_class row_html_options, IndexFor.table_row_class, dom_class(object)
112
+
113
+ content = capture(IndexFor::BodyColumnBuilder.new(object, html_options, self), &block)
114
+ content_tag(row_tag, content, row_html_options)
115
+ end.join.html_safe
116
+ end
117
+ end
118
+
119
+ # Finds the class representing the collection
120
+ # IndexFor
121
+ def index_for_id klass
122
+ klass.model_name.plural
123
+ end
124
+
125
+ def index_for_class klass, html_options
126
+ append_class html_options, "index_for", klass.model_name.plural, IndexFor.table_class
127
+ end
128
+
129
+ # ShowFor
130
+ def show_for_id object
131
+ dom_id object
132
+ end
133
+
134
+ def show_for_class object, html_options
135
+ append_class html_options, "show_for", dom_class(object), IndexFor.table_class
136
+ end
137
+ end
138
+ end
139
+
140
+ ActionView::Base.send :include, IndexFor::Helper
@@ -0,0 +1,20 @@
1
+ module IndexFor
2
+ module ShareHelper
3
+ private
4
+
5
+ def append_class html_options, *classes
6
+ classes << html_options[:class]
7
+ classes.compact!
8
+ html_options[:class] = classes.join(" ") if classes.any?
9
+ end
10
+
11
+ def append_html_class options, *classes
12
+ options[:html] ||= {}
13
+ append_class options[:html], *classes
14
+ end
15
+
16
+ def translate i18n_key, options = {}
17
+ I18n.t(i18n_key, options.reverse_merge(scope: :index_for))
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,3 @@
1
+ module IndexFor
2
+ VERSION = "0.0.1"
3
+ end
data/lib/index_for.rb ADDED
@@ -0,0 +1,96 @@
1
+ require 'action_view'
2
+ require 'index_for/share_helper'
3
+ require 'index_for/helper'
4
+
5
+ module IndexFor
6
+ autoload :Builder, 'index_for/builder'
7
+ autoload :ActionBuilder, 'index_for/builders/action_builder'
8
+ autoload :HeadColumnBuilder, 'index_for/builders/head_column_builder'
9
+ autoload :BodyColumnBuilder, 'index_for/builders/body_column_builder'
10
+ autoload :ListColumnBuilder, 'index_for/builders/list_column_builder'
11
+
12
+ # IndexFor
13
+ mattr_accessor :table_tag
14
+ @@table_tag = :table
15
+ mattr_accessor :table_class
16
+ @@table_class = nil
17
+
18
+ mattr_accessor :table_head_tag
19
+ @@table_head_tag = :thead
20
+ mattr_accessor :table_head_class
21
+ @@table_head_class = nil
22
+
23
+ mattr_accessor :table_body_tag
24
+ @@table_body_tag = :tbody
25
+ mattr_accessor :table_body_class
26
+ @@table_body_class = nil
27
+
28
+ mattr_accessor :table_row_tag
29
+ @@table_row_tag = :tr
30
+ mattr_accessor :table_row_class
31
+ @@table_row_class = nil
32
+
33
+ mattr_accessor :table_head_cell_tag
34
+ @@table_head_cell_tag = :th
35
+ mattr_accessor :table_head_cell_class
36
+ @@table_head_cell_class = nil
37
+
38
+ mattr_accessor :table_body_cell_tag
39
+ @@table_body_cell_tag = :td
40
+ mattr_accessor :table_body_cell_class
41
+ @@table_body_cell_class = nil
42
+
43
+ mattr_accessor :table_actions_cell_class
44
+ @@table_actions_cell_class = :actions
45
+
46
+ mattr_accessor :action_link_class
47
+ @@action_link_class = :action
48
+
49
+ # ShowFor
50
+ mattr_accessor :list_tag
51
+ @@list_tag = :dl
52
+ mattr_accessor :list_class
53
+ @@list_class = nil
54
+
55
+ mattr_accessor :list_row_tag
56
+ @@list_row_tag = nil
57
+ mattr_accessor :list_row_class
58
+ @@list_row_class = nil
59
+
60
+ mattr_accessor :list_label_tag
61
+ @@list_label_tag = :dt
62
+ mattr_accessor :list_label_class
63
+ @@list_label_class = nil
64
+
65
+ mattr_accessor :list_content_tag
66
+ @@list_content_tag = :dd
67
+ mattr_accessor :list_content_class
68
+ @@list_content_class = nil
69
+
70
+ mattr_accessor :list_label_proc
71
+ @@list_label_proc = nil
72
+
73
+ mattr_accessor :blank_content_class
74
+ @@blank_content_class = "blank"
75
+
76
+ mattr_accessor :i18n_format
77
+ @@i18n_format = :default
78
+
79
+ mattr_accessor :association_methods
80
+ @@association_methods = [ :name, :title, :to_s ]
81
+
82
+ mattr_accessor :collection_tag
83
+ @@collection_tag = :ul
84
+ mattr_accessor :collection_column_tag
85
+ @@collection_column_tag = :li
86
+
87
+ # Yield self for configuration block:
88
+ #
89
+ # IndexFor.setup do |config|
90
+ # config.index_for_tag = :div
91
+ # end
92
+ #
93
+ def self.setup
94
+ yield self
95
+ end
96
+ end
metadata ADDED
@@ -0,0 +1,149 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: index_for
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Theo
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-07-17 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activemodel
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '3.2'
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '5'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: '3.2'
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '5'
33
+ - !ruby/object:Gem::Dependency
34
+ name: actionpack
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '3.2'
40
+ - - "<"
41
+ - !ruby/object:Gem::Version
42
+ version: '5'
43
+ type: :runtime
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: '3.2'
50
+ - - "<"
51
+ - !ruby/object:Gem::Version
52
+ version: '5'
53
+ - !ruby/object:Gem::Dependency
54
+ name: bundler
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - "~>"
58
+ - !ruby/object:Gem::Version
59
+ version: '1.6'
60
+ type: :development
61
+ prerelease: false
62
+ version_requirements: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - "~>"
65
+ - !ruby/object:Gem::Version
66
+ version: '1.6'
67
+ - !ruby/object:Gem::Dependency
68
+ name: rake
69
+ requirement: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ version: '0'
74
+ type: :development
75
+ prerelease: false
76
+ version_requirements: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - ">="
79
+ - !ruby/object:Gem::Version
80
+ version: '0'
81
+ - !ruby/object:Gem::Dependency
82
+ name: railties
83
+ requirement: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - ">="
86
+ - !ruby/object:Gem::Version
87
+ version: '3.2'
88
+ - - "<"
89
+ - !ruby/object:Gem::Version
90
+ version: '5'
91
+ type: :development
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - ">="
96
+ - !ruby/object:Gem::Version
97
+ version: '3.2'
98
+ - - "<"
99
+ - !ruby/object:Gem::Version
100
+ version: '5'
101
+ description: Wrap your objects with a helper to easily list them
102
+ email:
103
+ - bbtfrr@gmail.com
104
+ executables: []
105
+ extensions: []
106
+ extra_rdoc_files: []
107
+ files:
108
+ - Rakefile
109
+ - lib/generators/index_for/USAGE
110
+ - lib/generators/index_for/install_generator.rb
111
+ - lib/generators/index_for/templates/en.yml
112
+ - lib/generators/index_for/templates/index.html.erb
113
+ - lib/generators/index_for/templates/index.html.haml
114
+ - lib/generators/index_for/templates/index_for.rb
115
+ - lib/index_for.rb
116
+ - lib/index_for/attribute.rb
117
+ - lib/index_for/builder.rb
118
+ - lib/index_for/builders/action_builder.rb
119
+ - lib/index_for/builders/body_column_builder.rb
120
+ - lib/index_for/builders/head_column_builder.rb
121
+ - lib/index_for/builders/list_column_builder.rb
122
+ - lib/index_for/helper.rb
123
+ - lib/index_for/share_helper.rb
124
+ - lib/index_for/version.rb
125
+ homepage: https://github.com/bbtfr/index_for
126
+ licenses:
127
+ - MIT
128
+ metadata: {}
129
+ post_install_message:
130
+ rdoc_options: []
131
+ require_paths:
132
+ - lib
133
+ required_ruby_version: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - ">="
136
+ - !ruby/object:Gem::Version
137
+ version: '0'
138
+ required_rubygems_version: !ruby/object:Gem::Requirement
139
+ requirements:
140
+ - - ">="
141
+ - !ruby/object:Gem::Version
142
+ version: '0'
143
+ requirements: []
144
+ rubyforge_project:
145
+ rubygems_version: 2.2.2
146
+ signing_key:
147
+ specification_version: 4
148
+ summary: Wrap your objects with a helper to easily list them
149
+ test_files: []