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.