lib/smallvictories/compiler.rb in smallvictories-0.0.5 vs lib/smallvictories/compiler.rb in smallvictories-0.0.6

- old
+ new

@@ -10,11 +10,10 @@ self.config = attributes[:config] end def compile_css package [config.stylesheet] - prefix_css end def compile_js package [config.javascript] end @@ -23,82 +22,93 @@ liquid end def liquid begin - Liquid::Template.file_system = Liquid::LocalFileSystem.new("#{config.full_source_path}/#{config.includes}") - layout_path = "#{config.full_source_path}/#{config.layout}" + Liquid::Template.file_system = Liquid::LocalFileSystem.new(config.full_includes_path) + layout_path = config.full_layout_path if File.exists?(layout_path) layout_file = File.open(layout_path).read layout = Liquid::Template.parse(layout_file) end rescue => e SmallVictories.logger.error "Liquid Error\n#{e}" return end - Dir.glob(["#{config.full_source_path}/*.html", "#{config.full_source_path}/*.liquid"]) do |path| + Dir.glob([File.join(config.full_source_path, '*.html'), File.join(config.full_source_path, '*.liquid')]) do |path| begin file_name = Pathname.new(path).basename.to_s.split('.').first next if file_name =~ /^_/ # do not render partials file = File.open(path).read liquid = Liquid::Template.parse(file) content = liquid.render('config' => { 'stylesheet' => config.stylesheet, 'javascript' => config.javascript }) output_file_name = file_name.concat('.html') - output_path = "#{config.full_destination_path}#{output_file_name}" + output_path = File.join(config.full_destination_path, output_file_name) if layout html = layout.render('content_for_layout' => liquid.render, 'config' => { 'stylesheet' => config.stylesheet, 'javascript' => config.javascript }) else html = liquid.render('config' => { 'stylesheet' => config.stylesheet, 'javascript' => config.javascript }) end Dir.mkdir(config.full_destination_path) unless File.exists?(config.full_destination_path) - File.open("#{config.full_destination_path}#{output_file_name}", 'w') { |file| file.write(html) } + File.open(File.join(config.full_destination_path, output_file_name), 'w') { |file| file.write(html) } SmallVictories.logger.info "compiled #{config.destination}/#{output_file_name}" rescue => e SmallVictories.logger.error "#{path}\n#{e}" end end end - def package bundles=[config.stylesheet, config.javascript] + def package bundles=[config.stylesheet, config.javascript], options={} sprockets = Sprockets::Environment.new(ROOT) do |environment| - environment.js_compressor = :uglify - environment.css_compressor = :scss + environment.gzip = true + environment.logger = SmallVictories.logger + environment.js_compressor = options[:js_compressor] || :uglify + environment.css_compressor = options[:css_compressor] || :sass end sprockets.append_path(config.full_source_path) bundles.each do |bundle| begin if assets = sprockets.find_asset(bundle) prefix, basename = assets.pathname.to_s.split('/')[-2..-1] FileUtils.mkpath config.full_destination_path - assets.write_to "#{config.full_destination_path}#{basename}" + assets.write_to File.join(config.full_destination_path, basename) SmallVictories.logger.info "compiled #{config.destination}/#{basename}" end rescue => e SmallVictories.logger.error "#{bundle}\n#{e}" end end end def prefix_css begin - path = "#{config.full_destination_path}#{config.stylesheet}" + path = File.join(config.full_destination_path, config.stylesheet) css = File.open(path).read prefixed = AutoprefixerRails.process(css, browsers: ['last 2 version', 'safari 5', 'ie 8', 'ie 9', 'opera 12.1'], cascade: false) File.open(path, 'w') { |file| file.write(prefixed.css) } sprockets = Sprockets::Environment.new(ROOT) do |environment| - environment.css_compressor = :scss + environment.css_compressor = :yui end sprockets.append_path(config.full_destination_path) - assets = sprockets.find_asset(config.stylesheet) - assets.write_to "#{config.full_destination_path}#{config.stylesheet}" - - SmallVictories.logger.info "prefixed #{config.destination}/#{config.stylesheet}" + if assets = sprockets.find_asset(config.stylesheet) + assets.write_to File.join(config.full_destination_path, config.stylesheet) + SmallVictories.logger.info "prefixed #{config.destination}/#{config.stylesheet}" + end rescue => e SmallVictories.logger.error "#{path}\n#{e}" end + end + + def minify_css + package [config.stylesheet] + prefix_css + end + + def minify_js + package [config.javascript], { js_compressor: :closure } end end end