Hauptseite   Liste aller Namensbereiche   Klassenhierarchie   Alphabetische Liste   Übersicht   Auflistung der Dateien   Elemente eines Namensbereiches   Datenstruktur-Elemente   Datei-Elemente  

sflexhelper Namensbereichsreferenz

Hilfsfunktionen, die immer mal wieder benötigt werden. Mehr...


Funktionen

const std::string readFile (std::string fileName, std::ostream &errorStream)
 Liefert den Inhalt einer Text-Datei. Mehr...

bool changeDir (std::string dirName)
 Wechselt das Verzeichnis. Mehr...

const std::string getWorkingDir ()
 Liefert den Pfad des aktuellen Verzeichnisses. Mehr...

const std::string getXmlFilename (std::string para)
 Liefert den Pfad einer XML-Datei gemäß der SfleX-Verzeichnis Hierachie. Mehr...

const std::string getXslFilename (std::string para1, std::string para2)
 Liefert den Pfad einer XSL-Datei gemäß der SfleX-Verzeichnis Hierachie. Mehr...

const std::string quoteSingle (std::string theString)
 Umgibt einen String mit einfachen Anführungsstrichen ('). Mehr...

const std::string stripWhiteSpace (std::string theString)
 Löscht Whitespace-Zeichen aus einem String. Mehr...


Ausführliche Beschreibung

Hilfsfunktionen, die immer mal wieder benötigt werden.

In diesem Namensbereich werden einige nützliche Funktionen definiert.


Dokumentation der Funktionen

bool sflexhelper::changeDir std::string    dirName
 

Wechselt das Verzeichnis.

Parameter:
dirName  der Pfad des Verzeichnis
Rückgabe:
den Erfolg

00057 {
00058     const int f = chdir( dirName.c_str() );
00059     bool r = ( f == 0 );
00060     return r;
00061 }

const std::string sflexhelper::getWorkingDir  
 

Liefert den Pfad des aktuellen Verzeichnisses.

Rückgabe:
den aktuellen Pfad

00067 {
00068     char dir[100];
00069     return getcwd(dir, 100);
00070 }

const std::string sflexhelper::getXmlFilename std::string    para
 

Liefert den Pfad einer XML-Datei gemäß der SfleX-Verzeichnis Hierachie.

Dabei gilt folgende Aufbau:
Im 'root'-Verzeichnis des Pools, das dem System in der Konfigurationsdatei genannt werden muß, wird ein Verzeichnis 'xml/' erwartet. In diesem Verzeichnis liegen alle XML-Dateien des Pools. Die Namen der Dateien unterscheiden sich nur in der Mitte. Das Prae- bzw. Suffix sind ebenfalls durch die Konfigurationsdatei festgelegt. Mit dem übergebenen variablen Mittelteil wird der komplette Pfad der Datei ermittelt. Beispiel:
root-Verzeichnis des Pools: /home/sflex/heine
Praefix: Heine_
Suffix: .xml
übergeben wird Lass_ab
zurückgegeben wird: /home/sflex/heine/xml/Heine_Lass_ab.xml

Parameter:
para  der variable Mittelteil des Namens der XML-Datei
Rückgabe:
den kompletten Pfad zur XML-Datei

00076 {
00077     using std::string;
00078     
00079     SflexConfig *conf = SflexConfig::getConfig();
00080 
00081     const string pool    = conf->getValue( "sflex", "pool" );
00082     const string dir     = conf->getValue( pool, "root" );
00083     const string praefix = conf->getValue( pool, "praefix" );
00084     const string suffix  = conf->getValue( pool, "suffix" );
00085 
00086     bool isEmpty = ( pool.empty() ||
00087                      dir.empty() || 
00088                      praefix.empty() || 
00089                      suffix.empty() );
00090     if ( isEmpty ) {
00091         return "";
00092     }
00093 
00094     return dir + "/xml/" + praefix + para + suffix;
00095 }

const std::string sflexhelper::getXslFilename std::string    para1,
std::string    para2
 

Liefert den Pfad einer XSL-Datei gemäß der SfleX-Verzeichnis Hierachie.

Dabei gilt folgende Aufbau:
Im 'root'-Verzeichnis des Pools, das dem System in der Konfigurationsdatei genannt werden muß, wird ein Verzeichnis 'xsl/' erwartet. In diesem Verzeichnis wird pro Modul ein Unterverzeichnis mit dem Namen des Moduls erwartet (also z.B. 'einzel/'). In diesen Verzeichnissen liegen dann die Formatvorlagen des Moduls. Der Dateiname setzt sich aus einer Bezeichnung und dem Content-Type, welches die entsprechende Formatvorlage liefert, zusammen. Mit diesen Daten wird der komplette Pfad zur XSLT Datei ermittelt.
Beispiel:
root-Verzeichnis des Pools: /home/sflex/heine
Modul-Name: einzel
übergeben wird index und html
zurückgegeben wird: /home/sflex/heine/xsl/einzel/index_html.xsl

Parameter:
para1  Name des Stylesheets
para2  Content-Type des vom Stylesheet produzierten Ergebnisses
Rückgabe:
den kompletten Pfad zur XSL-Datei

00102 {
00103     using std::string;
00104     
00105     SflexConfig *conf = SflexConfig::getConfig();
00106 
00107     const string mod     = conf->getValue( "sflex", "module" );
00108     const string pool    = conf->getValue( "sflex", "pool" );
00109     const string dir     = conf->getValue( pool, "root" );
00110     const string praefix = conf->getValue( pool, "praefix" );
00111     const string suffix  = conf->getValue( pool, "suffix" );
00112 
00113     bool isEmpty = ( mod.empty() ||
00114                      pool.empty() || 
00115                      dir.empty() || 
00116                      praefix.empty() || 
00117                      suffix.empty() );
00118     if ( isEmpty ) {
00119         return "";
00120     }
00121     
00122     return dir + "/xsl/" + mod + "/" + para1 + "_" + para2 + ".xsl";
00123 }

const std::string sflexhelper::quoteSingle std::string    theString
 

Umgibt einen String mit einfachen Anführungsstrichen (').

Dies wird z.B. dann benötigt, wenn der Wert eines String-Parameters in einem XSLT Stylesheet gesetzt werden soll.

Parameter:
theString  der String
Rückgabe:
der "gequotete" String

00129 {
00130     return "'" + theString + "'";
00131 }

const std::string sflexhelper::readFile std::string    fileName,
std::ostream &    errorStream
 

Liefert den Inhalt einer Text-Datei.

Parameter:
fileName  der Name der Datei (mit Pfad)
errorStream  der Stream für die Fehlermeldung.
Rückgabe:
bei Erfolg den Inhalt der Datei, sonst einen leeren String

00034 {
00035     std::ifstream in;
00036     std::ostringstream content;
00037     
00038     in.open( fileName.c_str(), ios::in );
00039     
00040     if ( !in ) {
00041         errorStream << "Helper: Datei "
00042                     << fileName
00043                     << " konnte nicht geöffnet werden!\n";
00044         return "";
00045     }
00046 
00047     content << in.rdbuf();
00048     in.close();
00049 
00050     return content.str();
00051 }

const std::string sflexhelper::stripWhiteSpace std::string    theString
 

Löscht Whitespace-Zeichen aus einem String.

Dazu zählen zwei aufeinanderfolgende Leerzeichen ' ', das Tabulator-Zeichen '\t' und das Newline-Zeichen '\n'. Das vereinfacht das Erstellen von Stylesheets, bei denen es in der Ausgabe auf solche Zeichen ankommt (Plain Text, LaTeX). So wird sicher gestellt, daß die Whitespace-Zeichen nur durch das Stylesheet hinzugefügt werden und nicht noch von der XML-Datei her übrig bleiben (etwa durch Einrückungen).

Parameter:
theString  der String mit Whitespace-Zeichen
Rückgabe:
der String ohne Whitespace-Zeichen

00135 {
00136     unsigned int whiteSpacePos = theString.find( "\n" );
00137     while( whiteSpacePos < string::npos ) {
00138         theString.replace( whiteSpacePos, 1, "" );
00139         whiteSpacePos = theString.find( "\n", whiteSpacePos + 1 );
00140     }
00141     
00142     whiteSpacePos = theString.find( "\t" );
00143     while( whiteSpacePos < string::npos ) {
00144         theString.replace( whiteSpacePos, 1, "" );
00145         whiteSpacePos = theString.find( "\t", whiteSpacePos + 1 );
00146     }
00147 
00148     whiteSpacePos = theString.find( "  " );
00149     while( whiteSpacePos < string::npos ) {
00150         theString.replace( whiteSpacePos, 2, "" );
00151         whiteSpacePos = theString.find( "  ", whiteSpacePos );
00152     }
00153 
00154     return theString;
00155 }


Erzeugt am Fri Apr 12 10:57:19 2002 für SfleX von doxygen1.2.14 geschrieben von Dimitri van Heesch, © 1997-2002