module Card::Set::Format::HamlPaths

methods for handling paths to HAML templates

Constants

TMPSET_REGEXP

Public Instance Methods

deep_source(source) click to toggle source
# File lib/card/set/format/haml_paths.rb, line 51
def deep_source source
  return source unless tmp_files?

  source&.sub TMPSET_REGEXP do
    "#{Cardio::Mod.fetch(Regexp.last_match[:modname]).path}/set"
  end
end
each_template_path(source) { |template_dir, source_dir| ... } click to toggle source
# File lib/card/set/format/haml_paths.rb, line 40
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) click to toggle source
# 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) click to toggle source
# 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={}) click to toggle source
# 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.message}"
end
template_location(debug_info) click to toggle source
# 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") click to toggle source
# File lib/card/set/format/haml_paths.rb, line 59
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}"
  path = ::File.expand_path(template_path, source_dir)
  path if ::File.exist? path
end
with_template_path(path) { || ... } click to toggle source
# 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