Class: Haml::Exec::Sass
Overview
A class encapsulating executable functionality specific to Sass.
Instance Method Summary collapse
-
#initialize(args) ⇒ Sass
constructor
:nodoc:.
- #process_result ⇒ Object
- #set_opts(opts) ⇒ Object
Methods inherited from Generic
Constructor Details
#initialize(args) ⇒ Sass
:nodoc:
168 169 170 171 172 |
# File 'lib/haml/exec.rb', line 168 def initialize(args) super @name = "Sass" @options[:for_engine][:load_paths] = ['.'] + (ENV['SASSPATH'] || '').split(File::PATH_SEPARATOR) end |
Instance Method Details
#process_result ⇒ Object
200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 |
# File 'lib/haml/exec.rb', line 200 def process_result if @options[:interactive] require 'sass' require 'sass/repl' ::Sass::Repl.new(@options).run return end super input = @options[:input] output = @options[:output] tree = if input.is_a?(File) && !@options[:check_syntax] ::Sass::Files.tree_for(input.path, @options[:for_engine]) else # We don't need to do any special handling of @options[:check_syntax] here, # because the Sass syntax checking happens alongside evaluation # and evaluation doesn't actually evaluate any code anyway. ::Sass::Engine.new(input.read(), @options[:for_engine]).to_tree end input.close() if input.is_a?(File) output.write(tree.render) output.close() if output.is_a? File rescue ::Sass::SyntaxError => e raise e if @options[:trace] raise "Syntax error on line #{get_line e}: #{e.}" end |
#set_opts(opts) ⇒ Object
174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 |
# File 'lib/haml/exec.rb', line 174 def set_opts(opts) super opts.on('-t', '--style NAME', 'Output style. Can be nested (default), compact, compressed, or expanded.') do |name| @options[:for_engine][:style] = name.to_sym end opts.on('-l', '--line-comments', 'Line Comments. Emit comments in the generated CSS indicating the corresponding sass line.') do @options[:for_engine][:line_comments] = true end opts.on('-i', '--interactive', 'Run an interactive SassScript shell.') do @options[:interactive] = true end opts.on('-I', '--load-path PATH', 'Add a sass import path.') do |path| @options[:for_engine][:load_paths] << path end opts.on('--cache-location', 'The path to put cached Sass files. Defaults to .sass-cache.') do |loc| @options[:for_engine][:cache_location] = path end opts.on('-C', '--no-cache', "Don't cache to sassc files.") do @options[:for_engine][:cache] = false end end |