App-OnePif
view release on metacpan or search on metacpan
lib/App/OnePif.pm view on Meta::CPAN
package App::OnePif;
use strict;
use warnings;
{ our $VERSION = '0.002'; }
use English qw( -no_match_vars );
use Carp;
use 5.010;
use Mo qw< is default >;
use Path::Tiny;
use YAML::Tiny;
{
no warnings 'redefine';
my @booleans = (
'JSON::PP::Boolean',
'JSON::XS::Boolean',
'Types::Serialiser::Boolean', # should not be needed
'Mojo::JSON::_Bool', # only up to Mojolicious 6.21
# Dancer, Dancer2 use JSON
);
sub YAML::Tiny::dumper_for_unknown {
my ($self, $element, $line, $indent, $seen) = @_;
my $type = ref $element;
for my $boolean (@booleans) {
next unless $element->isa($boolean);
$line .= $element ? ' true' : ' false';
return $line;
}
# no known boolean... complain!
die \"YAML::Tiny does not support $type references";
}
}
has file => (
is => 'rw',
lazy => 1,
default => sub { 'data.1pif' },
);
has attachments_dir => (
is => 'rw',
lazy => 1,
default => sub {
my $self = shift;
path($self->file())->sibling('attachments')
},
);
has records_byid => (
is => 'rw',
lazy => 1,
default => sub {
my $self = shift;
my $bt = $self->records_bytype;
my %retval;
for my $list (values %$bt) {
$retval{$_->{_id}} = $_ for @$list;
}
return \%retval;
},
);
has records_bytype => (
is => 'rw',
lazy => 1,
default => \&DEFAULT_records,
);
has JSON_decoder => (
is => 'rw',
lazy => 1,
default => sub {
for my $module (qw< JSON JSON::PP >) {
(my $filename = "$module.pm") =~ s{::}{/}gmxs;
( run in 0.673 second using v1.01-cache-2.11-cpan-39bf76dae61 )