package EPrints::RIOXX2::Utils;
use HTML::Parser;
use strict;
sub is_valid_funder_name
{
	my( $value, $funder_lookup) = @_;
	my $funder = lc($value);
	my @lookup_names = keys %$funder_lookup;
	if ( scalar @lookup_names )
	{
		my $name_found = grep { index( $_, $funder ) != -1 } @lookup_names;
		return $name_found;
	}
	return 0;
}
sub is_valid_funder_id
{
	my( $value, $name, $funder_lookup ) = @_;
	my $funder = lc($name);
	return 1 unless $funder_lookup->{$funder};
	return $value eq $funder_lookup->{$funder};
}
sub get_funder_lookup
{
	my( $repo ) = @_;
	my $funder_lookup = {};
	my $filepath = $repo->config( "fundref_csv_file" );
	if ( open( DATA, '<', $filepath ) )
	{
		while(  )
		{
			my( $uri, $name ) = split( /,/, $_, 2 );
			$name =~ /^"(.+)"/;
			next unless $1;
			$name = lc $1;
			$funder_lookup->{$name} = $uri;
		}
		close DATA;
	}
	return $funder_lookup;
}
sub is_http_uri
{
	my( $value ) = @_;
	my @v = ref( $value ) eq "ARRAY" ? @$value : ( $value );
	for( @v )
	{
		return 0 unless /^http:/i;
	}
	return 1;
}
sub is_iso_8601_date
{
	my( $value ) = @_;
	return $value =~ /^\d{4}-\d{2}-\d{2}$/;
}
sub contains_markup
{
	my( $value ) = @_;
	my $start_events = [];
	my $p = HTML::Parser->new(api_version => 3, );
	$p->handler( start => $start_events, '"S", attr, attrseq, text' );
	$p->parse( $value );
	return scalar @$start_events;
}
1;