version 1.173, 2001/11/20 17:58:05
|
version 1.177, 2001/11/22 20:09:22
|
Line 35
|
Line 35
|
# 8/4,8/7,8/8,8/9,8/11,8/16,8/17,8/18,8/20,8/23,9/20,9/21,9/26, |
# 8/4,8/7,8/8,8/9,8/11,8/16,8/17,8/18,8/20,8/23,9/20,9/21,9/26, |
# 10/2 Gerd Kortemeyer |
# 10/2 Gerd Kortemeyer |
# 10/5,10/10,11/13,11/15 Scott Harrison |
# 10/5,10/10,11/13,11/15 Scott Harrison |
# 11/17 Gerd Kortemeyer |
# 11/17,11/20,11/22 Gerd Kortemeyer |
# |
# |
# $Id$ |
# $Id$ |
# |
# |
Line 2232 sub EXT {
|
Line 2232 sub EXT {
|
# ---------------------------------------------------------------- Get metadata |
# ---------------------------------------------------------------- Get metadata |
|
|
sub metadata { |
sub metadata { |
my ($uri,$what,$liburi,$prefix)=@_; |
my ($uri,$what,$liburi,$prefix,$depthcount)=@_; |
|
|
$uri=&declutter($uri); |
$uri=&declutter($uri); |
my $filename=$uri; |
my $filename=$uri; |
$uri=~s/\.meta$//; |
$uri=~s/\.meta$//; |
# |
# |
# Is the metadata already cached? |
# Is the metadata already cached? |
# If "keys" are set, the assumption is that everything is already cached. |
# Look at timestamp of caching |
# Everything is cached by the main uri, libraries are never directly cached |
# Everything is cached by the main uri, libraries are never directly cached |
# |
# |
unless ($metacache{$uri.':keys'}) { |
unless (abs($metacache{$uri.':cachedtimestamp'}-time)<600) { |
# |
# |
# Is this a recursive call for a library? |
# Is this a recursive call for a library? |
# |
# |
Line 2301 sub metadata {
|
Line 2301 sub metadata {
|
# |
# |
# This is not a package - some other kind of start tag |
# This is not a package - some other kind of start tag |
# |
# |
my $entry=$token->[1]; |
my $entry=$token->[1]; |
if ($entry eq 'import') { |
my $unikey; |
# |
if ($entry eq 'import') { |
# Importing a library here |
$unikey=''; |
# |
} else { |
my $libid=$token->[2]->{'id'}; |
$unikey=$entry; |
|
} |
|
|
} else { |
|
my $unikey=$entry; |
|
if ($prefix) { |
if ($prefix) { |
$unikey.='_'.$prefix; |
$unikey.=$prefix; |
} else { |
} else { |
if (defined($token->[2]->{'part'})) { |
if (defined($token->[2]->{'part'})) { |
$unikey.='_'.$token->[2]->{'part'}; |
$unikey.='_'.$token->[2]->{'part'}; |
Line 2321 sub metadata {
|
Line 2318 sub metadata {
|
if (defined($token->[2]->{'id'})) { |
if (defined($token->[2]->{'id'})) { |
$unikey.='_'.$token->[2]->{'id'}; |
$unikey.='_'.$token->[2]->{'id'}; |
} |
} |
|
|
|
if ($entry eq 'import') { |
|
# |
|
# Importing a library here |
|
# |
|
if (defined($depthcount)) { $depthcount++; } else |
|
{ $depthcount=0; } |
|
if ($depthcount<20) { |
|
map { |
|
$metathesekeys{$_}=1; |
|
} split(/\,/,&metadata($uri,'keys', |
|
$parser->get_text('/import'),$unikey, |
|
$depthcount)); |
|
} |
|
} else { |
|
|
if (defined($token->[2]->{'name'})) { |
if (defined($token->[2]->{'name'})) { |
$unikey.='_'.$token->[2]->{'name'}; |
$unikey.='_'.$token->[2]->{'name'}; |
} |
} |
Line 2334 sub metadata {
|
Line 2347 sub metadata {
|
$metacache{$uri.':'.$unikey.'.default'}; |
$metacache{$uri.':'.$unikey.'.default'}; |
} |
} |
# end of not-a-package not-a-library import |
# end of not-a-package not-a-library import |
} |
} |
# end of not-a-package start tag |
# end of not-a-package start tag |
} |
} |
# the next is the end of "start tag" |
# the next is the end of "start tag" |
} |
} |
} |
} |
$metacache{$uri.':keys'}=join(',',keys %metathesekeys); |
$metacache{$uri.':keys'}=join(',',keys %metathesekeys); |
|
$metacache{$uri.':cachedtimestamp'}=time; |
|
# this is the end of "was not already recently cached |
} |
} |
return $metacache{$uri.':'.$what}; |
return $metacache{$uri.':'.$what}; |
} |
} |