class Amber::Render::Asset

Constants

RENDER_MAP
SOURCE_MAP

Public Class Methods

render(src_file, dst_file) click to toggle source
# File lib/amber/render/asset.rb, line 21
def self.render(src_file, dst_file)
  unless Dir.exist?(File.dirname(dst_file))
    FileUtils.mkdir_p(File.dirname(dst_file))
  end
  File.unlink(dst_file) if File.exist?(dst_file)
  src_ext = File.extname(src_file)
  renderer = RENDER_MAP[src_ext]
  if renderer
    if File.basename(src_file) !~ /^_/  # skip partials
      content = self.send(renderer[:method], *([src_file] + renderer[:args]))
      new_dst_file = dst_file.sub(/#{Regexp.escape(src_ext)}$/, renderer[:new_suffix])
      File.open(new_dst_file,'w') do |w|
        w.write(content)
      end
    end
  elsif File.basename(src_file) == '.htaccess'
    # existing htaccess file must be copied, not linked, since
    # the render will change its contents.
    FileUtils.cp(src_file, dst_file)
  else
    File.link(src_file, dst_file)
  end
rescue SystemCallError => exc
  Amber.log_exception(exc)
end
render_dir(src_dir, dst_dir) click to toggle source

Render assets in a single directory (does not walk directory tree). Files prefixed with an _ are treated as partials and not rendered.

# File lib/amber/render/asset.rb, line 52
def self.render_dir(src_dir, dst_dir)
  Dir.chdir(src_dir) do
    Dir.glob('*').each do |file|
      if File.directory?(file) ||
        file =~ /^\./ ||
        file =~ /^_/
        next
      end
      src_file = File.join(src_dir, file)
      dst_file = File.join(dst_dir, file)
      render(src_file, dst_file)
    end
  end
end
render_sass(src_file, syntax) click to toggle source
# File lib/amber/render/asset.rb, line 67
def self.render_sass(src_file, syntax)
  engine = Sass::Engine.new(
    File.read(src_file),
    :syntax => syntax,
    :load_paths => [File.dirname(src_file)],
    :style => self.sass_render_style
  )
  engine.render
end
sass_render_style() click to toggle source
# File lib/amber/render/asset.rb, line 77
def self.sass_render_style
  Amber::env == :production ? :compact : :nested
end