MARC-Convert-Wikidata

 view release on metacpan or  search on metacpan

Wikidata/Transform.pm  view on Meta::CPAN

		if (defined $type_key) {
			push @type_keys, $type_key;
		}
	}
	if (! @type_keys) {
		return;
	}

	my $full_name = $field->subfield('a');
	# TODO Only if type 1. Fix for type 0 and 2.
	my ($surname, $name) = split m/,\s*/ms, $full_name;

	my $nkcr_aut = $field->subfield('7');

	my $dates = $field->subfield('d');
	my ($date_of_birth, $date_of_death, $work_period_start, $work_period_end);
	if (defined $dates) {
		my $active_re = decode_utf8('činný');
		if ($dates =~ m/^$active_re\s*(.*)/ms) {
			my ($start_date, $end_date) = split m/-/ms, $1;
			$work_period_start = clean_date($start_date);
			$work_period_end = clean_date($end_date);
		} else {
			my ($start_date, $end_date) = split m/-/ms, $dates;
			$date_of_birth = clean_date($start_date);
			$date_of_death = clean_date($end_date);
		}
	}

	foreach my $type_key (@type_keys) {
		push @{$self->{'_people'}->{$type_key}},
			MARC::Convert::Wikidata::Object::People->new(
				'date_of_birth' => $date_of_birth,
				'date_of_death' => $date_of_death,

Wikidata/Utils.pm  view on Meta::CPAN

	# Remove text informations.
	my $pril = decode_utf8('příl');
	my $neci = decode_utf8('nečíslovaných');
	$ret_number_of_pages =~ s/\s*(stran|s|$pril|$neci|l|barev|obr)\.*\s*//msg;

	# Remove other characters like ':' and ';'.
	$ret_number_of_pages =~ s/[:;]//msg;

	# TODO Support roman numbers.
	if ($ret_number_of_pages =~ m/^[\ \d,]+$/ms) {
		my @numbers = split m/\s*,\s*/ms, $ret_number_of_pages;
		$ret_number_of_pages = sum(@numbers);
	}

	if ($ret_number_of_pages !~ m/^\d+$/ms) {
		if ($DEBUG) {
			warn "Number of pages '$number_of_pages' couldn't clean.";
		}
		$ret_number_of_pages = undef;
	}



( run in 1.594 second using v1.01-cache-2.11-cpan-71847e10f99 )