Class: HammerCLI::Options::Normalizers::ListNested

Inherits:
AbstractNormalizer show all
Defined in:
lib/hammer_cli/options/normalizers.rb

Defined Under Namespace

Classes: Schema

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from AbstractNormalizer

#complete, #description, inherited

Constructor Details

#initialize(schema) ⇒ ListNested

Returns a new instance of ListNested.



181
182
183
# File 'lib/hammer_cli/options/normalizers.rb', line 181

def initialize(schema)
  @schema = Schema.new(schema)
end

Instance Attribute Details

#schemaObject (readonly)

Returns the value of attribute schema.



179
180
181
# File 'lib/hammer_cli/options/normalizers.rb', line 179

def schema
  @schema
end

Class Method Details

.common_descriptionObject



153
154
155
156
157
# File 'lib/hammer_cli/options/normalizers.rb', line 153

def common_description
  _('Comma separated list of values defined by a schema.') +
    "\n" +
    _('JSON is acceptable and preferred way for such parameters')
end

.completion_typeObject



149
150
151
# File 'lib/hammer_cli/options/normalizers.rb', line 149

def completion_type
  :schema
end

Instance Method Details

#completion_typeObject



198
199
200
# File 'lib/hammer_cli/options/normalizers.rb', line 198

def completion_type
  super.merge({ schema: schema.description(richtext: false) })
end

#format(val) ⇒ Object



185
186
187
188
189
190
191
192
193
194
195
196
# File 'lib/hammer_cli/options/normalizers.rb', line 185

def format(val)
  return [] unless val.is_a?(String) && !val.empty?
  begin
    JSON.parse(val)
  rescue JSON::ParserError
    HammerCLI::CSVParser.new.parse(val).inject([]) do |results, item|
      next if item.empty?

      results << KeyValueList.new.format(item)
    end
  end
end