class Assette::TemplateSet

Attributes

templates[R]

Public Class Methods

new(*location) click to toggle source
# File lib/assette/template_set.rb, line 18
def initialize *location
  if location.size == 1
    location = location.pop
  end
  
  if location.is_a?(Array)
    location = 'all' if location.include?(:all) || location.include?('all')
  else
    location = location.to_s
  end
  
  path = Assette.config.templates_path
  
  if location == 'all'
    dirs = [File.join(path,'*')]
  elsif location.is_a?(Array)
    dirs = location.collect do |l|
      File.join(path,l)
    end
  else
    dirs = [File.join(path,location)]
  end
  
  @paths = []
  dirs.each do |dir|
    @paths += Dir[File.join(dir,'*')]
  end
  
  @templates = @paths.collect do |p|
    Template.open(p)
  end
end

Public Instance Methods

compile(opts={}) click to toggle source
# File lib/assette/template_set.rb, line 51
def compile(opts={})
  coffee = Array.new
  
  vars = storage_variable
  
  used = []
  vars.each do |var|
    used << var
    
    if used.size == 1
      str = "window[#{var.to_json}] ||= {}"
    else
      str = used.join('.')
      str << " ||= {}"
    end
    
    coffee << str
  end
  
  templates.each do |template|
    coffee << template.compile
  end
  
  t = Assette::Reader::Coffee.compile_str(coffee.join("\n"))
  pre = Assette.preloader_code unless opts[:no_preloader]
  pre ? [pre,t].join("\n") : t
end
storage_variable() click to toggle source
# File lib/assette/template_set.rb, line 79
def storage_variable
  format = Assette.config.template_format
  if m = format.match(/^([\w\.]+)\[/)
    vars = m[1].split('.')
  else
    []
  end
end