52 lines
1.1 KiB
Perl
52 lines
1.1 KiB
Perl
package entry;
|
|
|
|
use warnings;
|
|
use strict;
|
|
|
|
sub from_valid($$) {
|
|
my ( $params, $attrs ) = @_;
|
|
return { map { defined $params->{$_} ? { $_ => $params->{$_} } : () } @$attrs };
|
|
}
|
|
|
|
sub set_numbers($$$) {
|
|
my ( $entry, $params, $fields ) = @_;
|
|
for my $field (@$fields) {
|
|
my $value = $params->{$field};
|
|
next unless defined $value;
|
|
if ( $value =~ /([\-\d]+)/ ){
|
|
$entry->{$field} = $1;
|
|
}
|
|
}
|
|
}
|
|
|
|
sub set_bools($$$) {
|
|
my ( $entry, $params, $fields ) = @_;
|
|
for my $field (@$fields) {
|
|
my $value = $params->{$field};
|
|
next unless defined $value;
|
|
if ($value=~/([01])/){
|
|
$entry->{$field} = $1;
|
|
}
|
|
}
|
|
}
|
|
|
|
sub set_strings($$$) {
|
|
my ( $entry, $params, $attrs ) = @_;
|
|
for my $field (@$attrs) {
|
|
my $value = $params->{$field};
|
|
next unless defined $value;
|
|
$entry->{$field} = $value;
|
|
$entry->{$field} =~ s/^\s+//g;
|
|
$entry->{$field} =~ s/\s+$//g;
|
|
}
|
|
}
|
|
|
|
sub element_of($$) {
|
|
my ( $value, $attrs ) = @_;
|
|
return unless $value;
|
|
return { map { $_ => $_ } @$attrs }->{$value} //'';
|
|
}
|
|
|
|
# do not delete last line
|
|
1;
|