{HEADER END}
{COMPARE START}

MLAB

Porovnej cestu:  Revize
S umístěním:  Revize

Toto porovnání ukazuje změny pro převedení /Articles/Forth (Revize 543) na /Articles/Forth (Revize 545)

Reverzní porovnání

PHP/GenerateHTML.php

@@ -3,14 +3,17 @@

// project. Script should be run once (offline) when new versions of sorces are
// available. It creates new subdirectory with HTML documentation tree.
//
// Configuration file is GenerateHTML.cfg
// Default configuration is in file GenerateHTML.cfg
//
// Command Line paramaters are available via php GenerateHTML.php --help
//
// (c)miho 2007 / http://www.mlab.cz
// **********************************************************************
// History
// **********************************************************************
// 0.00 work wersion
// 0.01 basic functionality
// **********************************************************************

@@ -30,18 +33,30 @@

// **********************************************************************
function Error($ErrorStr)
// If ErrorStr is not empty print it and die
{
if ($ErrorStr=="")
return;
print "\n";
print " ERROR: -->".$ErrorStr."\n";
die(1);
}
function MyReadFile($FileName, &$FileContent)
// Reads file, returns file as a single string
{
//
if ($FileName=="")
return "No File Name";
// Read file
$FileContent=@file($FileName);
// Test if file contains any content
if ($FileContent==FALSE)
{
unset($FileContent);
return "No Data in File $FileName";
}
return "No Data in File: $FileName";
// Remove CR or LF or CR/LF
foreach($FileContent as $Key => $Line)

@@ -134,8 +149,102 @@

// **********************************************************************
function Help()
// Display help
{
print "\n";
print "This script takes default parameters from GenerateHTML.cfg.\n";
print "\n";
print "Parameters can be entered directly on command line as well:\n";
print " php GenerateHTML.php par1=val1 par2=val2\n";
print "\n";
print "Sometimes (in Windows) it is necessary to use quotation marks this way:\n";
print " php GenerateHTML.php \"par1=val1\" \"par2=val2\"\n";
print "\n";
print "Parameters are: \n";
print " EnableApache={0|1} - Enable to run in Apache\n";
print " SourceDir=path - path to asm source directory\n";
print " SourceAsm=file - name of top level asm source file\n";
print " TemplateDir=path - path to HTML template\n";
print " DestinationDir=path - path to destination HTML\n";
Error("\n");
}
function Parameters(&$CFG)
// Function process Command Line parameters
{
// Info
print "Parameters\n";
// Dummy values
$CFG["EnableApache"] = 0; // Do not allow run in Apache
$CFG["SourceDir"] = "";
$CFG["SourceAsm"] = "";
$CFG["TemplateDir"] = "";
$CFG["DestinationDir"] = "";
// Default values (in cfg file)
@include_once("GenerateHTML.cfg");
// Command Line parameters
if ($_SERVER["argc"]>1)
{
// Help
if ($_SERVER["argv"][1]=="--help")
Help();
// Drop
unset($_SERVER["argv"][0]);
// Go through arguments
foreach($_SERVER["argv"] as $Key => $Value)
{
$Left=substr($Value,0,strpos($Value,"="));
$Right=substr($Value,strpos($Value,"=")+1);
if (isset($CFG[$Left]) && $Right!="" )
{
$CFG[$Left]=$Right;
}
else
{
return "Invalid Parameter: $Value";
}
}
}
// Correct paths and existence
foreach($CFG as $Key => $Value)
{
if (stripos($Key,"Dir"))
{
// Correct / at the end of path
if (substr($Value,strlen($Value)-1)!="/")
{
$CFG[$Key]=$Value."/";
}
// Check existence
#print "DIR".$CFG[$Key]."\n";
if ( ! is_dir($CFG[$Key]))
{
return "Directory does not exist: ".$Key."=".$CFG[$Key];
}
}
}
// Print info
if (count(CFG))
foreach($CFG as $Key => $Value)
print " $Key=$Value\n";
print "\n";
// Check if alowed to run in Apache
if ($_SERVER["argc"]==0 & ! $CFG["Apache"])
return "This Script is configured so that it will not run in Apache.";
// No Error
return "";
}
function SourceAsm($SourceDir, $FileName, &$SourceAsmFiles, &$LabelList )
// Process ASM source file, recurse all includes
// Returns Error String
// Stores file names and labels into two arrays
// IN $SourceDir - base directory (not printed)
// IN $FileName - file to process

@@ -149,11 +258,8 @@

// Read file
$Error=MyReadFile($SourceDir.$FileName, $FileContent);
if ($Error!="")
{
print $Error."\n";
return 1;
}
return $Error;
// Remember filename
$SourceAsmFiles[]=$FileName;

@@ -193,13 +299,15 @@

{
$Dir="";
}
SourceAsm($SourceDir, $Dir.$Value, $SourceAsmFiles, $LabelList);
$Error=SourceAsm($SourceDir, $Dir.$Value, $SourceAsmFiles, $LabelList);
if ($Error!="")
return $Error;
}
unset($Includes);
}
// End
return 0;
return "";
}

