#!/usr/bin/perl
#
# This file is ungoverned by the CypherpunksAntiLicense.
# Do with it as you will.
# Create a list of orphan WikiName's in an EmacsWiki directory.
# Put list in wiki page named OrphanWikiNames.
my($wikidir)="$ENV{'HOME'}/Wiki";
opendir(DIR, $wikidir);
my(@wikifiles)=readdir(DIR);
my(@wikinames)=();
foreach (@wikifiles)
{
if ($_ !~ /(^\.)|(\~$)/) # Exclude hidden files and emacs backup files.
{
open(FILE,"<$wikidir/$_");
my(@contents)=<FILE>;
$content=join('',@contents); # Create one string representing an entire file.
while ($content =~ /[A-Z][a-z]+([A-Z][a-z]+)+/) # Scan file content for first WikiName.
{
push @wikinames, $&;
$content=$';
}
}
}
# Print set difference wikinames 'minus' wikifiles.
@wikinames=sort @wikinames;
@wikifiles=sort @wikifiles;
open(OUTFILE,">$wikidir/OrphanWikiNames");
while (@wikinames != ()) {
shift @wikinames while ($wikinames[0] eq $wikinames[1]);
print OUTFILE "$wikinames[0]\n" if (@wikifiles==());
shift @wikifiles while (@wikifiles != () && $wikinames[0] gt $wikifiles[0]);
print OUTFILE "$wikinames[0]\n" if (@wikifiles == () || $wikinames[0] lt $wikifiles[0]);
shift @wikinames;
}
#