class Sass::Repl
Runs a SassScript read-eval-print loop. It presents a prompt on the terminal, reads in SassScript expressions, evaluates them, and prints the result.
Public Class Methods
new(options = {})
click to toggle source
@param options [{Symbol => Object}] An options hash.
# File lib/sass/repl.rb, line 11 def initialize(options = {}) @options = options end
Public Instance Methods
run()
click to toggle source
Starts the read-eval-print loop.
# File lib/sass/repl.rb, line 16 def run environment = Environment.new @line = 0 loop do @line += 1 unless (text = Readline.readline('>> ')) puts return end Readline::HISTORY << text parse_input(environment, text) end end
Private Instance Methods
parse_input(environment, text)
click to toggle source
# File lib/sass/repl.rb, line 33 def parse_input(environment, text) case text when Script::MATCH name = $1 guarded = !!$3 val = Script::Parser.parse($2, @line, text.size - ($3 || '').size - $2.size) unless guarded && environment.var(name) environment.set_var(name, val.perform(environment)) end p environment.var(name) else p Script::Parser.parse(text, @line, 0).perform(environment) end rescue Sass::SyntaxError => e puts "SyntaxError: #{e.message}" if @options[:trace] e.backtrace.each do |line| puts "\tfrom #{line}" end end end