Sha256: a8c97a151b16d95cc234321b7d9269efe46d5fad9471e396606e145fbaf50b9d
Contents?: true
Size: 1.29 KB
Versions: 364
Compression:
Stored size: 1.29 KB
Contents
require 'readline' module Sass # Runs a SassScript read-eval-print loop. # It presents a prompt on the terminal, # reads in SassScript expressions, # evaluates them, # and prints the result. class Repl # @param options [{Symbol => Object}] An options hash. def initialize(options = {}) @options = options end # Starts the read-eval-print loop. 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 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 |e| puts "\tfrom #{e}" end end end end end
Version data entries
364 entries across 223 versions & 14 rubygems