Class | Sass::Repl |
In: |
lib/sass/repl.rb
|
Parent: | Object |
Runs a SassScript read-eval-print loop. It presents a prompt on the terminal, reads in SassScript expressions, evaluates them, and prints the result.
Starts the read-eval-print loop.
# File lib/sass/repl.rb, line 16 16: def run 17: environment = Environment.new 18: environment.set_var('important', Script::String.new('!important')) 19: @line = 0 20: loop do 21: @line += 1 22: unless text = Readline.readline('>> ') 23: puts 24: return 25: end 26: 27: Readline::HISTORY << text 28: parse_input(environment, text) 29: end 30: end
# File lib/sass/repl.rb, line 34 34: def parse_input(environment, text) 35: case text 36: when Script::MATCH 37: name = $1 38: guarded = $3 == '||=' || $4 39: val = Script::Parser.parse($3, @line, text.size - $3.size) 40: 41: unless guarded && environment.var(name) 42: environment.set_var(name, val.perform(environment)) 43: end 44: 45: p environment.var(name) 46: else 47: p Script::Parser.parse(text, @line, 0).perform(environment) 48: end 49: rescue Sass::SyntaxError => e 50: puts "SyntaxError: #{e.message}" 51: if @options[:trace] 52: e.backtrace.each do |e| 53: puts "\tfrom #{e}" 54: end 55: end 56: end