Class: Malt::Format::AbstractTemplate
- Defined in:
- lib/malt/formats/abstract_template.rb
Overview
An AbstractTemplate is a subclass of Abstract. It is used as the base class for general purpose template formats which can be used to render any other type of format.
Instance Attribute Summary
Attributes inherited from Abstract
Instance Method Summary collapse
-
#method_missing(sym, *args, &yld) ⇒ Object
ERB templates can be any type.
- #render(*type_and_data, &content) ⇒ Object
- #to(type, *data, &yld) ⇒ Object
Methods inherited from Abstract
#default, #engine, engine, extensions, #extensions, #file, file_extension, #file_read, #file_type, #parse_type_from_data, #refile, register, #render_into, #rendering_parameters, #scope_vs_data, #subtype, #text, #to_default, #to_s, #type, #with, #with!
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(sym, *args, &yld) ⇒ Object
ERB templates can be any type.
32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/malt/formats/abstract_template.rb', line 32 def method_missing(sym, *args, &yld) if Malt::Format.registry.key?(sym) # TODO: Malt.machine.format? return render_into(sym, *args, &yld) #.to_s elsif md = /^to_/.match(sym.to_s) type = md.post_match.to_sym if Malt::Format.registry.key?(type) # TODO: Malt.machine.format? return to(type, *args, &yld) end end super(sym, *args, &yld) end |
Instance Method Details
#render(*type_and_data, &content) ⇒ Object
21 22 23 24 25 26 27 28 29 |
# File 'lib/malt/formats/abstract_template.rb', line 21 def render(*type_and_data, &content) type, data = parse_type_from_data(*type_and_data) #opts = options.merge(:to=>type, :text=>text, :file=>file, :data=>data) render_into(type, *data, &content) #render_engine.render(opts, &yld) #opts = options.merge(:format=>type, :text=>text, :file=>file, :data=>data, :engine=>engine) #Malt.render(opts, &yld) end |
#to(type, *data, &yld) ⇒ Object
12 13 14 15 16 17 18 |
# File 'lib/malt/formats/abstract_template.rb', line 12 def to(type, *data, &yld) new_class = Malt::Format.registry[type.to_sym] # TODO: Malt.machine.format? new_text = render_into(type, *data, &yld) new_file = refile(type) = .merge(:text=>new_text, :file=>new_file, :type=>type) new_class.new() end |