class HammerCLI::Output::Definition
Attributes
fields[RW]
Public Class Methods
new()
click to toggle source
# File lib/hammer_cli/output/definition.rb, line 5 def initialize @fields = [] end
Public Instance Methods
append(fields = nil, &block)
click to toggle source
# File lib/hammer_cli/output/definition.rb, line 9 def append(fields = nil, &block) fields = [fields].compact unless fields.is_a?(Array) @fields += fields return @fields unless block_given? dsl = Dsl.new dsl.build(&block) @fields += dsl.fields end
at(path = [])
click to toggle source
# File lib/hammer_cli/output/definition.rb, line 28 def at(path = []) path = [path] unless path.is_a? Array return self if path.empty? field = find_field(path[0]) unless field.respond_to?(:output_definition) raise ArgumentError, "Field #{path[0]} doesn't have nested output definition" end field.output_definition.at(path[1..-1]) end
clear()
click to toggle source
# File lib/hammer_cli/output/definition.rb, line 41 def clear @fields = [] end
empty?()
click to toggle source
# File lib/hammer_cli/output/definition.rb, line 45 def empty? @fields.empty? end
find_field(field_id)
click to toggle source
# File lib/hammer_cli/output/definition.rb, line 18 def find_field(field_id) @fields[field_index(field_id)] end
insert(mode, field_id, fields = nil, &block)
click to toggle source
# File lib/hammer_cli/output/definition.rb, line 22 def insert(mode, field_id, fields = nil, &block) definition = self.class.new definition.append(fields, &block) HammerCLI.insert_relative(@fields, mode, field_index(field_id), *definition.fields) end
Private Instance Methods
field_index(field_id)
click to toggle source
# File lib/hammer_cli/output/definition.rb, line 51 def field_index(field_id) index = @fields.find_index do |f| f.match_id?(field_id) end raise ArgumentError, "Field #{field_id} not found" if index.nil? index end