Data-Sah
view release on metacpan or search on metacpan
lib/Data/Sah/Compiler/human/TH/float.pm view on Meta::CPAN
package Data::Sah::Compiler::human::TH::float;
use 5.010;
use strict;
use warnings;
#use Log::Any '$log';
use Mo qw(build default);
use Role::Tiny::With;
extends 'Data::Sah::Compiler::human::TH';
with 'Data::Sah::Compiler::human::TH::Comparable';
with 'Data::Sah::Compiler::human::TH::Sortable';
with 'Data::Sah::Type::float';
our $AUTHORITY = 'cpan:PERLANCAR'; # AUTHORITY
our $DATE = '2024-02-16'; # DATE
our $DIST = 'Data-Sah'; # DIST
our $VERSION = '0.917'; # VERSION
sub name { "decimal number" }
sub handle_type {
my ($self, $cd) = @_;
my $c = $self->compiler;
$c->add_ccl($cd, {
type=>'noun',
fmt => ["decimal number", "decimal numbers"],
});
}
sub clause_is_nan {
my ($self, $cd) = @_;
my $c = $self->compiler;
my $cv = $cd->{cl_value};
if ($cd->{cl_is_expr}) {
$c->add_ccl($cd, {});
} else {
$c->add_ccl($cd, {
fmt => $cv ?
q[%(modal_verb)s be a NaN] :
q[%(modal_verb_neg)s be a NaN],
});
}
}
sub clause_is_inf {
my ($self, $cd) = @_;
my $c = $self->compiler;
my $cv = $cd->{cl_value};
if ($cd->{cl_is_expr}) {
$c->add_ccl($cd, {});
} else {
$c->add_ccl($cd, {
fmt => $cv ?
q[%(modal_verb)s an infinity] :
q[%(modal_verb_neg)s an infinity],
});
}
}
sub clause_is_pos_inf {
my ($self, $cd) = @_;
my $c = $self->compiler;
my $cv = $cd->{cl_value};
if ($cd->{cl_is_expr}) {
$c->add_ccl($cd, {});
} else {
$c->add_ccl($cd, {
fmt => $cv ?
q[%(modal_verb)s a positive infinity] :
q[%(modal_verb_neg)s a positive infinity],
});
}
}
sub clause_is_neg_inf {
my ($self, $cd) = @_;
my $c = $self->compiler;
my $cv = $cd->{cl_value};
if ($cd->{cl_is_expr}) {
$c->add_ccl($cd, {});
} else {
$c->add_ccl($cd, {
fmt => $cv ?
q[%(modal_verb)s a negative infinity] :
q[%(modal_verb_neg)s a negative infinity],
});
}
}
1;
# ABSTRACT: human's type handler for type "num"
__END__
=pod
=encoding UTF-8
( run in 0.546 second using v1.01-cache-2.11-cpan-39bf76dae61 )