This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
module Sass
|
||||
class Compiler
|
||||
class Host
|
||||
# The {Structifier} module.
|
||||
#
|
||||
# It converts {::Hash} to {Struct}-like objects.
|
||||
module Structifier
|
||||
module_function
|
||||
|
||||
def to_struct(obj, *symbols)
|
||||
return obj unless obj.is_a?(Hash)
|
||||
|
||||
struct = Object.new
|
||||
symbols.each do |key|
|
||||
next unless obj.key?(key)
|
||||
|
||||
value = obj[key]
|
||||
if value.respond_to?(:call)
|
||||
struct.define_singleton_method key do |*args, **kwargs|
|
||||
value.call(*args, **kwargs)
|
||||
end
|
||||
else
|
||||
struct.define_singleton_method key do
|
||||
value
|
||||
end
|
||||
end
|
||||
end
|
||||
struct
|
||||
end
|
||||
end
|
||||
|
||||
private_constant :Structifier
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user