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;