lib/hammer_cli/options/normalizers.rb in hammer_cli-0.1.2 vs lib/hammer_cli/options/normalizers.rb in hammer_cli-0.1.3

- old
+ new

@@ -26,17 +26,28 @@ _("Comma-separated list of key=value.") end def format(val) return {} unless val.is_a?(String) + return {} if val.empty? - val.split(",").inject({}) do |result, item| - parts = item.split("=") - if parts.size != 2 - raise ArgumentError, _("value must be defined as a comma-separated list of key=value") - end - result.update(parts[0] => parts[1]) + result = {} + + pair_re = '([^,]+)=([^,\[]+|\[[^\[\]]*\])' + full_re = "^((%s)[,]?)+$" % pair_re + + unless Regexp.new(full_re).match(val) + raise ArgumentError, _("value must be defined as a comma-separated list of key=value") end + + val.scan(Regexp.new(pair_re)) do |key, value| + value = value.strip + value = value.scan(/[^,\[\]]+/) if value.start_with?('[') + + result[key.strip]=value + end + return result + end end class List < AbstractNormalizer