module Roda::RodaPlugins::Assets::ClassMethods
Public Instance Methods
assets_opts()
click to toggle source
Return the assets options for this class.
# File lib/roda/plugins/assets.rb, line 51 def assets_opts opts[:assets] end
assets_unique_id(type)
click to toggle source
Generates a unique id, this is used to keep concat/compiled files from caching in the browser when they are generated
# File lib/roda/plugins/assets.rb, line 57 def assets_unique_id(type) if unique_id = instance_variable_get("@#{type}") unique_id else path = "#{assets_opts[:compiled_path]}/#{assets_opts[:"#{type}_folder"]}" file = "#{path}/#{assets_opts[:compiled_name]}.#{type}" content = File.exist?(file) ? File.read(file) : '' instance_variable_set("@#{type}", Digest::SHA1.hexdigest(content)) end end
compile_assets(concat_only = false)
click to toggle source
# File lib/roda/plugins/assets.rb, line 69 def compile_assets(concat_only = false) assets_opts[:concat_only] = concat_only %w(css js).each do |type| files = assets_opts[type.to_sym] if files.is_a? Array compile_process_files files, type, type else files.each do |folder, f| compile_process_files f, type, folder end end end end
inherited(subclass)
click to toggle source
Copy the assets options into the subclass, duping them as necessary to prevent changes in the subclass affecting the parent class.
Calls superclass method
# File lib/roda/plugins/assets.rb, line 44 def inherited(subclass) super opts = subclass.opts[:assets] = assets_opts.dup opts[:cache] = thread_safe_cache if opts[:cache] end
Private Instance Methods
compile_process_files(files, type, folder)
click to toggle source
# File lib/roda/plugins/assets.rb, line 87 def compile_process_files(files, type, folder) require 'yuicompressor' # start app instance app = new # content to render to file content = '' files.each do |file| if type != folder && !file[/^\.\//] && !file[/^http/] file = "#{folder}/#{file}" end content += app.read_asset_file file, type end path = assets_opts[:compiled_path] \ + "/#{assets_opts[:"#{type}_folder"]}/" \ + assets_opts[:compiled_name] \ + (type != folder ? ".#{folder}" : '') \ + ".#{type}" unless assets_opts[:concat_only] content = YUICompressor.send("compress_#{type}", content, munge: true) end File.write path, content end