show dependent or all code snippets button
[MojoFacets.git] / lib / MojoFacets / Code.pm
1 package MojoFacets::Code;
2
3 use strict;
4 use warnings;
5
6 use base 'Mojolicious::Controller';
7
8 use Data::Dump qw(dump);
9 use File::Slurp;
10
11 sub index {
12         my $self = shift;
13
14         $self->redirect_to('/data/columns') unless $self->session('columns');
15         my $columns = { map { $_ => 1 } @{ $self->session('columns') } };
16
17         my $dir = $self->app->home->rel_dir('public') . '/code';
18
19         my $snippets;
20
21         foreach my $full_path ( glob("$dir/*.pl") ) {
22                 my $path = $full_path;
23                 $path =~ s/^$dir\/*//;
24                 $path =~ s/\.pl$//;
25                 my ( $depends, $description ) = split(/\./,$path,2);
26
27                 my @deps = split(/,/,$depends);
28                 my $found = -1;
29                 $found += $columns->{$_} foreach @deps;
30 warn "# depends $depends $found $#deps\n";
31                 next unless $found == $#deps || $self->param('all_code');
32
33                 $snippets->{$depends}->{$description} = read_file $full_path, binmode => ':utf8';
34         }
35
36         $self->render(
37                 snippets => $snippets,
38         );
39 }
40
41 1;