Z Wikipedii
[edytuj] Dane wejściowe
rodzic:: - jest to osoba będąca na środku drzewa oraz jej małżonkowie
przodek:: - jest to osoba będąca przodkiem postaci na środku drzewa, kolejność podawania: od lewej do prawej, z góry na dół
dziecko:: - jest to potomek osoby na środku drzewa
- Pola dodatkowe (opcjonalne):
ur:: - data urodzenia
zm:: - data śmierci
przypis - przypis dla danej postaci (treść przypisu)
- Pola specjalne (opcjonalne):
data:: - data zawarcia związku małżeńskiego pomiędzy osobą na środku, a danym małżonkiem
nr:: - numer małżeństwa, z którego pochodzi dziecko (małżeństwa liczone są od 1, wg. kolejności wypisywania rodziców)
[edytuj] Kod skryptu
$h = 1;
@raz = (3,1,0,2,4);
@dwa = (1,2,0,3,4);
while ($_ = <>)
{
if(/\s*rodzic::\s*(.*)\s*::/i) {$kto="rodzic"; push @rodzic, $1}
if(/\s*dziecko::\s*(.*)\s*::/i) {$kto="dziecko"; push @dziecko, $1}
if(/\s*przodek::\s*(.*)\s*::/i) {$kto="przodek"; push @przodek, $1}
push @biblio, $1 if /\s*biblio::\s*(.*)\s*::/i;
if ($kto eq "rodzic")
{
$rodzic_ur[@rodzic-1] = $1 if /\s*ur::\s*(.*)\s*::/i;
$rodzic_zm[@rodzic-1] = $1 if /\s*zm::\s*(.*)\s*::/i;
$rodzic_dt[@rodzic-1] = $1 if /\s*data::\s*(.*)\s*::/i;
$rodzic_pp[@rodzic-1] = $1 if /\s*przypis::\s*(.*)\s*::/i;
}
if ($kto eq "dziecko")
{
$dziecko_ur[@dziecko-1] = $1 if /\s*ur::\s*(.*)\s*::/i;
$dziecko_zm[@dziecko-1] = $1 if /\s*zm::\s*(.*)\s*::/i;
$dziecko_nr[@dziecko-1] = $1 if /\s*nr::\s*(.*)\s*::/i;
$dziecko_pp[@dziecko-1] = $1 if /\s*przypis::\s*(.*)\s*::/i;
}
if ($kto eq "przodek")
{
$przodek_ur[@przodek-1] = $1 if /\s*ur::\s*(.*)\s*::/i;
$przodek_zm[@przodek-1] = $1 if /\s*zm::\s*(.*)\s*::/i;
$przodek_pp[@przodek-1] = $1 if /\s*przypis::\s*(.*)\s*::/i;
}
}
$tabelka = "<!-- to drzewo genealogiczne zostało wygenerowane skryptem , jeżeli potrzebujesz podobne, skontaktuj się z wikipedystą WarX lub Wiktoryn-->";
if (@przodek)
{
$tabelka .= "<!-- Przodkowie -->";
$tabelka .= "\n{| width=\"100%\" style=\"text-align:center; vertical-align:middle;\" cellspacing=\"0\" cellpadding=\"0\"";
$tabelka .= "\n|-";
for (0..3)
{
$tabelka .= "\n| colspan=\"2\" | ";
$tabelka .= "$przodek[$_]" if (not $przodek[$_] eq "");
($tabelka .= "<sup> ". $h++ .")</sup>", push @przypis, $przodek_pp[$_]) if (not $przodek_pp[$_] eq "");
$tabelka .= "<br/>ur. $przodek_ur[$_] " if (not $przodek_ur[$_] eq "");
$tabelka .= "<br/>zm. $przodek_zm[$_] " if (not $przodek_zm[$_] eq "");
$tabelka .= "\n| colspan=\"2\" | " if ( $_ < 3)
}
$tabelka .= "\n|-";
$tabelka .= "\n| style=\"border-right:1px black solid;\" | ";
$tabelka .= "\n| colspan=\"4\" style=\"border-bottom:1px black solid; border-right:1px black solid;\" | ";
$tabelka .= "\n| colspan=\"4\" style=\"\" | ";
$tabelka .= "\n| colspan=\"4\" style=\"border-bottom:1px black solid; border-left:1px black solid;\" | ";
$tabelka .= "\n| style=\"border-left:1px black solid;\" | ";
$tabelka .= "\n|-";
$tabelka .= "\n| colspan=\"3\" | ";
$tabelka .= "\n| colspan=\"8\" style=\"border-left:1px black solid; border-right:1px black solid;\" | ";
$tabelka .= "\n| colspan=\"3\" | ";
$tabelka .= "\n|-";
$tabelka .= "\n| colspan=\"2\" | ";
$tabelka .= "\n| colspan=\"2\" | $przodek[4]";
($tabelka .= "<sup> ". $h++ .")</sup>", push @przypis, $przodek_pp[4]) if (not $przodek_pp[4] eq "");
$tabelka .= "<br/>ur. $przodek_ur[4] " if (not $przodek_ur[4] eq "");
$tabelka .= "<br/>zm. $przodek_zm[4] " if (not $przodek_zm[4] eq "");
$tabelka .= "\n| colspan=\"6\" | ";
$tabelka .= "\n| colspan=\"2\" | $przodek[5]";
($tabelka .= "<sup> ". $h++ .")</sup>", push @przypis, $przodek_pp[5]) if (not $przodek_pp[5] eq "");
$tabelka .= "<br/>ur. $przodek_ur[5] " if (not $przodek_ur[5] eq "");
$tabelka .= "<br/>zm. $przodek_zm[5] " if (not $przodek_zm[5] eq "");
$tabelka .= "\n| colspan=\"2\" | ";
$tabelka .= "\n|-";
$tabelka .= "\n| colspan=\"3\" style=\"border-right:1px black solid;\" | ";
$tabelka .= "\n| colspan=\"8\" style=\"border-bottom:1px black solid;\" | ";
$tabelka .= "\n| colspan=\"3\" style=\"border-left:1px black solid;\" | ";
$tabelka .= "\n|-";
$tabelka .= "\n| colspan=\"7\" style=\"border-right:1px black solid;\" | ";
$tabelka .= "\n| colspan=\"7\" | ";
$tabelka .= "\n|-";
if (@rodzic == 12)
{
$tabelka .= "\n| colspan=\"6\" | ";
$tabelka .= "\n| colspan=\"2\" | ";
$tabelka .= "$rodzic[$n]" if (not $rodzic[0] eq "");
($tabelka .= "<sup> ". $h++ .")</sup>", push @przypis, $rodzic_pp[0]) if (not $rodzic_pp[0] eq "");
$tabelka .= "<br/>ur. $rodzic_ur[0] " if (not $rodzic_ur[0] eq "");
$tabelka .= "<br/>zm. $rodzic_zm[0] " if (not $rodzic_zm[0] eq "");
$tabelka .= "\n| colspan=\"6\" | ";
$tabelka .= "\n|-";
}
for (0..13)
{
$tabelka .= "\n| width=\"7.14%\"|";
}
$tabelka .= "\n|-\n|}";
}
#if (@rodzic > 1 and @dziecko > 0)
{
$tabelka .= "\n<!-- Żony i dzieci -->";
$tabelka .= "\n{| style=\"width:100%; text-align:center; vertical-align:top;\" cellspacing=\"0\" cellpadding=\"0\"\n";
$tabelka .= "|- style=\"vertical-align:top;\"";
for (0..4)
{
if (@rodzic < 4)
{
$n = $raz[$_];
}
else
{
$n = $dwa[$_];
}
$tabelka .= "\n| colspan=\"2\" " . ($n == 0 ? "style=\"vertical-align:middle;\"" : "") . " | ";
$tabelka .= "$n<br/> " if (not $rodzic[$n] eq "" and $n > 0 and @rodzic > 2 );
$tabelka .= ( ($n == 0 ? "\'\'\'" : "") . "$rodzic[$n]" . ($n == 0 ? "\'\'\'" : "") ) if (not $rodzic[$n] eq "");
($tabelka .= "<sup> ". $h++ .")</sup>", push @przypis, $rodzic_pp[$n]) if (not $rodzic_pp[$n] eq "");
$tabelka .= "<br/>ur. $rodzic_ur[$n] " if (not $rodzic_ur[$n] eq "");
$tabelka .= "<br/>zm. $rodzic_zm[$n] " if (not $rodzic_zm[$n] eq "");
$tabelka .= "<br/><span style=\"letter-spacing: -6pt;\">OO</span> $rodzic_dt[$n]" if (not $rodzic_dt[$n] eq "");
}
$tabelka .= "\n|-";
if (@dziecko)
{
for (0..9)
{
$tabelka .= "\n| style=\"width:10%;" . ($_ == 5 ? "border-left:1px solid black;" : "") ."\"| ";
}
}
else
{
for (0..9)
{
$tabelka .= "\n| style=\"width:10%;\" | ";
}
}
if (@rodzic > 4)
{
$tabelka .= "\n|- style=\"vertical-align:top;\"";
for (0..4)
{
if (@rodzic < 7)
{
$n = $raz[$_];
}
else
{
$n = $dwa[$_];
}
if ($n == 0)
{
$tabelka .= "\n| ";
$tabelka .= "\n| style=\"border-left:1px solid black;\"| ";
}
else
{
$n += 4;
$tabelka .= "\n| colspan=\"2\" | ";
$tabelka .= "$n<br/> " if (not $rodzic[$n] eq "");
$tabelka .= "$rodzic[$n]" if (not $rodzic[$n] eq "");
($tabelka .= "<sup> ". $h++ .")</sup>", push @przypis, $rodzic_pp[$n]) if (not $rodzic_pp[$n] eq "");
$tabelka .= "<br/>ur. $rodzic_ur[$n] " if (not $rodzic_ur[$n] eq "");
$tabelka .= "<br/>zm. $rodzic_zm[$n] " if (not $rodzic_zm[$n] eq "");
$tabelka .= "<br/><span style=\"letter-spacing: -6pt;\">OO</span> $rodzic_dt[$n]" if (not $rodzic_dt[$n] eq "");
}
}
}
$tabelka .= "\n|-";
if (@dziecko)
{
for (0..9)
{
$tabelka .= "\n| style=\"width:10%;" . ($_ == 5 ? "border-left:1px solid black;" : "") ."\"| ";
}
}
else
{
for (0..9)
{
$tabelka .= "\n| style=\"width:10%;\" | ";
}
}
$l = int((@dziecko-1) / 5);
$m = @dziecko-1;
if (@dziecko)
{
for $n(0..$l)
{
$tabelka .= "\n|- style=\"text-align:left;\"";
for (0...4)
{
$tabelka .= "\n| style=\"width:10%;". ($m >= ($n+1) * 5 and $_ == 0 ? "border-left:1px solid black;" : "") . ( ( not ( ($l == 0 and $_ == 0) or $dziecko[$_ + $n*5] eq "") or ($l == 0 and $_ > 0 and $_ < 3) ) ? "border-top:1px solid black;" : "" ) . "\"| ";
$tabelka .= "\n| style=\"width:10%;". ($dziecko[$_ + $n*5] eq "" ? "" : "border-left:1px solid black;"). ( ($_ < 4 and not $dziecko[$_ + $n*5 + 1] eq "" or ($_ < 2 and $l == 0) ) ? "border-top:1px solid black;" : "") ."\"| " . ($dziecko_nr[$_ + $n*5] eq "" ? "" : "$dziecko_nr[$_ + $n*5]");
}
$tabelka .= "\n|- style=\"vertical-align:top;\"";
for (0..4)
{
$przyp = "";
($przyp = "<sup> ". $h++ .")</sup>", push @przypis, $dziecko_pp[$_ + n*5]) if (not $dziecko_pp[$_ + $n*5] eq "");
$tabelka .= "\n| colspan=\"2\" ". ( ($n < $l and $_ == 0) ? "style=\"border-left:1px solid black;\"" : "") ."| ";
$tabelka .= "$dziecko[$_ + $n*5]$przyp <br/> " if (not $dziecko[$_ + $n*5] eq "");
$tabelka .= "ur. $dziecko_ur[$_ + $n*5] <br/> " if (not $dziecko_ur[$_ + $n*5] eq "");
$tabelka .= "zm. $dziecko_zm[$_ + $n*5] <br/> " if (not $dziecko_zm[$_ + $n*5] eq "");
}
}
}
$tabelka .= "\n|-";
$tabelka .= "\n|}";
}
if (@przypis)
{
$tabelka .= "\n{| style=\"font-size:smaller; width:100%;\"\n|-\n|";
for (@przypis)
{
$tabelka .= "\n# $_";
}
$tabelka .= "\n|-\n|}";
}
if (@biblio)
{
$tabelka .= "\n\n\n'''Bibliografia genealogiczna''':";
for (@biblio)
{
$tabelka .= "\n# $_";
}
}
$tabelka .= "\n<!-- nie kasuj tego szablonu -->{{gengen}}";
$tabelka .= "<!-- koniec drzewa genealogicznego -->";
print $tabelka;