module Toppings::Helper::SassConversionHelper
Public Instance Methods
convert_to_scss(content)
click to toggle source
# File lib/toppings/helper/sass_conversion_helper.rb, line 16 def convert_to_scss(content) init_tempfiles_for_conversion(content) # convert source content to the target format, placed in the target file # TODO: make conversion more dynamic, by allowing conversion from scss to sass too. ::Sass::Util.silence_sass_warnings do Sass::Exec::SassConvert.new(['-F', 'sass', '-T', 'scss', source_file, target_file]).parse end converted_content ensure [source_file, target_file].each(&:close) [source_file, target_file].each(&:unlink) end
load_compass_paths()
click to toggle source
# File lib/toppings/helper/sass_conversion_helper.rb, line 50 def load_compass_paths load_paths.merge Compass.configuration.sass_load_paths end
load_dependencies(file_path = nil)
click to toggle source
# File lib/toppings/helper/sass_conversion_helper.rb, line 44 def load_dependencies(file_path = nil) Toppings::SASS_DEPENDENCIES.each { |dep| require dep.to_s } load_compass_paths load_paths << file_path if file_path end
load_paths()
click to toggle source
# File lib/toppings/helper/sass_conversion_helper.rb, line 54 def load_paths sass_engine_options[:load_paths] ||= Set.new end
sass_engine_options()
click to toggle source
# File lib/toppings/helper/sass_conversion_helper.rb, line 58 def sass_engine_options @sass_engine_options ||= {} end
valid_sass?(content, file_path = nil)
click to toggle source
# File lib/toppings/helper/sass_conversion_helper.rb, line 31 def valid_sass?(content, file_path = nil) load_dependencies(file_path) ::Sass::Util.silence_sass_warnings do begin Sass::Engine.new(content, sass_engine_options.merge(check_syntax: true)).render rescue ::Sass::SyntaxError => e say e.message false end end end
Private Instance Methods
converted_content()
click to toggle source
# File lib/toppings/helper/sass_conversion_helper.rb, line 77 def converted_content target_file.rewind target_file.read end
init_tempfiles_for_conversion(content)
click to toggle source
# File lib/toppings/helper/sass_conversion_helper.rb, line 64 def init_tempfiles_for_conversion(content) file_name = Digest::MD5.new.update(content) @source_file = Tempfile.new("#{file_name}_source") @target_file = Tempfile.new("#{file_name}_target") write_source(content) end
write_source(content)
click to toggle source
# File lib/toppings/helper/sass_conversion_helper.rb, line 72 def write_source(content) source_file.write(content) source_file.rewind end