lib/rbbt/util/tsv/accessor.rb in rbbt-util-3.0.3 vs lib/rbbt/util/tsv/accessor.rb in rbbt-util-3.1.0
- old
+ new
@@ -83,10 +83,17 @@
def fields_in_namespace(namespace = nil)
namespace = self.namespace if namespace == nil or TrueClass === namespace
fields.select{|f| f.namespace.nil? or f.namespace == namespace}
end
+ def key_field
+ return nil if @key_field.nil?
+ k = @key_field.dup
+ k.extend Field
+ k
+ end
+
def fields
return nil if @fields.nil?
fds = @fields
fds.each do |f| f.extend Field end if Array === @fields
fds.each do |f| f.namespace = namespace end unless namespace.nil?
@@ -111,11 +118,15 @@
all_fields.select{|f| f.namespace.nil? or f.namespace == namespace}
end
def self.identify_field(key, fields, field)
return field if Integer === field
- return :key if field.nil? or field == 0 or field.to_sym == :key or key == field
+ if String === field
+ field = field.dup
+ field.extend Field
+ end
+ return :key if field.nil? or field == 0 or field.to_sym == :key or field == key
return nil if fields.nil?
return fields.collect{|f| f.to_s}.index field if fields.collect{|f| f.to_s}.index field
return fields.index field
end
@@ -134,11 +145,11 @@
else
field
end
end if Array === new_fields
@fields = new_fields
- @data.fields = new_fields if @data.respond_to? :fields=
+ @data.fields = new_fields if @data.respond_to? :fields= and @data.write?
end
def old_fields=(new_fields)
@fields = new_fields
@data.fields = new_fields if @data.respond_to? :fields=
@@ -194,10 +205,14 @@
key = key.downcase if @case_insensitive and key !~ /^__Ref:/
follow @data[key]
end
+ def delete(key)
+ @data.delete(key)
+ end
+
def values_at(*keys)
keys.collect{|k|
self[k]
}
end
@@ -256,10 +271,14 @@
if FalseClass === keys or TrueClass === keys
no_options = keys
keys = nil
end
+ if keys == :sort
+ keys = self.keys.sort
+ end
+
str = ""
str << "#: " << Misc.hash2string(EXTRA_ACCESSORS.collect{|key| [key, self.send(key)]}) << "\n" unless no_options
if fields
str << "#" << key_field << "\t" << fields * "\t" << "\n"
@@ -276,7 +295,13 @@
str << key.dup << values_to_s(values)
end
end
str
+ end
+
+ def value_peek
+ peek = {}
+ keys[0..10].zip(values[0..10]).each do |k,v| peek[k] = v end
+ peek
end
end