| 123456789101112131415161718192021222324252627282930313233343536373839 | require 'sass/script/node'require 'sass/script/variable'require 'sass/script/funcall'require 'sass/script/operation'require 'sass/script/literal'require 'sass/script/parser'module Sass  # SassScript is code that's embedded in Sass documents  # to allow for property values to be computed from variables.  #  # This module contains code that handles the parsing and evaluation of SassScript.  module Script    # The regular expression used to parse variables.    MATCH = /^\$(#{Sass::SCSS::RX::IDENT})\s*:\s*(.+?)(!(?i:default))?$/    # The regular expression used to validate variables without matching.    VALIDATE = /^\$#{Sass::SCSS::RX::IDENT}$/    # Parses a string of SassScript    #    # @param value [String] The SassScript    # @param line [Fixnum] The number of the line on which the SassScript appeared.    #   Used for error reporting    # @param offset [Fixnum] The number of characters in on `line` that the SassScript started.    #   Used for error reporting    # @param options [{Symbol => Object}] An options hash;    #   see {file:SASS_REFERENCE.md#sass_options the Sass options documentation}    # @return [Script::Node] The root node of the parse tree    def self.parse(value, line, offset, options = {})      Parser.parse(value, line, offset, options)    rescue Sass::SyntaxError => e      e.message << ": #{value.inspect}." if e.message == "SassScript error"      e.modify_backtrace(:line => line, :filename => options[:filename])      raise e    end  endend
 |