@@ -207,6 +315,7 @@

// Prints all procesed ASM files
{
print "Asm Source File List\n";
if (count($SourceAsmFiles))
foreach($SourceAsmFiles as $Key => $Value)
{
print " ".$Value."\n";

@@ -219,6 +328,7 @@

// Prints all found labels
{
print "Label List\n";
if (count($LabelList))
foreach($LabelList as $Key => $Value)
{
print " ".$Value["Label"]." ".$Value["FileName"]." ".$Value["LineNumber"]."\n";

@@ -229,13 +339,14 @@

function CreateWordList($SourceDir, &$LabelList, &$WordList)
// Goes through LabelList and looks for word definitions
// Returns Error String
// IN $LabelList - Found labels
// OUT $WordList - Word List (ShortLabel, Word, Comment, Label, FileName)
{
print "Word List\n";
if ($LabelList)
if (count($LabelList))
foreach ($LabelList as $Value)
{
// Take all VE definitions

@@ -252,10 +363,7 @@

$FileName=$SourceDir.$Value["FileName"];
$Error=MyReadFileString($FileName, $FileContent);
if ($Error!="")
{
print " ".$Error."\n";
return 1;
}
return $Error;
$FileContent="\n".$FileContent;
// Find label

@@ -316,11 +424,13 @@

}
}
print "\n";
return "";
}
function GenerateWordList($TemplateDir, $DestinationDir, &$LabelList, &$WordList)
// Creates HTML pages with Word List
// Returns Error String
// IN $TemplateDir - template directory (file WordList.*.html)
// IN $LabelList - list of labels (Label, FileName, LineNumber)
// IN $WordList - list of words (ShortLabel, Word, Comment, Label, FileName)

@@ -328,6 +438,7 @@

{
// Find all templates
print "Word List in HTML\n";
if (count(glob($TemplateDir."WordList.*.html")))
foreach (glob($TemplateDir."WordList.*.html") as $FileName)
{
// Process template file

@@ -336,17 +447,13 @@

// Read template file
$Error=MyReadFileString($FileName, $FileContent);
if ($Error!="")
{
print " ".$Error."\n";
return 1;
}
return $Error;
// Find <<WordList>>
if (!preg_match("/( *)(<<WordList>>)/i",$FileContent,$Matches))
{
print " Missing <<WordList>> in template file\n";
unset($FileContent);
return -1;
return "Missing <<WordList>> in template file";
}
$Indent=$Matches[1];

@@ -359,6 +466,7 @@

$WordListHTML[]=" </tr>";
// Create HTML code - table lines
if (count($WordList))
foreach($WordList as $Key => $Value)
{
// Prepare (just for readibility)

@@ -390,10 +498,7 @@

// Create Output File
$Error=MyWriteFile($DestinationDir.basename($FileName), $FileContent);
if ($Error!="")
{
print " ".$Error."\n";
return -1;
}
return $Error;
// Clear memory
unset($FileContent);

@@ -402,13 +507,17 @@

// Delimiter
print "\n";
return "";
}
function GenerateAsmFiles($TemplateDir, $SourceDir, &$SourceAsmFiles, $DestinationDir)
// Cretaes HTML files from all processed ASM files
// IN
//
// Returns Error String
// IN $TemplateDir - directory with template files
// IN $SourceDir - directory with asm source files
// OUT $SourceAsmFiles -
// IN $DestinationDir - directory for generated HTML files
{
// Info
print "Copy ASM Files\n";

@@ -416,21 +525,13 @@

// Destination directory exists
$DestinationDir.=ASMFILES;
if (!is_dir($DestinationDir))
{
if (!@mkdir($DestinationDir))
{
print " Unable Create Dir ".$DestinationDir."\n";
return -1;
}
}
return "Unable Create Dir ".$DestinationDir;
// Read template
$Error=MyReadFileString($TemplateDir."FileAsm.en.html", $Template);
if ($Error!="")
{
print " ".$Error."\n";
return -1;
}
return $Error;
// Copy all source files
foreach($SourceAsmFiles as $Key => $FileName)

@@ -440,10 +541,7 @@

// Read ASM file
$Error=MyReadFileString($SourceDir.$FileName, $FileContent);
if ($Error!="")
{
print " ".$Error."\n";
return 1;
}
return $Error;
// Prepare HTML
$FileContent=htmlspecialchars($FileContent);

@@ -457,14 +555,12 @@

// Write ASM file in HTML
$Error=MyWriteFile($DestinationDir.FileName2HTML($FileName), $TemplateWork);
if ($Error!="")
{
print " ".$Error."\n";
return -1;
}
return $Error;
}
// Delimiter
print "\n";
return "";
}

@@ -472,39 +568,36 @@

// Main Block
// **********************************************************************
// Global Like Variables (arrays)
// $CFG - Config parameters
// $SourceAsmFiles - All processed ASM files (filenames)
// $LabelList - All label definitions (Label, FileName, LineNumber)
// $WordList - Word List (ShortLabel, Word, Comment, Label, FileName)
// This file contains configurations for this script
require_once("GenerateHTML.cfg");
// Process Command Line Parameters
Error(Parameters($CFG));
// Global Like Variables
//$SourceAsmFiles - All processed ASM files (filenames)
//$LabelList - All label definitions (Label, FileName, LineNumber)
//$WordList - Word List (ShortLabel, Word, Comment, Label, FileName)
// Process all ASM files from the root level
SourceAsm($CFG_SourceDir, $CFG_SourceAsm, $SourceAsmFiles, $LabelList);
Error(SourceAsm($CFG["SourceDir"], $CFG["SourceAsm"], $SourceAsmFiles, $LabelList));
PrintSourceAsm($SourceAsmFiles);
PrintLabels($LabelList);
// Destilate Labels and Words
CreateWordList($CFG_SourceDir, $LabelList, $WordList);
Error(CreateWordList($CFG["SourceDir"], $LabelList, $WordList));
// Create HTML WordList
GenerateWordList($CFG_TemplateDir, $CFG_DestinationDir, $LabelList, $WordList);
Error(GenerateWordList($CFG["TemplateDir"], $CFG["DestinationDir"], $LabelList, $WordList));
// Copy ASM files and convert them into HTML
GenerateAsmFiles($CFG_TemplateDir, $CFG_SourceDir, $SourceAsmFiles, $CFG_DestinationDir);
Error(GenerateAsmFiles($CFG["TemplateDir"], $CFG["SourceDir"], $SourceAsmFiles, $CFG["DestinationDir"]));
// Finish
print "O.K.\n";
return
// Zpracování readme autora + verze
// Dodělat kontroly vstupní CFG parametrů (existence souborů a adresářů)
// Osetreni chyb - die(1) zpusobi chybu (v shellu a da se tak poznat, ze to nedopadlo)
// Zpracování templejtů do samostatného podprogramu (vyřešit indent...)
// tím se vyřeší i en/cs verze Asm souboru
// Generovat log do souboru místo printu (zvážit) oddělit chyby a varování
// Vyčistit cílový adresář
// Process all FORTH files


PHP/GenerateHTML.cfg

@@ -1,13 +1,16 @@

<?php
// 1 or 0 to enable or disable to run in Apache
$CFG["EnableApache"]=0; // Do not allow run in Apache
// Source Files
$CFG_SourceDir="../../../../amforth/trunk/";
$CFG_SourceAsm="amforth.asm";
$CFG["SourceDir"]="../../../../amforth/trunk/";
$CFG["SourceAsm"]="amforth.asm";
// Template Files
$CFG_TemplateDir="../Templates/";
$CFG["TemplateDir"]="../Templates/";
// Destination Directory
$CFG_DestinationDir="../";
$CFG["DestinationDir"]="../HTML/";
?>


PHP/amforth

@@ -97,6 +97,7 @@

mkdir $WorkingDir/HTML 2>> $LogFile
fi
php $WebForthInPath/PHP/GenerateHTML.php \
EnableApache="0" \
SourceDir="$WorkingDir/source-exported/" \
SourceAsm="amforth.asm" \
TemplateDir="$WebForthInPath/Templates/" \


{COMPARE END}
{FOOTER START}

Poháněno WebSVN v2.1 alpha 1