Class: Teradata::Record

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

Instance Method Summary collapse

Constructor Details

#initialize(metadata, fields) ⇒ Record

Returns a new instance of Record.



1021
1022
1023
1024
1025
# File 'lib/teradata/connection.rb', line 1021

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

Instance Method Details

#[](key) ⇒ Object



1047
1048
1049
# File 'lib/teradata/connection.rb', line 1047

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

#each_field(&block) ⇒ Object



1057
1058
1059
# File 'lib/teradata/connection.rb', line 1057

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

#each_valueObject Also known as: each



1061
1062
1063
1064
1065
# File 'lib/teradata/connection.rb', line 1061

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

#field(key) ⇒ Object



1051
1052
1053
1054
1055
# File 'lib/teradata/connection.rb', line 1051

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

#inspectObject



1085
1086
1087
# File 'lib/teradata/connection.rb', line 1085

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

#keysObject



1043
1044
1045
# File 'lib/teradata/connection.rb', line 1043

def keys
  @metadata.field_names
end

#sizeObject



1039
1040
1041
# File 'lib/teradata/connection.rb', line 1039

def size
  @fields.size
end

#to_aObject



1073
1074
1075
# File 'lib/teradata/connection.rb', line 1073

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

#to_hObject



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

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

#values_at(*keys) ⇒ Object



1069
1070
1071
# File 'lib/teradata/connection.rb', line 1069

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