sma backtracking (smart will be later ;)
[scpubgit/DX.git] / lib / DX / TraceFormatter.pm
index 31ee922..420ffef 100644 (file)
@@ -1,7 +1,6 @@
 package DX::TraceFormatter;
 
 use Scalar::Util qw(blessed);
-use curry;
 use List::Util qw(min);
 use DX::Class;
 
@@ -9,7 +8,7 @@ our $WS;
 our $Extra = 0;
 
 has ambient_indent_level => (
-  is => 'rwp', lazy => 1, clearer => 1, default => 0
+  is => 'rwp', lazy => 1, clearer => 1, default => 0, isa => Int
 );
 
 sub indent_by { '    ' }
@@ -29,8 +28,9 @@ sub format {
 sub _format {
   my ($self, $thing) = @_;
   my ($as, $data) = @{blessed($thing) ? $thing->for_deparse : $thing};
+  # return $self->${\"_format_as_${as}"}($data); if $WS eq "\n";
   local $WS = ' ';
-  my $spaced = $self->${\"_format_as_${as}"}($data);#
+  my $spaced = $self->${\"_format_as_${as}"}($data);
   if ($spaced =~ /\n/
       or (length($spaced)
            > ($self->max_width -
@@ -52,11 +52,11 @@ sub _format_as_word_and_body {
 }
 
 sub _format_indented {
-  my ($self, $cb) = @_;
-  return $cb->() if $WS eq ' ';
+  my ($self, $thing) = @_;
+  return $self->_format($thing) if $WS eq ' ';
   our $Indent_Level;
   local $Indent_Level = $Indent_Level + 1;
-  my $unindented = $cb->();
+  my $unindented = $self->_format($thing);
   (my $indented = $unindented) =~ s/^/${\$self->indent_by}/mg;
   return $indented;
 }
@@ -89,16 +89,16 @@ sub _format_as_array {
   my ($self, $members) = @_;
   join $WS,
     '{[',
-    (map $self->_format_indented($self->curry::_format($_)), @$members)
+    (map $self->_format_indented($_), @$members)
     , ']}';
 }
 
 sub _format_as_dict {
   my ($self, $members) = @_;
   join $WS, '{{', (
-    map $self->_format_indented($self->curry::_format(
+    map $self->_format_indented(
       [ word_and_body => [ $_, $members->{$_} ] ],
-    )), sort keys %$members
+    ), sort keys %$members
   ), '}}';
 }
 
@@ -115,16 +115,16 @@ sub _format_as_value_path {
 sub _format_as_list {
   my ($self, $members) = @_;
   join $WS, '{', (
-    map $self->_format_indented($self->curry::_format($_)), @$members
+    map $self->_format_indented($_), @$members
   ), '}';
 }
 
 sub _format_as_pairs {
   my ($self, $members) = @_;
   join $WS, '{', (
-    map $self->_format_indented($self->curry::_format(
+    map $self->_format_indented(
       [ word_and_body => $_ ]
-    )), @$members
+    ), @$members
   ), '}';
 }
 
@@ -132,7 +132,7 @@ sub _format_as_block {
   my ($self, $members) = @_;
   join $WS, '{', (
     join +($WS eq ' ' ? '; ' : $WS),
-      map $self->_format_indented($self->curry::_format($_)), @$members
+      map $self->_format_indented($_), @$members
   ), '}';
 }