Skip to content

Instantly share code, notes, and snippets.

@Thermatix
Last active August 29, 2015 14:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save Thermatix/6c7d579a4962cc905d72 to your computer and use it in GitHub Desktop.
Save Thermatix/6c7d579a4962cc905d72 to your computer and use it in GitHub Desktop.
require "yui/compressor"
require "sass"
require 'sprockets'
require 'opal'
module VCK
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)
VCK::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 do |captures|
file_name,extention = captures
content_type(Mime_Types[extention])
settings.assets["#{file_name}.#{extention}"].to_s
end
def self.included base
base.class_exec(self) do |assets|
unless ENV['RACK_ENV'] == 'production'
end
asset_types = nil
configure do
set :assets, Sprockets::Environment.new(settings.root)
settings.assets.tap do |s|
s.register_engine '.orb', Opal::Processor
##set up opal paths
Opal.paths.each {|p| s.append_path p}
##set up "traditional" assets
s.append_path assets_root
(asset_types = %w{javascripts stylesheets fonts images}).each do |asset_folder|
s.append_path "#{settings.asset_root}/#{asset_folder}"
end
#set up compressers and pre-proccessors
s.js_compressor = :yui
s.css_compressor = :sass
end
end
Opal::Processor.source_map_enabled = false
puts settings.assets.paths.to_s
##add asset routes for asset_root folder
get %r{/#{settings.asset_root}/(.*)(\W.*)$} do
puts params[:captures].to_s
s = self.instance_exec(params[:captures],&assets.get_asset)
puts s
s
end
#add asset types
asset_types.each do |asset_type|
get %r{/#{settings.asset_root}/#{asset_type}/(.*)(\W.*)$} do
puts params[:captures].to_s
s = self.instance_exec(params[:captures],&assets.get_asset)
puts s
s
end
end
end
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment