Module: Card::Set::Format::HamlPaths
- Included in:
- All::Haml::Format, AbstractFormat::HamlViews
- Defined in:
- lib/card/set/format/haml_paths.rb
Overview
methods for handling paths to HAML templates
Constant Summary collapse
- TEMPLATE_DIR =
%w[template set].freeze
Instance Method Summary collapse
- #deep_source(source) ⇒ Object
- #each_template_path(source) ⇒ Object
- #haml_block_locals(&block) ⇒ Object
- #haml_template_path(view = nil, source = nil) ⇒ Object
- #haml_to_html(haml, locals = {}, a_binding = nil, debug_info = {}) ⇒ Object
- #template_location(debug_info) ⇒ Object
- #try_haml_template_path(template_path, view, source_dir, ext = "haml") ⇒ Object
- #with_template_path(path) ⇒ Object
Instance Method Details
#deep_source(source) ⇒ Object
50 51 52 53 |
# File 'lib/card/set/format/haml_paths.rb', line 50 def deep_source source return source unless source && Cardio.config.load_strategy == :tmp_files source.gsub %r{/tmp(sets)?\/set/mod\d{3}-([^/]+)}, "/mod/\\2/set" end |
#each_template_path(source) ⇒ Object
41 42 43 44 45 46 47 48 |
# File 'lib/card/set/format/haml_paths.rb', line 41 def each_template_path source source = deep_source(source) || source_location basename = ::File.basename source, ".rb" source_dir = ::File.dirname source ["./#{basename}", "."].each do |template_dir| yield template_dir, source_dir end end |
#haml_block_locals(&block) ⇒ Object
66 67 68 69 70 71 |
# File 'lib/card/set/format/haml_paths.rb', line 66 def haml_block_locals &block instance_exec(&block) if block_given? instance_variables.each_with_object({}) do |var, h| h[var.to_s.tr("@", "").to_sym] = instance_variable_get var end end |
#haml_template_path(view = nil, source = nil) ⇒ Object
24 25 26 27 28 29 30 31 32 |
# File 'lib/card/set/format/haml_paths.rb', line 24 def haml_template_path view=nil, source=nil each_template_path(source) do |template_dir, source_dir| path = try_haml_template_path template_dir, view, source_dir return path if path end msg = "can't find haml template" msg += " for #{view}" if view.present? raise Card::Error, msg end |
#haml_to_html(haml, locals = {}, a_binding = nil, debug_info = {}) ⇒ Object
8 9 10 11 12 13 14 |
# File 'lib/card/set/format/haml_paths.rb', line 8 def haml_to_html haml, locals={}, a_binding=nil, debug_info={} a_binding ||= binding ::Haml::Engine.new(haml).render a_binding, locals || {} rescue Haml::SyntaxError => e raise Card::Error, "haml syntax error #{template_location(debug_info)}: #{e.}" end |
#template_location(debug_info) ⇒ Object
34 35 36 37 38 39 |
# File 'lib/card/set/format/haml_paths.rb', line 34 def template_location debug_info return "" unless debug_info[:path] Pathname.new(debug_info[:path]) .relative_path_from(Pathname.new(Dir.pwd)) end |
#try_haml_template_path(template_path, view, source_dir, ext = "haml") ⇒ Object
55 56 57 58 59 60 61 62 63 64 |
# File 'lib/card/set/format/haml_paths.rb', line 55 def try_haml_template_path template_path, view, source_dir, ext="haml" template_path = File.join(template_path, view.to_s) if view.present? template_path += ".#{ext}" TEMPLATE_DIR.each do |template_dir| path = ::File.(template_path, source_dir) .sub(%r{(/mod/[^/]+)/set/}, "\\1/#{template_dir}/") return path if ::File.exist?(path) end false end |
#with_template_path(path) ⇒ Object
16 17 18 19 20 21 22 |
# File 'lib/card/set/format/haml_paths.rb', line 16 def with_template_path path old_path = @template_path @template_path = path yield ensure @template_path = old_path end |