App-BPOMUtils
view release on metacpan or search on metacpan
lib/App/BPOMUtils.pm view on Meta::CPAN
push @rows, {
name_eng => 'Total sugar',
name_ind => 'Gula total',
val_per_100g => $val0,
(val_per_srv => $val,
val_per_srv_R => $valr) x ($per_package_ing ? 0:1),
(val_per_pkg => $val,
val_per_pkg_R => $valr) x $per_package_ing,
};
} elsif ($output_format =~ /vertical/) {
push @rows, [{colspan=>2, $attr=>$code_fmttext->("*Gula*")}, {align=>'right', $attr=>$code_fmttext->("*$valr g*")}, '', ''];
} elsif ($output_format =~ /linear/) {
push @rows, $code_fmttext->("*Gula $valr g*, ");
}
}
SODIUM: {
my $code_round_sodium = sub {
my $val = shift;
if ($val < 5) { 0 }
elsif ($val <= 140) { _nearest( 5, $val) }
else { _nearest(10, $val) }
};
my $code_round_sodium_pct_dv = sub {
my ($val, $fat_valr) = @_;
if ($fat_valr == 0) { 0 }
else { _nearest(1 , $val) }
};
my $val0 = $args{sodium};
my $val = $val0*$args{$size_key}/100;
my $valr = $code_round_sodium->($val);
my $pct_dv_R = $code_round_sodium_pct_dv->($val/325*100, $valr);
if ($output_format eq 'raw_table') {
push @rows, {
name_eng => 'Salt (Sodium)',
name_ind => 'Garam (Natrium)',
val_per_100g => $val0,
(val_per_srv => $val,
val_per_srv_R => $valr) x ($per_package_ing ? 0:1),
(val_per_pkg => $val,
val_per_pkg_R => $valr) x $per_package_ing,
pct_dv => $val/325*100,
pct_dv_R => $pct_dv_R,
};
} elsif ($output_format =~ /vertical/) {
push @rows, [{bottom_border=>1, colspan=>2, $attr=>$code_fmttext->("*Garam (Natrium)*")}, {align=>'right', $attr=>$code_fmttext->("*$valr mg*")}, {align=>'right', $attr=>"$pct_dv_R %"}, ''];
} elsif ($output_format =~ /linear/) {
push @rows, $code_fmttext->("*Garam (Natrium) $valr mg ($pct_dv_R% AKG)*. ");
}
}
if ($output_format eq 'raw_table') {
} elsif ($output_format =~ /vertical/) {
push @rows, [{colspan=>5, $attr=>$code_fmttext->("/*Persen AKG berdasarkan kebutuhan energi 2150 kkal. Kebutuhan energi Anda mungkin lebih tinggi atau lebih rendah./")}];
} elsif ($output_format =~ /linear/) {
push @rows, $code_fmttext->( "/Persen AKG berdasarkan kebutuhan energi 2150 kkal. Kebutuhan energi Anda mungkin lebih tinggi atau lebih rendah./");
}
OUTPUT:
if ($output_format eq 'raw_table') {
return [200, "OK", \@rows, {'table.fields'=>[qw/name_eng name_ind val_per_100g val_per_srv val_per_srv_R val_per_pkg val_per_pkg_R pct_dv pct_dv_R/]}];
}
my $text;
if ($output_format =~ /vertical/) {
if ($output_format =~ /html/) {
require Text::Table::HTML;
my $table = Text::Table::HTML::table(rows => \@rows, header_row=>0);
$table =~ s!<table>!<table><colgroup><col style="width:16pt;"><col style="width:200pt;"><col style="width:48pt;"><col style="width:48pt;"><col style="width:36pt;"></colgroup>!;
$text = "
<style>
table { border-collapse: collapse; border: 1px solid; }
tr.has_bottom_border { border-bottom: 1pt solid black; }
// td:first-child { background: red; }
</style>\n" . $table;
} else {
require Text::Table::More;
$text = Text::Table::More::generate_table(rows => \@rows, color=>1, header_row=>0);
}
} elsif ($output_format =~ /linear/) {
if ($output_format =~ /html/) {
$text = "
<style>
p { border-style: solid; }
</style>
<p>" . join("", @rows). "</p>\n";
} else {
$text = join("", @rows). "\n";
}
}
if ($output_format =~ /html/ && $args{browser}) {
require Browser::Open;
require File::Slurper;
require File::Temp;
my $tempdir = File::Temp::tempdir();
my $temppath = "$tempdir/ing.html";
File::Slurper::write_text($temppath, $text);
my $url = "file:$temppath";
my $err = Browser::Open::open_browser($url);
return [500, "Can't open browser"] if $err;
return [200];
}
return [200, "OK", $text, {'cmdline.skip_format'=>1}];
}
1;
# ABSTRACT: Utilities related to BPOM
__END__
=pod
=encoding UTF-8
=head1 NAME
( run in 0.755 second using v1.01-cache-2.11-cpan-f56aa216473 )