Class | Sass::Script::Funcall |
In: |
lib/sass/script/funcall.rb
|
Parent: | Node |
A SassScript parse node representing a function call.
A function call either calls one of the functions in {Script::Functions}, or if no function with the given name exists it returns a string representation of the function call.
args | [R] |
The arguments to the function.
@return [Array<Script::Node>] |
name | [R] |
The name of the function.
@return [String] |
@param name [String] See \{name} @param name [Array<Script::Node>] See \{args}
# File lib/sass/script/funcall.rb, line 22 22: def initialize(name, args) 23: @name = name 24: @args = args 25: end
Evaluates the function call.
@param environment [Sass::Environment] The environment in which to evaluate the SassScript @return [Literal] The SassScript object that is the value of the function call @raise [Sass::SyntaxError] if the function call raises an ArgumentError
# File lib/sass/script/funcall.rb, line 37 37: def perform(environment) 38: args = self.args.map {|a| a.perform(environment)} 39: unless Haml::Util.has?(:public_instance_method, Functions, name) && name !~ /^__/ 40: return Script::String.new("#{name}(#{args.map {|a| a.perform(environment)}.join(', ')})") 41: end 42: 43: return Functions::EvaluationContext.new(environment.options).send(name, *args) 44: rescue ArgumentError => e 45: raise e unless e.backtrace.any? {|t| t =~ /:in `(block in )?(#{name}|perform)'$/} 46: raise Sass::SyntaxError.new("#{e.message} for `#{name}'") 47: end