-
-
Save leejarvis/420a6dac6ccd3ff676a9 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require "yui/compressor" | |
require "sass" | |
require 'sprockets' | |
require 'opal' | |
module Assets | |
Opal = ::Opal | |
Sprockets = ::Sprockets | |
#this is a class for file dependencies (i.e, this class relies on the class Mime_Types to be loaded, and so it will) | |
Registry.add self, to: :utilities, deps: [ | |
{type: :utilities, key:'Mime_Types'} | |
] | |
class << self | |
attr_reader :get_asset | |
attr_accessor :opal_config | |
end | |
@get_asset = Proc.new { |captures| | |
file_name,extention = captures | |
content_type(Mime_Types[extention]) | |
settings.assets["#{file_name}.#{extention}"] | |
} | |
def self.included base | |
base.class_exec(self) do |assets| | |
asset_types = nil | |
configure do | |
set :assets, Sprockets::Environment.new | |
settings.assets.tap do |s| | |
#register opal | |
s.register_engine '.orb', Opal::Processor | |
# add app root | |
s.append_path settings.root | |
assets_root = "#{settings.root}/#{settings.asset_root}" | |
##set up "traditional" assets | |
(asset_types = %w{javascripts stylesheets fonts images}).each do |asset_folder| | |
s.append_path "#{assets_root}/#{asset_folder}" | |
end | |
##set up opal paths | |
Opal.append_path "#{settings.root}/components" | |
Opal.paths.each {|p| s.append_path p} | |
#set up compressers and pre-proccessors | |
s.js_compressor = YUI::JavaScriptCompressor.new | |
s.css_compressor = YUI::CssCompressor.new | |
end | |
end | |
Opal::Processor.source_map_enabled = false | |
##add asset routes for asset_root folder | |
get %r{/#{settings.asset_root}/(.*)(\W.*)$} do | |
self.instance_exec(params[:captures],&assets.get_asset) | |
end | |
#add asset types | |
asset_types.each do |asset_type| | |
get %r{/#{settings.asset_root}/#{asset_type}/(.*)(\W.*)$} do | |
self.instance_exec(params[:captures],&assets.get_asset) | |
end | |
end | |
end | |
end | |
end | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment