GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
Data::Sah::DefaultValue(3) User Contributed Perl Documentation Data::Sah::DefaultValue(3)

Data::Sah::DefaultValue - Default-value rules for Data::Sah

This document describes version 0.005 of Data::Sah::DefaultValue (from Perl distribution Data-Sah-DefaultValue), released on 2024-01-17.

 use Data::Sah::DefaultValue  qw(gen_default_value_code);
 # a utility routine: gen_default_value_code
 my $dv = gen_default_value_code(
     default_value_rules => ['Perl::this_mod'],
 );
 my $val = $c->(123);          # unchanged, 123
 my $val = $c->(undef);        # becomes "Some::Module"

This module generates code to set default value using value rules.

A value rule is put in "Data::Sah::Value::$COMPILER::$TOPIC::$DESCRIPTION" module, for example: Data::Sah::Value::perl::Perl::this_mod contains the value "this module" (see App::ThisDist for more details on the meaning of "this module").

Basically, a value rule will provide an expression ("expr_value") that return some value.

The module must contain "meta" subroutine which must return a hashref that has the following keys ("*" marks that the key is required):

  • v* => int (default: 1)

    Metadata specification version. From DefHash. Currently at 4.

  • summary => str

    From DefHash.

The module must also contain "value" subroutine which must generate the code for default value. The subroutine must accept a hash of arguments ("*" indicates required arguments):

The "value" subroutine must return a hashref with the following keys ("*" indicates required keys):

  • expr_value => str

    Expression in the target language that produces the value.

  • modules => hash

    A list of modules required by the expressions.

If set to true, will log the generated default-value code (currently using Log::ger at trace level). To see the log message, e.g. to the screen, you can use something like:

 % TRACE=1 perl -MLog::ger::LevelFromEnv -MLog::ger::Output=Screen \
     -MData::Sah::DefaultValue=gen_default_value_code -E'my $c = gen_default_value_code(...)'

Usage:

 gen_default_value_code(%args) -> any

Generate code to set default value.

This is mostly for testing. Normally the default value rules will be used from Data::Sah via the "x.perl.default_value_rules" or "x.js.default_value_rules" or "x.default_value_rules" property.

This function is not exported by default, but exportable.

Arguments ('*' denotes required arguments):

  • default_value_rules => array[str]

    A specification of default-value rules to use (or avoid).

    This setting is used to specify which default-value rules to use (or avoid) in a flexible way. Each element is a string, in the form of either "NAME" to mean specifically include a rule, or "!NAME" to exclude a rule.

    To use the default-value rules R1 and R2:

     ['R1', 'R2']
        
  • source => bool

    If set to true, will return coercer source code string instead of compiled code.

Return value: (any)

Set default for $Log_Default_Value_Code.

Please visit the project's homepage at <https://metacpan.org/release/Data-Sah-DefaultValue>.

Source repository is at <https://github.com/perlancar/perl-Data-Sah-DefaultValue>.

Data::Sah::DefaultValueCommon for detailed syntax of default-value rules (explicitly including/excluding rules etc).

Data::Sah

Data::Sah::DefaultValueJS

App::SahUtils

2021-11-28: Created modelled from Data::Sah::Coerce and Data::Sah::Filter to be able to express dynamic default value into schema.

perlancar <perlancar@cpan.org>

To contribute, you can send patches by email/via RT, or send pull requests on GitHub.

Most of the time, you don't need to build the distribution yourself. You can simply modify the code, then test via:

 % prove -l

If you want to build the distribution (e.g. to try to install it locally on your system), you can install Dist::Zilla, Dist::Zilla::PluginBundle::Author::PERLANCAR, Pod::Weaver::PluginBundle::Author::PERLANCAR, and sometimes one or two other Dist::Zilla- and/or Pod::Weaver plugins. Any additional steps required beyond that are considered a bug and can be reported to me.

This software is copyright (c) 2024, 2023, 2021 by perlancar <perlancar@cpan.org>.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.

Please report any bugs or feature requests on the bugtracker website <https://rt.cpan.org/Public/Dist/Display.html?Name=Data-Sah-DefaultValue>

When submitting a bug or request, please include a test-file or a patch to an existing test-file that illustrates the bug or desired feature.

2024-01-17 perl v5.40.2

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.