$self->throw_exception( "set_column called for ${column} without value" )
if @_ < 3;
- # stringify all refs explicitly, guards against overloaded objects
+ return $self->{_column_data}{$column} = $value
+ unless length ref $value and my $vref = is_plain_value( $value );
+
+ # if we are dealing with a value/ref - there are a couple possibilities
+ # unpack the underlying piece of data and stringify all objects explicitly
+ # ( to accomodate { -value => ... } and guard against overloaded objects
# with defined stringification AND fallback => 0 (ugh!)
- $self->{_column_data}{$column} = ( length ref $value and is_plain_value( $value ) )
- ? "$value"
- : $value
+ $self->{_column_data}{$column} = defined blessed $$vref
+ ? "$$vref"
+ : $$vref
;
}