class SassC::FunctionsHandler
def arguments_from_native_list(native_argument_list)
def arguments_from_native_list(native_argument_list) native_argument_list.map do |embedded_value| Script::ValueConversion.from_native embedded_value, @options end.compact end
def full_message(*args, **kwargs)
def full_message(*args, **kwargs) full_message = super(*args, **kwargs) if cause "#{full_message}\n#{cause.full_message(*args, **kwargs)}" else full_message end end
def setup(_native_options, functions: Script::Functions)
def setup(_native_options, functions: Script::Functions) @callbacks = {} functions_wrapper = Class.new do attr_accessor :options include functions end.new functions_wrapper.options = @options Script.custom_functions(functions: functions).each do |custom_function| callback = lambda do |native_argument_list| function_arguments = arguments_from_native_list(native_argument_list) begin result = functions_wrapper.send(custom_function, *function_arguments) rescue StandardError raise ::Sass::ScriptError, "Error: error in C function #{custom_function}" end to_native_value(result) rescue StandardError => e warn "[SassC::FunctionsHandler] #{e.cause.message}" raise e end @callbacks[Script.formatted_function_name(custom_function, functions: functions)] = callback end @callbacks end