blocks 0.3 → 0.4
Sign up to get free protection for your applications and to get access to all the features.
- data/app/helpers/blocks/helper.rb +19 -15
- data/app/views/blocks/_list.html.erb +35 -0
- data/app/views/blocks/{tables/_table.html.erb → _table.html.erb} +0 -0
- data/lib/blocks.rb +3 -6
- data/lib/blocks/container.rb +5 -0
- data/lib/blocks/context.rb +6 -10
- data/lib/blocks/engine.rb +3 -4
- data/lib/blocks/list_for.rb +18 -0
- data/lib/blocks/table_for.rb +2 -2
- metadata +10 -7
@@ -1,11 +1,18 @@
|
|
1
1
|
module Blocks
|
2
2
|
module Helper
|
3
|
+
def blocks
|
4
|
+
options = {}
|
5
|
+
options[:view] = self
|
6
|
+
|
7
|
+
@blocks ||= Blocks::Context.new(options)
|
8
|
+
end
|
9
|
+
|
10
|
+
def evaluated_content_options(options={})
|
11
|
+
evaluated_options = {}
|
12
|
+
options.each_pair { |k, v| evaluated_options[k] = (v.is_a?(Proc) ? v.call : v)}
|
13
|
+
evaluated_options
|
14
|
+
end
|
3
15
|
|
4
|
-
# def self.included(base)
|
5
|
-
# base.extend Helper
|
6
|
-
# # base.helper_method :table_for, :evaluated_content_options, :request_blocks
|
7
|
-
# end
|
8
|
-
|
9
16
|
def table_for(records, options={}, &block)
|
10
17
|
options[:view] = self
|
11
18
|
options[:records] = records
|
@@ -14,18 +21,15 @@ module Blocks
|
|
14
21
|
|
15
22
|
Blocks::TableFor.new(options).render
|
16
23
|
end
|
17
|
-
|
18
|
-
def
|
19
|
-
|
20
|
-
|
21
|
-
evaluated_options
|
22
|
-
end
|
23
|
-
|
24
|
-
def request_blocks
|
25
|
-
options = {}
|
24
|
+
|
25
|
+
def list_for(*args, &block)
|
26
|
+
options = args.extract_options!
|
27
|
+
|
26
28
|
options[:view] = self
|
29
|
+
options[:records] = args.first
|
30
|
+
options[:block] = block
|
27
31
|
|
28
|
-
|
32
|
+
Blocks::ListFor.new(options).render
|
29
33
|
end
|
30
34
|
end
|
31
35
|
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
<%= list.define :list_items do %>
|
2
|
+
<% if records %>
|
3
|
+
<% records.each do |record| %>
|
4
|
+
<%= list.use :item, :record => record %>
|
5
|
+
<% end %>
|
6
|
+
<% else %>
|
7
|
+
<%= list.use :items %>
|
8
|
+
<% end %>
|
9
|
+
<% end %>
|
10
|
+
|
11
|
+
<%= list.define :item do |options| %>
|
12
|
+
<%= content_tag :li, options[:item_html] do %>
|
13
|
+
<%= options[:field] ? options[:record].send(:field) : options[:record].to_s %>
|
14
|
+
<% end %>
|
15
|
+
<% end %>
|
16
|
+
|
17
|
+
<%= list.define :items do |options| %>
|
18
|
+
<% list.items.each do |item| %>
|
19
|
+
<%= content_tag :li, options.merge(item.options)[:item_html] do %>
|
20
|
+
<%= list.use item.name %>
|
21
|
+
<% end %>
|
22
|
+
<% end %>
|
23
|
+
<% end %>
|
24
|
+
|
25
|
+
<% list.items.each do |item| %>
|
26
|
+
<%= list.define item.name, :item => item do |options| %>
|
27
|
+
<%= item.name %>
|
28
|
+
<% end %>
|
29
|
+
<% end %>
|
30
|
+
|
31
|
+
<%= list.use :list do |options| %>
|
32
|
+
<%= content_tag :ul, options[:list_html] do %>
|
33
|
+
<%= list.use :list_items %>
|
34
|
+
<% end %>
|
35
|
+
<% end %>
|
File without changes
|
data/lib/blocks.rb
CHANGED
data/lib/blocks/context.rb
CHANGED
@@ -1,8 +1,4 @@
|
|
1
1
|
module Blocks
|
2
|
-
class Container
|
3
|
-
attr_accessor :name, :options, :block
|
4
|
-
end
|
5
|
-
|
6
2
|
class Context
|
7
3
|
|
8
4
|
attr_accessor :view, :blocks, :block_positions, :anonymous_block_number,
|
@@ -142,8 +138,8 @@ module Blocks
|
|
142
138
|
if blocks[name]
|
143
139
|
block_container = blocks[name]
|
144
140
|
ret.concat(view.capture shared_options.merge(block_container.options).merge(render_options), &block_container.block)
|
145
|
-
elsif view.
|
146
|
-
block_container = view.
|
141
|
+
elsif view.blocks.blocks[name]
|
142
|
+
block_container = view.blocks.blocks[name]
|
147
143
|
ret.concat(view.capture shared_options.merge(block_container.options).merge(render_options), &block_container.block)
|
148
144
|
else
|
149
145
|
begin
|
@@ -166,8 +162,8 @@ module Blocks
|
|
166
162
|
end
|
167
163
|
end
|
168
164
|
|
169
|
-
unless view.
|
170
|
-
view.
|
165
|
+
unless view.blocks.blocks[name].nil?
|
166
|
+
view.blocks.blocks[name].each do |block_container|
|
171
167
|
ret.concat(view.capture shared_options.merge(block_container.options).merge(options), &block_container.block)
|
172
168
|
end
|
173
169
|
end
|
@@ -185,8 +181,8 @@ module Blocks
|
|
185
181
|
end
|
186
182
|
end
|
187
183
|
|
188
|
-
unless view.
|
189
|
-
view.
|
184
|
+
unless view.blocks.blocks[name].nil?
|
185
|
+
view.blocks.blocks[name].each do |block_container|
|
190
186
|
ret.concat(view.capture shared_options.merge(block_container.options).merge(options), &block_container.block)
|
191
187
|
end
|
192
188
|
end
|
data/lib/blocks/engine.rb
CHANGED
@@ -3,11 +3,10 @@ require "rails"
|
|
3
3
|
|
4
4
|
module Blocks
|
5
5
|
class Engine < Rails::Engine
|
6
|
-
|
7
|
-
|
8
|
-
ActionView::Base.class_eval do
|
6
|
+
initializer "blocks.initialize" do
|
7
|
+
ActiveSupport.on_load(:action_view) do
|
9
8
|
include Blocks::Helper
|
10
|
-
end
|
9
|
+
end
|
11
10
|
end
|
12
11
|
end
|
13
12
|
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Blocks
|
2
|
+
class ListFor < Blocks::Context
|
3
|
+
alias items block_positions
|
4
|
+
alias item use
|
5
|
+
|
6
|
+
def header(name, options={}, &block)
|
7
|
+
define("#{name.to_s}_header", options, &block)
|
8
|
+
end
|
9
|
+
|
10
|
+
def initialize(options)
|
11
|
+
options[:template] = "blocks/list"
|
12
|
+
options[:templates_folder] = "blocks/lists"
|
13
|
+
options[:record_variable] = "records"
|
14
|
+
options[:variable] = "list"
|
15
|
+
super
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
data/lib/blocks/table_for.rb
CHANGED
@@ -8,8 +8,8 @@ module Blocks
|
|
8
8
|
end
|
9
9
|
|
10
10
|
def initialize(options)
|
11
|
-
options[:template] = "blocks/
|
12
|
-
options[:templates_folder] = "tables"
|
11
|
+
options[:template] = "blocks/table"
|
12
|
+
options[:templates_folder] = "blocks/tables"
|
13
13
|
options[:record_variable] = "records"
|
14
14
|
options[:variable] = "table"
|
15
15
|
super
|
metadata
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: blocks
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 3
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
version: "0.
|
8
|
+
- 4
|
9
|
+
version: "0.4"
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Andrew Hunter
|
@@ -15,11 +15,11 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-12-
|
18
|
+
date: 2010-12-07 00:00:00 -05:00
|
19
19
|
default_executable:
|
20
20
|
dependencies: []
|
21
21
|
|
22
|
-
description:
|
22
|
+
description: content_for with parameters, with advanced options such as a table generator (table_for)
|
23
23
|
email: andrew@captico.com
|
24
24
|
executables: []
|
25
25
|
|
@@ -29,12 +29,15 @@ extra_rdoc_files:
|
|
29
29
|
- LICENSE
|
30
30
|
- README
|
31
31
|
files:
|
32
|
+
- lib/blocks/container.rb
|
32
33
|
- lib/blocks/context.rb
|
33
34
|
- lib/blocks/engine.rb
|
35
|
+
- lib/blocks/list_for.rb
|
34
36
|
- lib/blocks/table_for.rb
|
35
37
|
- lib/blocks.rb
|
36
38
|
- app/helpers/blocks/helper.rb
|
37
|
-
- app/views/blocks/
|
39
|
+
- app/views/blocks/_list.html.erb
|
40
|
+
- app/views/blocks/_table.html.erb
|
38
41
|
- README
|
39
42
|
- LICENSE
|
40
43
|
has_rdoc: true
|
@@ -71,6 +74,6 @@ rubyforge_project: blocks
|
|
71
74
|
rubygems_version: 1.3.7
|
72
75
|
signing_key:
|
73
76
|
specification_version: 3
|
74
|
-
summary:
|
77
|
+
summary: content_for with parameters, with advanced options such as a table generator (table_for)
|
75
78
|
test_files: []
|
76
79
|
|