def perform_splat(splat, performed_keywords, kwarg_splat, environment)
args, kwargs, separator = [], nil, :comma
if splat
splat = splat.perform(environment)
separator = splat.separator || separator
if splat.is_a?(Sass::Script::Value::ArgList)
args = splat.to_a
kwargs = splat.keywords
elsif splat.is_a?(Sass::Script::Value::Map)
kwargs = arg_hash(splat)
else
args = splat.to_a
end
end
kwargs ||= Sass::Util::NormalizedMap.new
kwargs.update(performed_keywords)
if kwarg_splat
kwarg_splat = kwarg_splat.perform(environment)
unless kwarg_splat.is_a?(Sass::Script::Value::Map)
raise Sass::SyntaxError.new("Variable keyword arguments must be a map " +
"(was #{kwarg_splat.inspect}).")
end
kwargs.update(arg_hash(kwarg_splat))
end
Sass::Script::Value::ArgList.new(args, kwargs, separator)
end