mirror of
https://github.com/haml/haml.git
synced 2022-11-09 12:33:31 -05:00
47 lines
1.3 KiB
Ruby
47 lines
1.3 KiB
Ruby
module Sass
|
|
module Tree
|
|
# A dynamic node representing a mixin definition.
|
|
#
|
|
# @see Sass::Tree
|
|
class MixinDefNode < Node
|
|
# @param name [String] The mixin name
|
|
# @param args [Array<(Script::Node, Script::Node)>] The arguments for the mixin.
|
|
# Each element is a tuple containing the variable for argument
|
|
# and the parse tree for the default value of the argument
|
|
def initialize(name, args)
|
|
@name = name
|
|
@args = args
|
|
super()
|
|
end
|
|
|
|
# @see Node#to_sass
|
|
def to_sass(tabs, opts = {})
|
|
args =
|
|
if @args.empty?
|
|
""
|
|
else
|
|
'(' + @args.map do |v, d|
|
|
if d
|
|
"#{v.to_sass} = #{d.to_sass}"
|
|
else
|
|
v.to_sass
|
|
end
|
|
end.join(", ") + ')'
|
|
end
|
|
|
|
"#{' ' * tabs}=#{@name}#{args}\n" + children_to_sass(tabs, opts)
|
|
end
|
|
|
|
protected
|
|
|
|
# Loads the mixin into the environment.
|
|
#
|
|
# @param environment [Sass::Environment] The lexical environment containing
|
|
# variable and mixin values
|
|
def _perform(environment)
|
|
environment.set_mixin(@name, Sass::Mixin.new(@name, @args, environment, children))
|
|
[]
|
|
end
|
|
end
|
|
end
|
|
end
|