NAME
FP::Abstract::Show - data constructor protocol
SYNOPSIS
package FPShowExample::Foo {
sub new { my $class = shift; bless [@_], $class }
sub FP_Show_show {
my ($self, $show) = @_;
# $show is for recursive use
"FPShowExample::Foo->new(".join(", ",
map { $show->($_) } @$self).")"
}
}
use FP::Show;
is show(FPShowExample::Foo->new("hey", new FPShowExample::Foo 5+5)),
"FPShowExample::Foo->new('hey', FPShowExample::Foo->new(10))";
DESCRIPTION
For an introduction, see FP::Show.
The reason that FP_Show_show
is getting a $show
argument is to provide for (probably evil, though) context sensitive formatting, but more importantly to hopefully enable to do pretty-printing and cut-off features (this is *alpha* though, see whether this works out).
TODO
Handle circular data structures.
Pretty-printing -- for this, probably move to returning FP::AST::Perl nodes instead of strings.
Declare that non-pretty-printing show must only print one line?
Cut-offs at configurable size
Configuration for whether to force promises
SEE ALSO
FP::Show -- functions to access this protocol usefully
FP::Mixin::Utils -- implemented by this protocol
NOTE
This is alpha software! Read the status section in the package README or on the website.