VHISTlib  1.84.0.3018
/daten/ahuesgen/projects/vhist/code/vhistlib/include/arglib/argfileparser.h
00001 /* $HEADERS
00002  $Id: argfileparser.h 2179 2011-06-24 09:03:24Z ahuesgen $
00003  */
00004 
00005 #ifndef ARGFILEPARSER_INCLUDED
00006 #define ARGFILEPARSER_INCLUDED
00007 
00008 #include "../shared/misc_defines.h"
00009 #include "argfiletoken.h"
00010 
00011 #include <QString>
00012 #include <QStringList>
00013 #include <QHash>
00014 
00015 namespace vhist
00016 {
00017 
00018 typedef QHash<QString, QString> Environment;
00019 typedef QList<ArgfileToken> TokenList;
00020 
00026 class VHIST_EXTERN ArgfileParser
00027 {
00028     public:
00029         ArgfileParser();
00030         ~ArgfileParser();
00031     
00032     public:
00033         QStringList parseArgfile(const QString& content,
00034                 const Environment* env = NULL);
00035         TokenList getHighlighterList(const QString& content);
00036     
00037     private:
00038         TokenList splitIntoTokens(const QString& content);
00039         TokenList unescapeTokens(const TokenList& tokens);
00040         TokenList joinTokens(const TokenList& tokens);
00041         TokenList removeDoubleSeparators(const TokenList& tokens);
00042     
00043     private:
00044         QStringList findVariablesInToken(const ArgfileToken& token);
00045         QStringList findVariablesBackslashed(const ArgfileToken& token);
00046         QStringList findVariablesDoubleQuoted(const ArgfileToken& token);
00047         TokenList handleVariables(const TokenList& tokens,
00048                 const Environment* env = NULL);
00049         
00050         ArgfileToken replaceVariables(const QStringList& list,
00051                 const Environment* env);
00052         QString getVariableName(const QString& var);
00053         
00054         QString unescapeDoubleQuoted(const QString& text);
00055         QString unescapeSingleQuoted(const QString& text);
00056         QString unescapeBackslashed(const QString& text);
00057         QString escapeEverything(const QString& text);
00058         
00059         QStringList tokensToStrings(const TokenList& tokens);
00060 };
00061 
00062 }
00063 
00064 #endif // ARGFILEPARSER_INCLUDED
00065 

VHISTlib 1.84.0.3018 of Jun 28 2013, generated by doxygen.