1 /**************************************************************************** 2 ** 3 ** Copyright (C) 2019 The Qt Company Ltd. 4 ** Contact: https://www.qt.io/licensing/ 5 ** 6 ** This file is part of the tools applications of the Qt Toolkit. 7 ** 8 ** $QT_BEGIN_LICENSE:GPL-EXCEPT$ 9 ** Commercial License Usage 10 ** Licensees holding valid commercial Qt licenses may use this file in 11 ** accordance with the commercial license agreement provided with the 12 ** Software or, alternatively, in accordance with the terms contained in 13 ** a written agreement between you and The Qt Company. For licensing terms 14 ** and conditions see https://www.qt.io/terms-conditions. For further 15 ** information use the contact form at https://www.qt.io/contact-us. 16 ** 17 ** GNU General Public License Usage 18 ** Alternatively, this file may be used under the terms of the GNU 19 ** General Public License version 3 as published by the Free Software 20 ** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT 21 ** included in the packaging of this file. Please review the following 22 ** information to ensure the GNU General Public License requirements will 23 ** be met: https://www.gnu.org/licenses/gpl-3.0.html. 24 ** 25 ** $QT_END_LICENSE$ 26 ** 27 ****************************************************************************/ 28 29 /* 30 quoter.h 31 */ 32 33 #ifndef QUOTER_H 34 #define QUOTER_H 35 36 #include "location.h" 37 38 #include <QtCore/qhash.h> 39 #include <QtCore/qstringlist.h> 40 41 QT_BEGIN_NAMESPACE 42 43 class Quoter 44 { 45 Q_DECLARE_TR_FUNCTIONS(QDoc::Quoter) 46 47 public: 48 Quoter(); 49 50 void reset(); 51 void quoteFromFile(const QString &userFriendlyFileName, const QString &plainCode, 52 const QString &markedCode); 53 QString quoteLine(const Location &docLocation, const QString &command, const QString &pattern); 54 QString quoteTo(const Location &docLocation, const QString &command, const QString &pattern); 55 QString quoteUntil(const Location &docLocation, const QString &command, const QString &pattern); 56 QString quoteSnippet(const Location &docLocation, const QString &identifier); 57 58 static QStringList splitLines(const QString &line); 59 60 private: 61 QString getLine(int unindent = 0); 62 void failedAtEnd(const Location &docLocation, const QString &command); 63 bool match(const Location &docLocation, const QString &pattern, const QString &line); 64 QString commentForCode() const; 65 QString removeSpecialLines(const QString &line, const QString &comment, int unindent = 0); 66 67 bool silent; 68 QStringList plainLines; 69 QStringList markedLines; 70 Location codeLocation; 71 static QHash<QString, QString> commentHash; 72 }; 73 74 QT_END_NAMESPACE 75 76 #endif 77