Module: Card::Set::Format::AbstractFormat
- Includes:
- Basket, HamlViews
- Defined in:
- lib/card/set/format/abstract_format.rb
Overview
All Format modules are extended with this module in order to support
the basic format API, including view, layout, and basket definitions
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
-
#view_for_override(viewname) ⇒ 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
79
80
81
|
# File 'lib/card/set/format/abstract_format.rb', line 79
def async_view? args
args.first.is_a?(Hash) && args.first[:async]
end
|
#before(view, &block) ⇒ Object
15
16
17
|
# File 'lib/card/set/format/abstract_format.rb', line 15
def before view, &block
define_method "_before_#{view}", &block
end
|
#define_async_view_method(view, &block) ⇒ Object
46
47
48
49
50
51
52
|
# File 'lib/card/set/format/abstract_format.rb', line 46
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
41
42
43
44
|
# File 'lib/card/set/format/abstract_format.rb', line 41
def define_standard_view_method view, &block
views[self][view] = block
define_method "_view_#{view}", &block
end
|
60
61
62
63
64
|
# File 'lib/card/set/format/abstract_format.rb', line 60
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
71
72
73
|
# File 'lib/card/set/format/abstract_format.rb', line 71
def haml_view? args
args.first.is_a?(Hash) && args.first[:template] == :haml
end
|
#interpret_view_opts(view, opts) ⇒ Object
54
55
56
57
58
|
# File 'lib/card/set/format/abstract_format.rb', line 54
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
83
84
85
86
87
88
89
90
91
|
# File 'lib/card/set/format/abstract_format.rb', line 83
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
98
99
100
|
# File 'lib/card/set/format/abstract_format.rb', line 98
def set_module
Card.const_get name.split("::")[0..-2].join("::")
end
|
#source_location ⇒ Object
93
94
95
|
# File 'lib/card/set/format/abstract_format.rb', line 93
def source_location
set_module.source_location
end
|
#view(view, *args, &block) ⇒ Object
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
# File 'lib/card/set/format/abstract_format.rb', line 19
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
66
67
68
69
|
# File 'lib/card/set/format/abstract_format.rb', line 66
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
|
#view_for_override(viewname) ⇒ Object
35
36
37
38
39
|
# File 'lib/card/set/format/abstract_format.rb', line 35
def view_for_override viewname
view viewname do
"override '#{viewname}' view"
end
end
|
#wrap_with_slot?(args) ⇒ Boolean
75
76
77
|
# File 'lib/card/set/format/abstract_format.rb', line 75
def wrap_with_slot? args
args.first.is_a?(Hash) && args.first[:slot]
end
|