module Gluey::AssetProcessing

Public Instance Methods

fetch(material, path, mark=nil) click to toggle source
# File lib/gluey/workshop/asset_processing.rb, line 4
def fetch(material, path, mark=nil)
  material = material.is_a?(::Gluey::Material) ? material : self.material(material)
  raise("Unknown material #{material}!") unless material
  cache_key = "lump:#{material}:#{path}"

  # check cache
  file, dependencies = @cache[cache_key]
  if file && File.exists?(file) && !dependencies.any?{|d| d.changed?}
    return file, dependencies
  end

  # make / remake
  file, dependencies = make_asset material, path
  cache[cache_key] = [file, dependencies]
  return file, dependencies
end
make_asset(material, path) click to toggle source
# File lib/gluey/workshop/asset_processing.rb, line 39
def make_asset(material, path)
  # prepare for processing
  base_file = material.find_base_file path
  file = "#{cache_path}/#{path}.#{material.asset_extension}"
  dependencies = [::Gluey::Dependencies::SingleFile.new(base_file).actualize]
  # process
  glue = material.glue.new self, material
  FileUtils.mkdir_p file[0..(file.rindex('/')-1)]
  glue.make file, base_file, dependencies
  return file, dependencies
end
real_path(material_name, path) click to toggle source
# File lib/gluey/workshop/asset_processing.rb, line 21
def real_path(material_name, path)
  material = self.material material_name

  file = material.find_base_file path
  unless material.is_listed? path, file
    msg = "#{material.to_s} doesn't have enlisted item #{path} (#{file})."
    raise ::Gluey::ListingError.new(msg)
  end

  if mark_versions
    _, dependencies = fetch material, path
    digested_mark = Digest::MD5.new.digest dependencies.map(&:mark).join
    "#{path}.#{Digest.hexencode digested_mark}.#{material.asset_extension}"
  else
    "#{path}.#{material.asset_extension}"
  end
end