class Pakyow::Assets::Precompiler

Public Class Methods

new(app) click to toggle source
# File lib/pakyow/assets/precompiler.rb, line 8
def initialize(app)
  @app = app
end

Public Instance Methods

precompile!() click to toggle source
# File lib/pakyow/assets/precompiler.rb, line 12
def precompile!
  assets.each do |asset|
    precompile_asset!(asset)
  end

  packs.each do |pack|
    if pack.javascripts?
      precompile_asset!(pack.javascripts)
    end

    if pack.stylesheets?
      precompile_asset!(pack.stylesheets)
    end
  end
end

Private Instance Methods

assets() click to toggle source
# File lib/pakyow/assets/precompiler.rb, line 51
def assets
  @app.state(:asset) + @app.plugs.flat_map { |plug|
    plug.state(:asset)
  }
end
packs() click to toggle source
# File lib/pakyow/assets/precompiler.rb, line 57
def packs
  @app.state(:pack) + @app.plugs.flat_map { |plug|
    plug.state(:pack)
  }
end
precompile_asset!(asset) click to toggle source
# File lib/pakyow/assets/precompiler.rb, line 30
def precompile_asset!(asset)
  compile_path = File.join(@app.config.assets.compile_path, asset.public_path)
  FileUtils.mkdir_p(File.dirname(compile_path))

  asset_content = String.new
  asset.each do |content|
    asset_content << content
  end

  File.open(compile_path, "w+") do |file|
    file.write(asset_content)
  end

  if @app.config.assets.source_maps && source_map = asset.source_map
    File.open(compile_path + ".map", "w+") do |file|
      file.write(source_map.read)
    end
  end
end