1 package TB_Temp_Packname;
4 use Scalar::Util qw(blessed);
8 has root => (is => 'lazy');
10 has json => (is => 'lazy');
13 io->dir("/home/matthewt/tmp/introspection-data/host/services-dev/stable/node/host/")
20 sub dispatch_request {
24 ref($_[0][0]) eq 'HASH' ? $self->render_table($_[0][0]) : $_[0]
28 $self->structure($self->descend($self->root, split '/', $_[1]));
33 my ($self, $data) = @_;
34 if (ref($data) eq 'HASH') {
35 $data = [ @{$data}{sort keys %$data} ];
36 my @cols = sort keys %{$data->[0]};
42 die "Confused by $data";
47 my ($self, $target, @path) = @_;
48 return $target unless @path;
49 my $step = shift @path;
50 if (blessed($target) and $target->isa('IO::All::File')) {
51 $target = $self->json->decode(scalar $target->all);
53 $self->descend($target->{$step}, @path);
57 my ($self, $data) = @_;
61 map [ @{$_}{@{$data->{columns}}} ], @{$data->{data}}
63 [ 200, [ 'Content-type' => 'text/html' ], [
64 HTML::Tags::to_html_string(
69 (map { <td>, $self->render_el($_), </td> } @$_),
73 </body>, </html>, "\n",
78 sub render_el { ref($_[1]) eq 'ARRAY' ? join(', ', @{$_[1]}) : $_[1] }
80 __PACKAGE__->run_if_script;