Skip to content

@azatoth /idr2ldf.pl secret
Created

Embed URL

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Script to convert inline defined references in wikitext to list defined references, are pretty brute force and might not work on all pages :)
#!/usr/bin/perl
use v5.10;
use File::Slurp;
use List::Util qw(max);
use strict;
my $data = read_file($ARGV[0]);
my $c=0;
my %l;
if( my @names = ($data =~ m/ref-(\d+)/g) ) {
$c = max(@names);
}
my ($body,$tail)=split/(?:==References==)/i, $data;
sub unnamed_ref {
my $ref=shift;
my $n="ref-".(++$c);
$l{$n}="<ref name=\"$n\">$ref</ref>";
"<ref name=\"$n\"/>";
}
sub named_ref{
my $ref=shift;
my $n=shift;$l{$n}="<ref name=\"$n\">$ref</ref>";
"<ref name=\"$n\"/>";
}
sub reflist{
my $p=shift;
"{{$p\|refs=\n".join("\n",values%l);
}
sub references{
"<references>\n".join("\n",values%l)."</references>";
}
$body=~s{<ref name="(\S*?)">(.*?)</ref>}{named_ref($2, $1)}sge;
$body=~s{<ref>(.*?)</ref>}{unnamed_ref($1)}sge;
$tail=~s<{{(Reflist.*?)\|refs=><reflist($1)>sge;
$tail=~s<{{(Reflist\|\d+em)}}><reflist($1)."}}">sge;
$tail=~s{(<references\s*/>)}{references()}sge;
print $body.$tail;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.