lib/rbbt/tsv/accessor.rb in rbbt-util-5.4.1 vs lib/rbbt/tsv/accessor.rb in rbbt-util-5.5.0
- old
+ new
@@ -1,6 +1,5 @@
-#require 'rbbt/util/chain_methods'
require 'yaml'
module TSV
#extend ChainMethods
#self.chain_prefix = :tsv
@@ -33,11 +32,10 @@
def prepare_entity(entity, field, options = {})
return entity if entity.nil?
return entity unless defined? Entity
entity = entity if options.delete :dup_array
- entity_templates
if (template = entity_templates[field])
entity = template.annotate(entity.frozen? ? entity.dup : entity)
entity.extend AnnotatedArray if Array === entity
entity
else
@@ -261,11 +259,11 @@
through :key, field do |key, field|
elems << [key, field]
end
when :list, :flat
through :key, field do |key, fields|
- elems << [key, fields]
+ elems << [key, fields.first]
end
when :double
through :key, field do |key, fields|
elems << [key, fields.first]
end
@@ -479,23 +477,26 @@
IndiferentHash.setup options
end
def all_fields
+ return nil if key_field.nil? or fields.nil?
[key_field] + fields
end
def values_to_s(values)
- case
- when (values.nil? and fields.nil?)
- "\n"
- when (values.nil? and not fields.nil?)
- "\t" << ([""] * fields.length) * "\t" << "\n"
- when (not Array === values)
- "\t" << values.to_s << "\n"
- else
+ case values
+ when nil
+ if fields.nil? or fields.empty?
+ "\n"
+ else
+ "\t" << ([""] * fields.length) * "\t" << "\n"
+ end
+ when Array
"\t" << values.collect{|v| Array === v ? v * "|" : v} * "\t" << "\n"
+ else
+ "\t" << values.to_s << "\n"
end
end
def to_s(keys = nil, no_options = false)
if FalseClass === keys or TrueClass === keys
@@ -539,17 +540,21 @@
keys[0..10].zip(values[0..10]).each do |k,v| peek[k] = v end
peek
end
def summary
- <<-EOF
-Key field = #{key_field}
-Fields = #{fields * ", "}
+ with_unnamed do
+ <<-EOF
+Key field = #{key_field || "*No key field*"}
+Fields = #{fields ? Misc.fingerprint(fields) : "*No field info*"}
Type = #{type}
+Size = #{size}
+namespace = #{namespace}
Example:
- - #{key = keys.first}: #{self[key].inspect}
+ - #{key = keys.first}: #{Misc.fingerprint self[key] }
- EOF
+ EOF
+ end
end
def to_hash
new = self.dup
ENTRY_KEYS.each{|entry| new.delete entry}