name field first, don't implode on complex data values
Matt S Trout [Fri, 15 Jun 2012 14:47:53 +0000 (14:47 +0000)]
br.pl

diff --git a/br.pl b/br.pl
index 0bb29b6..3bb6466 100644 (file)
--- a/br.pl
+++ b/br.pl
@@ -14,7 +14,7 @@ sub _build_root {
 }
 
 sub _build_json {
-  JSON->new->relaxed
+  JSON->new->relaxed->pretty
 }
 
 sub dispatch_request {
@@ -41,8 +41,10 @@ sub structure {
       $tmp{join '|', keys %$_} = 1 for values %$data;
       if (keys %tmp == 1) {
         $data->{$_}->{name} ||= $_ for keys %$data;
+        my @cols = grep $_ ne 'name', sort keys %{(values %$data)[0]};
+        unshift @cols, 'name';
         return {
-          columns => [ sort keys %{(values %$data)[0]} ],
+          columns => \@cols,
           show_columns => 1,
           data => [ @{$data}{sort keys %$data} ],
         }
@@ -113,9 +115,13 @@ sub render_el {
     return join(', ', @$part);
   }
   if (ref($part) eq 'HASH') {
-    return $self->link_to($whole->{key});
+    if ($whole->{key}) {
+      return $self->link_to($whole->{key})
+    }
+    $part = '(complex)';
   }
-  return $part;
+  use HTML::Tags;
+  return $part =~ /\n/ ? (<pre>, $part, </pre>) : $part;
 }
 
 __PACKAGE__->run_if_script;