Acme-ReturnValue
view release on metacpan or search on metacpan
lib/Acme/ReturnValue/MakeSite.pm view on Meta::CPAN
package Acme::ReturnValue::MakeSite;
# ABSTRACT: generate returnvalues.plix.at
our $VERSION = '1.004'; # VERSION
use 5.010;
use strict;
use warnings;
use Path::Class qw();
use URI::Escape;
use Encode qw(from_to);
use Data::Dumper;
use Acme::ReturnValue;
use Encode;
use Moose;
use JSON;
with qw(MooseX::Getopt);
use MooseX::Types::Path::Class;
has 'now' => (is=>'ro',isa=>'Str',default => sub { scalar localtime});
has 'quiet' => (is=>'ro',isa=>'Bool',default=>0);
has 'data' => (is=>'ro',isa=>'Path::Class::Dir',default=>'returnvalues',coerce=>1);
has 'out' => (is=>'ro',isa=>'Path::Class::Dir',default=>'htdocs',coerce=>1);
has 'json_decoder' => (is=>'ro',lazy_build=>1);
sub _build_json_decoder {
return JSON->new;
}
sub run {
my $self = shift;
my @interesting;
my %cool_dists;
my %bad_dists;
my %cool_rvs;
#my %authors;
if (!-d $self->out) {
$self->out->mkpath || die "cannot make dir ".$self->out;
}
my $dir = $self->data;
while (my $file=$dir->next) {
next unless $file=~/\/(?<dist>.*)\.json$/;
my $dist=$+{dist};
$dist=~s/^\///;
my $json = $file->slurp(iomode => '<:encoding(UTF-8)');
my $data = $self->json_decoder->decode($json);
next if ref($data) eq 'HASH' && $data->{is_boring};
foreach my $rreport (@$data) {
my $report = { %$rreport };
if (exists $report->{value}) {
$report->{value}=~s/\</</g;
$report->{value}=~s/\>/>/g;
if(length($report->{value})>255) {
$report->{value}=substr($report->{value},0,255).'...';
}
}
if ($report->{bad}) {
my $bad = $report->{bad};
$bad=~s/\</</g;
$bad=~s/\>/>/g;
if(length($bad)>255) {
$bad=substr($bad,0,255).'...';
}
$report->{bad}=$bad;
}
( run in 0.584 second using v1.01-cache-2.11-cpan-d7a12ab2c7f )