App-BPOMUtils-NutritionFacts

 view release on metacpan or  search on metacpan

lib/App/BPOMUtils/NutritionFacts.pm  view on Meta::CPAN

            summary => "$args{$key}{summary} (value to be used in nutrition facts table instead the lab test result)",
            schema => $args{$key}{schema},
        };
        $res{"${key}_nufact_note"} = {
            schema => "str*",
        };
    }
    %res;
}

$SPEC{bpom_show_nutrition_facts} = {
    v => 1.1,
    summary => 'Render BPOM-compliant nutrition fact table (ING - informasi nilai gizi) in various formats',
    args => {
        name => {schema=>'str*'},

        output_format => {
            summary => 'Pick an output format for the nutrition fact',
            schema => ['str*', {in=>\@output_formats}],
            description => <<'_',

`vertical_text_table` is the default. The /(vertical)?.*table/ formats presents
the information in a table, while the /linear/ formats presents the information
in a paragraph.

_
            default => 'vertical_text_table',
            cmdline_aliases => {
                f=>{},
            },
            tags => ['category:output'],
        },

        browser => {
            summary => 'View output HTML in browser instead of returning it',
            schema => 'true*',
            tags => ['category:output'],
        },

        color => {
            schema => ['str*', in=>[qw/always auto never/]],
            default => 'auto',
            tags => ['category:output'],
        },

        _add_real_and_nufact_args(
        fat           => {summary => 'Total fat, in g/100g'           , schema => 'ufloat*', req=>1},
        saturated_fat => {summary => 'Saturated fat, in g/100g'       , schema => 'ufloat*', req=>1},
        cholesterol   => {summary => 'Cholesterol, in mg/100g'        , schema => 'ufloat*'},
        protein       => {summary => 'Protein, in g/100g'             , schema => 'ufloat*', req=>1},
        carbohydrate  => {summary => 'Total carbohydrate, in g/100g'  , schema => 'ufloat*', req=>1},
        sugar         => {summary => 'Total sugar, in g/100g'         , schema => 'ufloat*', req=>1},
        sodium        => {summary => 'Sodium, in mg/100g'             , schema => 'ufloat*', req=>1, cmdline_aliases=>{salt=>{}}},
        va            => {summary => 'Vitamin A, in mcg/100g (all-trans-)retinol', schema => 'ufloat*'},
        vd            => {summary => 'Vitamin D, in mcg', schema => 'ufloat*'},
        ve            => {summary => 'Vitamin E, in mg alpha-TE (tocopherol-equivalent)', schema => 'ufloat*'},
        vk            => {summary => 'Vitamin K, in mcg', schema => 'ufloat*'},
        vb1           => {summary => 'Vitamin B1, in mg/100g', schema => 'ufloat*'},
        vb2           => {summary => 'Vitamin B2, in mg/100g', schema => 'ufloat*'},
        vb3           => {summary => 'Vitamin B3, in mg/100g', schema => 'ufloat*'},
        vb5           => {summary => 'Vitamin B5 (pantothenic acid), in mg/100g', schema => 'ufloat*'},
        vb6           => {summary => 'Vitamin B6, in mg/100g', schema => 'ufloat*'},
        folate        => {summary => 'Folate (vitamin B9), in mcg/100g', schema => 'ufloat*'},
        vb12          => {summary => 'Vitamin B12, in mcg/100g', schema => 'ufloat*'},
        biotin        => {summary => 'Biotin, in mcg/100g', schema => 'ufloat*'},
        choline       => {summary => 'Choline, in mg/100g', schema => 'ufloat*'},
        vc            => {summary => 'Vitamin C, in mg/100g', schema => 'ufloat*'},
        ca            => {summary => 'Calcium, in mg/100g', schema => 'ufloat*'},
        phosphorus    => {summary => 'Phosphorus, in mg/100g', schema => 'ufloat*'},
        mg            => {summary => 'Magnesium, in mg/100g', schema => 'ufloat*'},
        k             => {summary => 'Potassium, in mg/100g', schema => 'ufloat*'},
        mn            => {summary => 'Manganese, in mcg/100g', schema => 'ufloat*'},
        cu            => {summary => 'Copper, in mcg/100g', schema => 'ufloat*'},
        cr            => {summary => 'Chromium, in mcg/100g', schema => 'ufloat*'},
        fe            => {summary => 'Iron, in mg/100g', schema => 'ufloat*'},
        iodium        => {summary => 'Iodium, in mcg/100g', schema => 'ufloat*'},
        zn            => {summary => 'Zinc, in mg/100g', schema => 'ufloat*'},
        se            => {summary => 'Selenium, in mcg/100g', schema => 'ufloat*'},
        fluorine      => {summary => 'Fluorine, in mg/100g', schema => 'ufloat*'},
        ),

        serving_size  => {summary => 'Serving size, in g'             , schema => 'ufloat*', req=>1},
        package_size  => {summary => 'Packaging size, in g'           , schema => 'ufloat*', req=>1},

        has_claims    => {summary => 'Whether food is registered as having claims', schema=>'bool*'},
    },

    examples => [
        {
            summary => 'An example, in linear text format (color/emphasis is shown with markup)',
            args => {fat=>0.223, saturated_fat=>0.010, protein=>0.990, carbohydrate=>13.113, sugar=>7.173, sodium=>0.223, serving_size=>175, package_size=>20, output_format=>"raw_linear", color=>"never"},
            test => 0,
        },
        {
            summary => 'An example, in raw_linear format (just like linear_text but with no border)',
            args => {fat=>0.223, saturated_fat=>0.010, protein=>0.990, carbohydrate=>13.113, sugar=>7.173, sodium=>0.223, serving_size=>175, package_size=>20, output_format=>"linear_text", color=>"never"},
            test => 0,
        },
        {
            summary => 'The same example in vertical HTML table format',
            args => {fat=>0.223, saturated_fat=>0.010, protein=>0.990, carbohydrate=>13.113, sugar=>7.173, sodium=>0.223, serving_size=>175, package_size=>20, output_format=>"vertical_html_table"},
            test => 0,
        },
        {
            summary => 'The same example, in vertical text format (color/emphasis is shown with markup)',
            args => {fat=>0.223, saturated_fat=>0.010, protein=>0.990, carbohydrate=>13.113, sugar=>7.173, sodium=>0.223, serving_size=>175, package_size=>20, output_format=>"vertical_text_table", color=>"never"},
            test => 0,
        },
        {
            summary => 'The same example, in calculation text format',
            args => {fat=>0.223, saturated_fat=>0.010, protein=>0.990, carbohydrate=>13.113, sugar=>7.173, sodium=>0.223, serving_size=>175, package_size=>20, output_format=>"calculation_text", color=>"never"},
            test => 0,
        },
    ],
};
sub bpom_show_nutrition_facts {
    my %args = @_;
    my $output_format = $args{output_format} // 'raw_table';
    return [400, "Unknown output format '$output_format'"] unless grep { $output_format eq $_ } @output_formats;

    my $color = $args{color} // 'auto';

lib/App/BPOMUtils/NutritionFacts.pm  view on Meta::CPAN

Vitamin A, in mcgE<sol>100g (all-trans-)retinol.

=item * B<va_nufact> => I<ufloat>

Vitamin A, in mcgE<sol>100g (all-trans-)retinol (value to be used in nutrition facts table instead the lab test result).

=item * B<va_nufact_note> => I<str>

(No description)

=item * B<vb1> => I<ufloat>

Vitamin B1, in mgE<sol>100g.

=item * B<vb12> => I<ufloat>

Vitamin B12, in mcgE<sol>100g.

=item * B<vb12_nufact> => I<ufloat>

Vitamin B12, in mcgE<sol>100g (value to be used in nutrition facts table instead the lab test result).

=item * B<vb12_nufact_note> => I<str>

(No description)

=item * B<vb1_nufact> => I<ufloat>

Vitamin B1, in mgE<sol>100g (value to be used in nutrition facts table instead the lab test result).

=item * B<vb1_nufact_note> => I<str>

(No description)

=item * B<vb2> => I<ufloat>

Vitamin B2, in mgE<sol>100g.

=item * B<vb2_nufact> => I<ufloat>

Vitamin B2, in mgE<sol>100g (value to be used in nutrition facts table instead the lab test result).

=item * B<vb2_nufact_note> => I<str>

(No description)

=item * B<vb3> => I<ufloat>

Vitamin B3, in mgE<sol>100g.

=item * B<vb3_nufact> => I<ufloat>

Vitamin B3, in mgE<sol>100g (value to be used in nutrition facts table instead the lab test result).

=item * B<vb3_nufact_note> => I<str>

(No description)

=item * B<vb5> => I<ufloat>

Vitamin B5 (pantothenic acid), in mgE<sol>100g.

=item * B<vb5_nufact> => I<ufloat>

Vitamin B5 (pantothenic acid), in mgE<sol>100g (value to be used in nutrition facts table instead the lab test result).

=item * B<vb5_nufact_note> => I<str>

(No description)

=item * B<vb6> => I<ufloat>

Vitamin B6, in mgE<sol>100g.

=item * B<vb6_nufact> => I<ufloat>

Vitamin B6, in mgE<sol>100g (value to be used in nutrition facts table instead the lab test result).

=item * B<vb6_nufact_note> => I<str>

(No description)

=item * B<vc> => I<ufloat>

Vitamin C, in mgE<sol>100g.

=item * B<vc_nufact> => I<ufloat>

Vitamin C, in mgE<sol>100g (value to be used in nutrition facts table instead the lab test result).

=item * B<vc_nufact_note> => I<str>

(No description)

=item * B<vd> => I<ufloat>

Vitamin D, in mcg.

=item * B<vd_nufact> => I<ufloat>

Vitamin D, in mcg (value to be used in nutrition facts table instead the lab test result).

=item * B<vd_nufact_note> => I<str>

(No description)

=item * B<ve> => I<ufloat>

Vitamin E, in mg alpha-TE (tocopherol-equivalent).

=item * B<ve_nufact> => I<ufloat>

Vitamin E, in mg alpha-TE (tocopherol-equivalent) (value to be used in nutrition facts table instead the lab test result).

=item * B<ve_nufact_note> => I<str>

(No description)

=item * B<vk> => I<ufloat>

Vitamin K, in mcg.

=item * B<vk_nufact> => I<ufloat>

Vitamin K, in mcg (value to be used in nutrition facts table instead the lab test result).



( run in 1.025 second using v1.01-cache-2.11-cpan-0bb4e1dffa6 )