VHISTlib
1.84.0.3018
|
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