module Pyro::Assets::ClassMethods
Public Instance Methods
script(*args)
click to toggle source
# File lib/pyro/assets.rb, line 15 def script(*args) tags = '' find_files(args.first, 'js, coffee').each do |file| tags << compile(args.first, file, 'js') end tags end
stylesheet(*args)
click to toggle source
# File lib/pyro/assets.rb, line 23 def stylesheet(*args) tags = '' find_files(args.first, 'css, scss').each do |file| tags << compile(args.first, file, 'css') end tags end
template(*args)
click to toggle source
# File lib/pyro/assets.rb, line 31 def template(*args) tags = '' find_files(args.first, 'hbs, handlebars').each do |file| tags << compile(args.first, file, 'js') end tags end
Private Instance Methods
compile(args, file, extension)
click to toggle source
# File lib/pyro/assets.rb, line 120 def compile(args, file, extension) path_attrs = parse_path(args, file) template_name = '' case path_attrs[:extension] when 'coffee' path_attrs[:contents] = CoffeeScript.compile(path_attrs[:contents], bare: true) when 'hbs', 'handlebars' path_attrs[:contents] = Barber::Ember::FilePrecompiler.call(path_attrs[:contents]) template_name = parse_name(args, file) when 'scss' path_attrs[:contents] = Sass::Engine.new( path_attrs[:contents], { style: :expanded, syntax: :scss } ).render end generate_file(path_attrs, extension, template_name) generate_link(path_attrs[:target_link], extension) end
compress(dir)
click to toggle source
# File lib/pyro/assets.rb, line 140 def compress(dir) Dir.glob("#{dir}/**/*.js").each do |file| contents = File.read(file) File.open(file, 'w+') do |f| f.write(JSMin.minify(contents).strip) end end Dir.glob("#{dir}/**/*.css").each do |file| contents = File.read(file) File.open(file, 'w+') do |f| f.write(Sass::Engine.new( contents, { style: :compressed, syntax: :scss } ).render) end end end
find_files(args, extensions)
click to toggle source
# File lib/pyro/assets.rb, line 41 def find_files(args, extensions) if @target == 'production' args[:src] = args[:prod_src] if args[:prod_src] args[:dir] = args[:prod_dir] if args[:prod_dir] end files = [] if args[:src] files << "#{@working_dir}/#{args[:src]}" elsif args[:dir] Dir.glob("#{@working_dir}/#{args[:dir]}/**/*.{#{extensions}}").each do |f| files << f end end files end
generate_file(path_attrs, extension, template_name)
click to toggle source
# File lib/pyro/assets.rb, line 93 def generate_file(path_attrs, extension, template_name) FileUtils.mkdir_p(path_attrs[:build_path]) File.open("#{path_attrs[:target_path]}.#{extension}", 'a+') do |f| if template_name == '' f.write(path_attrs[:contents]) else f.write("Ember.TEMPLATES['#{template_name}'] = #{path_attrs[:contents]}") end end end
generate_link(path, extension)
click to toggle source
# File lib/pyro/assets.rb, line 104 def generate_link(path, extension) case extension when 'js' link = "<script src='#{path}.#{extension}?#{@timestamp}' type='text/javascript'></script>" when 'css' link = "<link rel='stylesheet' href='#{path}.#{extension}?#{@timestamp}' type='text/css' />" end if @links.include? link '' else @links << link link end end
parse_name(args, file)
click to toggle source
# File lib/pyro/assets.rb, line 80 def parse_name(args, file) if args[:name] name = args[:name] elsif args[:src] name = f.split('/').last.split('.').first elsif args[:dir] name = file.sub("#{@working_dir}/#{args[:dir]}/", '').split('.').first else name = 'name-not-found' end name end
parse_path(args, path)
click to toggle source
# File lib/pyro/assets.rb, line 58 def parse_path(args, path) p = {} p[:contents] = File.read(path) p[:file_name] = path.split('/').last p[:extension] = path.split('.').last p[:name] = p[:file_name].sub(".#{p[:extension]}", '') p[:path] = path.sub(p[:file_name], '') p[:build_path] = p[:path].sub('./', "#{@build_dir}/") if args[:target] target_name = args[:target].split('/').last target_ext = target_name.split('.').last args[:target] = args[:target].sub(".#{target_ext}", '') p[:target_path] = "#{@build_dir}/#{args[:target]}" else p[:target_path] = "#{p[:build_path]}#{p[:name]}" end p[:target_link] = p[:target_path].sub(@build_dir, '') p end