def generate(args, kwargs = nil)
command = args.flat_map do |element|
case element
when Hash
element.flatten
else
element
end
end
kwargs&.each do |key, value|
if value
if value == true
command << key.name
else
command << key.name << value
end
end
end
command.map! do |element|
case element
when String
element
when Symbol
element.name
when Integer, Float
element.to_s
else
raise TypeError, "Unsupported command argument type: #{element.class}"
end
end
if command.empty?
raise ArgumentError, "can't issue an empty redis command"
end
command
end