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.



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

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

Instance Method Details

#[](key) ⇒ Object



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

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

#each_field(&block) ⇒ Object



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

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

#each_valueObject Also known as: each



1084
1085
1086
1087
1088
# File 'lib/teradata-cli/connection.rb', line 1084

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

#field(key) ⇒ Object



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

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

#inspectObject



1117
1118
1119
# File 'lib/teradata-cli/connection.rb', line 1117

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

#keysObject



1066
1067
1068
# File 'lib/teradata-cli/connection.rb', line 1066

def keys
  @metadata.field_names
end

#sizeObject



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

def size
  @fields.size
end

#to_aObject



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

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

#to_hObject



1100
1101
1102
1103
1104
1105
1106
# File 'lib/teradata-cli/connection.rb', line 1100

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

#to_hash_with_symObject



1108
1109
1110
1111
1112
1113
1114
# File 'lib/teradata-cli/connection.rb', line 1108

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



1092
1093
1094
# File 'lib/teradata-cli/connection.rb', line 1092

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