Class: TeradataCli::Record

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/teradata-cli/connection.rb

Instance Method Summary collapse

Constructor Details

#initialize(metadata, fields) ⇒ Record

Returns a new instance of Record.



1022
1023
1024
1025
1026
# File 'lib/teradata-cli/connection.rb', line 1022

def initialize(, fields)
  @metadata = 
  @fields = fields
  @index = build_name_index()
end

Instance Method Details

#[](key) ⇒ Object



1048
1049
1050
# File 'lib/teradata-cli/connection.rb', line 1048

def [](key)
  field(key).value
end

#each_field(&block) ⇒ Object



1058
1059
1060
# File 'lib/teradata-cli/connection.rb', line 1058

def each_field(&block)
  @fields.each(&block)
end

#each_valueObject Also known as: each



1062
1063
1064
1065
1066
# File 'lib/teradata-cli/connection.rb', line 1062

def each_value
  @fields.each {|c|
    yield c.value
  }
end

#field(key) ⇒ Object



1052
1053
1054
1055
1056
# File 'lib/teradata-cli/connection.rb', line 1052

def field(key)
  i = (@index[key.to_s.downcase] || @index[key]) or
  raise ArgumentError, "bad field key: #{key}"
  @fields[i]
end

#inspectObject



1095
1096
1097
# File 'lib/teradata-cli/connection.rb', line 1095

def inspect
  "\#<Record #{@fields.map {|c| c.to_s }.join(', ')}>"
end

#keysObject



1044
1045
1046
# File 'lib/teradata-cli/connection.rb', line 1044

def keys
  @metadata.field_names
end

#sizeObject



1040
1041
1042
# File 'lib/teradata-cli/connection.rb', line 1040

def size
  @fields.size
end

#to_aObject



1074
1075
1076
# File 'lib/teradata-cli/connection.rb', line 1074

def to_a
  @fields.map {|f| f.value }
end

#to_hObject



1078
1079
1080
1081
1082
1083
1084
# File 'lib/teradata-cli/connection.rb', line 1078

def to_h
  h = {}
  @metadata.field_names.zip(@fields) do |name, field|
    h[name] = field.value
  end
  h
end

#to_hash_with_symObject



1086
1087
1088
1089
1090
1091
1092
# File 'lib/teradata-cli/connection.rb', line 1086

def to_hash_with_sym
  h = {}
  @metadata.field_names.zip(@fields) do |name, field|
    h[name.downcase.to_sym] = field.value
  end
  h
end

#values_at(*keys) ⇒ Object



1070
1071
1072
# File 'lib/teradata-cli/connection.rb', line 1070

def values_at(*keys)
  keys.map {|k| self[k] }
end