Data-Sah-Coerce

 view release on metacpan or  search on metacpan

lib/Data/Sah/Coerce/js/To_date/From_obj/date.pm  view on Meta::CPAN


    my $dt = $args{data_term};

    my $res = {};

    $res->{expr_match} = join(
        " && ",
        "($dt instanceof Date)",
    );

    $res->{expr_coerce} = "isNaN($dt) ? ['Invalid date', $dt] : [null, $dt]";

    $res;
}

1;
# ABSTRACT: Coerce date from Date object

__END__

=pod

lib/Data/Sah/Coerce/js/To_date/From_str/date_parse.pm  view on Meta::CPAN

    my $dt = $args{data_term};

    my $res = {};

    $res->{expr_match} = join(
        " && ",
        "typeof($dt)=='string'",
    );

    # note: (function(a,b,c){...})() is a trick to simulate lexical variables
    $res->{expr_coerce} = "(function (_m) { _m = new Date($dt); if (isNaN(_m)) { return ['Invalid date', _m] } else { return [null, _m] } })()";

    $res;
}

1;
# ABSTRACT: Coerce date from string using Date.parse()

__END__

=pod

lib/Data/Sah/Coerce/js/To_duration/From_float/seconds.pm  view on Meta::CPAN


    my $dt = $args{data_term};
    my $coerce_to = $args{coerce_to};

    my $res = {};

    $res->{expr_match} = join(
        " && ",
        "(typeof($dt)=='number' || typeof($dt)=='string' && $dt.match(/^[0-9]+(?:\\.[0-9]+)?\$/))",
        "parseFloat($dt) >= 0", # we don't allow negative duration
        "!isNaN(parseFloat($dt))",
        "isFinite(parseFloat($dt))", # we don't allow infinite duration
    );

    $res->{expr_coerce} = "parseFloat($dt)";

    $res;
}

1;
# ABSTRACT: Coerce duration from number (assumed to be number of seconds)



( run in 0.296 second using v1.01-cache-2.11-cpan-4d50c553e7e )