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}