class Redis::CommandOptions

def bool(name)

def bool(name)
  insert(name) { |argument, value| [argument] }
end

def initialize(options)

def initialize(options)
  @result = []
  @options = options
  yield(self)
end

def insert(name)

def insert(name)
  @result += yield(name.to_s.upcase.gsub("_", ""), @options[name]) if @options[name]
end

def multi(name)

def multi(name)
  insert(name) { |argument, value| [argument].product(Array(value)).flatten }
end

def splat(name)

def splat(name)
  insert(name) { |argument, value| [argument, *value] }
end

def to_a

def to_a
  @result
end

def value(name)

def value(name)
  insert(name) { |argument, value| [argument, value] }
end

def words(name)

def words(name)
  insert(name) { |argument, value| value.split(" ") }
end