Module: Card::Set::Format::AbstractFormat
Overview
All Format modules are extended with this module in order to support
the basic format API (ok, view definitions. It's just view
definitions.)
No longer just view definitions. Also basket definitions now.
Instance Method Summary
collapse
-
#async_view?(args) ⇒ Boolean
-
#before(view, &block) ⇒ Object
-
#define_async_view_method(view, &block) ⇒ Object
-
#define_standard_view_method(view, &block) ⇒ Object
-
#extract_view_cache_rules(view, cache_rule) ⇒ Object
-
#haml_view?(args) ⇒ Boolean
-
#interpret_view_opts(view, opts) ⇒ Object
-
#lookup_alias_block(view, args) ⇒ Object
-
#set_module ⇒ Object
remove the format part of the module name.
-
#source_location ⇒ Object
-
#view(view, *args, &block) ⇒ Object
-
#view_block(view, args, &block) ⇒ Object
-
#wrap_with_slot?(args) ⇒ Boolean
Methods included from HamlViews
#each_template_path, #haml_block_locals, #haml_template_path, #haml_template_proc, #haml_to_html, #haml_view_block, #template_location, #try_haml_template_path, #with_template_path
Methods included from Basket
#abstract_basket, #add_to_basket, #basket
Instance Method Details
#async_view?(args) ⇒ Boolean
148
149
150
|
# File 'lib/card/set/format.rb', line 148
def async_view? args
args.first.is_a?(Hash) && args.first[:async]
end
|
#before(view, &block) ⇒ Object
90
91
92
|
# File 'lib/card/set/format.rb', line 90
def before view, &block
define_method "_before_#{view}", &block
end
|
#define_async_view_method(view, &block) ⇒ Object
115
116
117
118
119
120
121
|
# File 'lib/card/set/format.rb', line 115
def define_async_view_method view, &block
view_content = "#{view}_async_content"
define_standard_view_method view_content, &block
define_standard_view_method view do
%(<card-view-placeholder data-url="#{path view: view_content}" />)
end
end
|
#define_standard_view_method(view, &block) ⇒ Object
110
111
112
113
|
# File 'lib/card/set/format.rb', line 110
def define_standard_view_method view, &block
views[self][view] = block
define_method "_view_#{view}", &block
end
|
129
130
131
132
133
|
# File 'lib/card/set/format.rb', line 129
def view, cache_rule
return unless cache_rule
methodname = Card::Format.view_cache_setting_method view
define_method(methodname) { cache_rule }
end
|
#haml_view?(args) ⇒ Boolean
140
141
142
|
# File 'lib/card/set/format.rb', line 140
def haml_view? args
args.first.is_a?(Hash) && args.first[:template] == :haml
end
|
#interpret_view_opts(view, opts) ⇒ Object
123
124
125
126
127
|
# File 'lib/card/set/format.rb', line 123
def interpret_view_opts view, opts
return unless opts.present?
Card::Format.interpret_view_opts view, opts
view, opts.delete(:cache)
end
|
#lookup_alias_block(view, args) ⇒ Object
152
153
154
155
156
157
158
159
160
|
# File 'lib/card/set/format.rb', line 152
def lookup_alias_block view, args
opts = args[0].is_a?(Hash) ? args.shift : { view: args.shift }
opts[:mod] ||= self
opts[:view] ||= view
views[opts[:mod]][opts[:view]] || begin
raise "cannot find #{opts[:view]} view in #{opts[:mod]}; " \
"failed to alias #{view} in #{self}"
end
end
|
#set_module ⇒ Object
remove the format part of the module name
167
168
169
|
# File 'lib/card/set/format.rb', line 167
def set_module
Card.const_get name.split("::")[0..-2].join("::")
end
|
#source_location ⇒ Object
162
163
164
|
# File 'lib/card/set/format.rb', line 162
def source_location
set_module.source_location
end
|
#view(view, *args, &block) ⇒ Object
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
|
# File 'lib/card/set/format.rb', line 94
def view view, *args, &block
interpret_view_opts view, args[0] if block_given?
view_method_block = view_block(view, args, &block)
if async_view? args
define_async_view_method view, &view_method_block
else
define_standard_view_method view, &view_method_block
end
end
|
#view_block(view, args, &block) ⇒ Object
135
136
137
138
|
# File 'lib/card/set/format.rb', line 135
def view_block view, args, &block
return haml_view_block(view, wrap_with_slot?(args), &block) if haml_view?(args)
block_given? ? block : lookup_alias_block(view, args)
end
|
#wrap_with_slot?(args) ⇒ Boolean
144
145
146
|
# File 'lib/card/set/format.rb', line 144
def wrap_with_slot? args
args.first.is_a?(Hash) && args.first[:slot]
end
|