Module: RedisClient::CommandBuilder

Extended by:
CommandBuilder
Included in:
CommandBuilder
Defined in:
lib/redis_client/command_builder.rb

Instance Method Summary collapse

Instance Method Details

#generate(args, kwargs = nil) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/redis_client/command_builder.rb', line 8

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