source.phpDenna kod är public domain. Om ni hittar fel eller vill ändra något i koden blir jag jätteglad om ni skickar dessa ändringar till jesper [at] fantasi [punkt] se.
<?php
$title="Källkodskällan";
$currentFile=__FILE__;
include("header.php");
echo "<h1>Källkoder</h1>";
function langName($ext)
{
switch (strtoupper($ext))
{
case "ADB": return "Ada";
case "BAS": return "QBasic";
case "E": return "Amiga E";
case "JAVA": return "Java";
case "JSCRIPT": return "Java script";
case "PAS": return "Pascal";
default: return strtoupper($ext);
}
}
function noSpace($text)
{
return str_replace(" ", "_", $text);
}
$sourceDir="source/";
$files = array();
$dir = opendir($sourceDir);
while ($file = readdir($dir))
{
if (preg_match("/^[a-z0-9_-]+\.[a-z0-9]+$/", $file))
array_push($files, $file);
}
natcasesort($files);
$lines = array();
$filenames = array();
$allLanguages = array();
$oldName = "";
while ($file = array_pop($files))
{
$d = strpos($file, ".");
$name = substr($file, 0, $d);
$end = substr($file, $d + 1);
array_push($allLanguages, langName($end));
if ($_POST['key'] != NULL)
{
$text = html_entity_decode(file_get_contents($sourceDir.$file));
if ($_POST['case'] == "on")
{
if (strpos($text, $_POST['key']) == 0)
continue;
}
else
{
if (strpos(strtolower($text), strtolower($_POST['key'])) == 0)
continue;
}
}
if (strtolower($name) == strtolower($oldName) || $oldName == "")
{
if ($_POST[noSpace(langName($end))] == "on" || count($_POST) == 0)
array_push($filenames, $file);
}
else
{
/* Print the stored files to a row in the table */
$links = "";
while ($lang = array_pop($filenames))
$links = $links."<a href=\"sourceview.php?file=source/".
$lang."\">".langName(substr($lang, strpos($lang, ".") + 1))."</a><br>";
if ($links != "")
{
if (file_exists($sourceDir.strtolower($oldName)."_txt"))
$desc = file_get_contents($sourceDir.strtolower($oldName)."_txt");
else
$desc = "-";
array_push($lines, array($oldName, $links, $desc));
}
/* Handle the new file whos name did not match the old name. */
if ($_POST[noSpace(langName($end))] == "on" || count($_POST) == 0)
$filenames = array($file);
else
$filenames = array();
}
$oldName = $name;
}
$links = "";
while ($lang = array_pop($filenames))
$links = $links."<a href=\"sourceview.php?file=source/".
$lang."\">".langName(substr($lang, strpos($lang, ".") + 1))."</a><br>";
if ($links != "")
{
if (file_exists($sourceDir.strtolower($oldName)."_txt"))
$desc = file_get_contents($sourceDir.strtolower($oldName)."_txt");
else
$desc = "-";
array_push($lines, array($oldName, $links, $desc));
}
$allLanguages = array_unique($allLanguages);
rsort($allLanguages);
echo "<form action=\"source.php\" method=\"post\">";
echo "<table class=\"ftable\"><tr>";
$n = 0;
while ($lang = array_pop($allLanguages))
{
echo "<th class=\"small\"><input type=\"checkbox\" name=\"".
noSpace($lang)."\"";
if ($_POST[noSpace($lang)] == "on" || count($_POST) == 0)
echo " checked";
echo "> ".$lang."</th>";
$n++;
}
echo "</tr><tr><th class=\"small\" colspan=\"".($n - 1)."\">Filter: ";
echo "<input type=\"text\" name=\"key\" size=\"60\" value=\"".$_POST['key']."\"> ";
echo " <input type=\"checkbox\" name=\"case\"";
if ($_POST['case'] == "on")
echo " checked";
echo "> Case sensitive</th>";
echo "<th><img src=\"gfx/pixel.gif\" width=\"1\" height=\"24\" alt=\"\"><input type=\"submit\" value=\"Uppdatera\"></th></tr></table></form>";
?>
<p class="maincontent">
Välj vilka språk du är intresserad av ovan. Namnen
på språken i kolumnen 'Språk' är länken
till källkoden. Du kan även filtrera med nyckelord i
källkodsfilerna.
</p>
<p class="maincontent">
Alla C-program nedan är skrivna i ren ANSI-C för att vara så
plattformsoberoende som möjligt. Några av dem är även
skrivna för att passera testverktyget splint utan anmärkning.
Detta gör att de på många ställen är extra
pedantiska med typkonverteringar, argument och returvärden.
</p>
<?php
ftable(-1, array("Namn", "Språk", "Beskrivning"), array("l","l","l"));
while ($line = array_pop($lines))
ftline($line);
ftend();
include("footer.php");
?>
|