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::CoerceJS(3) User Contributed Perl Documentation Data::Sah::CoerceJS(3)

Data::Sah::CoerceJS - Generate coercer code

This document describes version 0.054 of Data::Sah::CoerceJS (from Perl distribution Data-Sah-Coerce), released on 2023-10-24.

 use Data::Sah::CoerceJS qw(gen_coercer);
 # use as you would use Data::Sah::Coerce

This module is just like Data::Sah::Coerce except that it uses JavaScript coercion rule modules.

If set to true, will log the generated coercer 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::CoerceJS=gen_coercer -E'my $c = gen_coercer(...)'

Usage:

 gen_coercer(%args) -> any

Generate coercer code.

This is mostly for testing. Normally the coercion rules will be used from Data::Sah.

This function is not exported by default, but exportable.

Arguments ('*' denotes required arguments):

  • coerce_rules => array[str]

    A specification of coercion rules to use (or avoid).

    This setting is used to specify which coercion 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.

    Some coercion modules are used by default, unless explicitly avoided using the '!NAME' rule.

    To not use any rules:

    To use the default rules plus R1 and R2:

     ['R1', 'R2']
        

    To use the default rules but not R1 and R2:

     ['!R1', '!R2']
        
  • coerce_to => str

    Some Sah types, like "date", can be represented in a choice of types in the target language. For example, in Perl you can store it as a floating number a.k.a. float(epoch), or as a DateTime object, or Time::Moment object. Storing in DateTime can be convenient for date manipulation but requires an overhead of loading the module and storing in a bulky format. The choice is yours to make, via this setting.

  • engine => str (default: "quickjs")

    (No description)

  • return_type => str (default: "val")

    "val" means the coercer will return the input (possibly) coerced or undef if coercion fails.

    "bool_coerced+val" means the coercer will return a 2-element array. The first element is a bool value set to 1 if coercion has been performed or 0 if otherwise. The second element is the (possibly) coerced input.

    "bool_coerced+str_errmsg+val" means the coercer will return a 3-element array. The first element is a bool value set to 1 if coercion has been performed or 0 if otherwise. The second element is the error message string which will be set if there is a failure in coercion (or undef if coercion is successful). The third element is the (possibly) coerced input.

  • source => bool

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

  • type* => sah::type_name

    (No description)

Return value: (any)

Set default for $Log_Coercer_Code.

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

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

Data::Sah::Coerce

App::SahUtils, including coerce-with-sah to conveniently test coercion from the command-line.

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) 2023, 2022, 2021, 2020, 2019, 2018, 2017, 2016 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-Coerce>

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.

2023-10-24 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.