lib/hammer_cli/options/normalizers.rb in hammer_cli-0.11.0 vs lib/hammer_cli/options/normalizers.rb in hammer_cli-0.12.0

- old
+ new

@@ -3,11 +3,10 @@ module HammerCLI module Options module Normalizers - class AbstractNormalizer def description "" end @@ -18,18 +17,23 @@ def complete(val) [] end end + class Default < AbstractNormalizer + def format(value) + value + end + end class KeyValueList < AbstractNormalizer PAIR_RE = '([^,=]+)=([^,\[]+|\[[^\[\]]*\])' FULL_RE = "^((%s)[,]?)+$" % PAIR_RE def description - _("Comma-separated list of key=value.") + _("Comma-separated list of key=value") end def format(val) return {} unless val.is_a?(String) return {} if val.empty? @@ -39,11 +43,11 @@ else begin formatter = JSONInput.new formatter.format(val) rescue ArgumentError - raise ArgumentError, _("value must be defined as a comma-separated list of key=value or valid JSON") + raise ArgumentError, _("Value must be defined as a comma-separated list of key=value or valid JSON.") end end end private @@ -95,11 +99,11 @@ def format(val) if numeric?(val) val.to_i else - raise ArgumentError, _("numeric value is required") + raise ArgumentError, _("Numeric value is required.") end end def numeric?(val) Integer(val) != nil rescue false @@ -109,21 +113,21 @@ class Bool < AbstractNormalizer def description - _("One of true/false, yes/no, 1/0.") + _("One of true/false, yes/no, 1/0") end def format(bool) bool = bool.to_s if bool.downcase.match(/^(true|t|yes|y|1)$/i) return true elsif bool.downcase.match(/^(false|f|no|n|0)$/i) return false else - raise ArgumentError, _("value must be one of true/false, yes/no, 1/0") + raise ArgumentError, _("Value must be one of true/false, yes/no, 1/0.") end end def complete(value) ["yes ", "no "] @@ -158,11 +162,11 @@ # '{ "units":[ { "name":"zip", "version":"9.0", "inclusion":"false" } ] }') json_string = ::File.exist?(::File.expand_path(val)) ? super(val) : val ::JSON.parse(json_string) rescue ::JSON::ParserError => e - raise ArgumentError, _("Unable to parse JSON input") + raise ArgumentError, _("Unable to parse JSON input.") end end @@ -180,13 +184,13 @@ def format(value) if @allowed_values.include? value value else if allowed_values.count == 1 - msg = _("value must be %s") % quoted_values + msg = _("Value must be %s.") % quoted_values else - msg = _("value must be one of %s") % quoted_values + msg = _("Value must be one of %s.") % quoted_values end raise ArgumentError, msg end end @@ -210,11 +214,11 @@ def format(date) raise ArgumentError unless date ::DateTime.parse(date).to_s rescue ArgumentError - raise ArgumentError, _("'%s' is not a valid date") % date + raise ArgumentError, _("'%s' is not a valid date.") % date end end class EnumList < AbstractNormalizer @@ -241,10 +245,10 @@ end def parse(arr) arr.split(",").uniq.tap do |values| unless values.inject(true) { |acc, cur| acc & (@allowed_values.include? cur) } - raise ArgumentError, _("value must be a combination of '%s'") % quoted_values + raise ArgumentError, _("Value must be a combination of '%s'.") % quoted_values end end end end end