Class: Sass::Script::Funcall
Overview
A SassScript parse node representing a function call.
A function call either calls one of the functions in Functions, or if no function with the given name exists it returns a string representation of the function call.
Instance Attribute Summary collapse
-
#args ⇒ Array<Script::Node>
readonly
The arguments to the function.
-
#name ⇒ String
readonly
The name of the function.
Attributes inherited from Node
Instance Method Summary collapse
-
#_perform(environment) ⇒ Literal
protected
Evaluates the function call.
-
#children ⇒ Array<Node>
Returns the arguments to the function.
-
#context=(context)
Don't set the context for child nodes if this is
url()
, sinceurl()
allows quoted strings. -
#initialize(name, args) ⇒ Funcall
constructor
A new instance of Funcall.
-
#inspect ⇒ String
A string representation of the function call.
- #to_sass(opts = {})
Methods inherited from Node
Constructor Details
#initialize(name, args) ⇒ Funcall
Returns a new instance of Funcall.
31 32 33 34 35 |
# File 'lib/sass/script/funcall.rb', line 31
def initialize(name, args)
@name = name
@args = args
super()
end
|
Instance Attribute Details
#args ⇒ Array<Script::Node> (readonly)
The arguments to the function.
18 19 20 |
# File 'lib/sass/script/funcall.rb', line 18
def args
@args
end
|
#name ⇒ String (readonly)
The name of the function.
13 14 15 |
# File 'lib/sass/script/funcall.rb', line 13
def name
@name
end
|
Instance Method Details
#_perform(environment) ⇒ Literal (protected)
Evaluates the function call.
62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
# File 'lib/sass/script/funcall.rb', line 62
def _perform(environment)
args = self.args.map {|a| a.perform(environment)}
ruby_name = name.gsub('-', '_')
unless Haml::Util.has?(:public_instance_method, Functions, ruby_name) && ruby_name !~ /^__/
return Script::String.new("#{name}(#{args.map {|a| a.perform(environment)}.join(', ')})")
end
result = Functions::EvaluationContext.new(environment.options).send(ruby_name, *args)
result.options = environment.options
return result
rescue ArgumentError => e
raise e unless e.backtrace.any? {|t| t =~ /:in `(block in )?(#{name}|perform)'$/}
raise Sass::SyntaxError.new("#{e.message} for `#{name}'")
end
|
#children ⇒ Array<Node>
Returns the arguments to the function.
51 52 53 |
# File 'lib/sass/script/funcall.rb', line 51
def children
@args
end
|
#context=(context)
Don't set the context for child nodes if this is url()
,
since url()
allows quoted strings.
25 26 27 |
# File 'lib/sass/script/funcall.rb', line 25
def context=(context)
super unless @name == "url"
end
|
#inspect ⇒ String
Returns A string representation of the function call.
38 39 40 |
# File 'lib/sass/script/funcall.rb', line 38
def inspect
"#{name}(#{args.map {|a| a.inspect}.join(', ')})"
end
|
#to_sass(opts = {})
43 44 45 |
# File 'lib/sass/script/funcall.rb', line 43
def to_sass(opts = {})
"#{dasherize(name, opts)}(#{args.map {|a| a.to_sass(opts)}.join(', ')})"
end
|