Net-Z3950-FOLIO

 view release on metacpan or  search on metacpan

lib/Net/Z3950/FOLIO/Config.pm  view on Meta::CPAN



sub _compileConfig {
    my($cfgbase, @extras) = @_;

    my $cfg = _compileConfigFile($cfgbase, undef, MISSING_ERROR);

    my $isFirst = 1;
    while (@extras) {
	my $extra = shift @extras;
	my $overlay = _compileConfigFile($cfgbase, $extra, $isFirst ? MISSING_TENANT : MISSING_FILTER);
	$isFirst = 0;
	_mergeConfig($cfg, $overlay);
    }

    my $gqlfile = $cfg->{graphqlQuery}
        or die "$0: no GraphQL query file defined";

    my $path = $cfgbase;
    if ($path =~ /\//) {
	$path =~ s/(.*)?\/.*/$1/;
	$gqlfile = "$path/$gqlfile";
    }

lib/Net/Z3950/FOLIO/Config.pm  view on Meta::CPAN

	    $env = '';
	}
	$val = "$pre$env$post";
    }

    return $val;
}


sub _mergeConfig {
    my($base, $overlay) = @_;

    my %complex_keys = (
	okapi => 1,
	login => 1,
	indexMap => 1,
	marcHoldings => 1,
	fieldDefinitions => {
	    holding => 1,
	    circulation => 1,
	},
    );

    foreach my $key (keys (%complex_keys)) {
	if (defined $overlay->{$key}) {
	    if (ref $base->{$key} eq 'HASH') {
		_mergeHash($base->{$key}, $overlay->{$key}, $complex_keys{$key});
	    } else {
		$base->{$key} = $overlay->{$key};
	    }
	}
    }

    foreach my $key (sort keys %$overlay) {
	if (!$complex_keys{$key}) {
	    $base->{$key} = $overlay->{$key};
	}
    }
}


sub _mergeHash {
    my($base, $overlay, $keysOfsubStructures) = @_;

    foreach my $key (sort keys %$overlay) {
	if (ref $keysOfsubStructures eq 'HASH' && $keysOfsubStructures->{$key}) {
	    _mergeHash($base->{$key}, $overlay->{$key}, $keysOfsubStructures->{$key});
	} else {
	    $base->{$key} = $overlay->{$key};
	}
    }
}

=encoding utf-8

=head1 NAME

Net::Z3950::FOLIO::Config - configuration file for the FOLIO Z39.50 gateway



( run in 0.229 second using v1.01-cache-2.11-cpan-26ccb49234f )