1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
|
/* This file is part of the KDE libraries
Copyright (C) 2001 Joseph Wenninger <[email protected]>
Copyright (C) 2000 Scott Manson <[email protected]>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License version 2 as published by the Free Software Foundation.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#ifndef __KATE_SYNTAXDOCUMENT_H__
#define __KATE_SYNTAXDOCUMENT_H__
#include <qdom.h>
#include <qstringlist.h>
/**
* Information about each syntax hl Mode
*/
class KateSyntaxModeListItem
{
public:
QString name;
QString nameTranslated;
QString section;
QString mimetype;
QString extension;
QString identifier;
QString version;
QString priority;
QString author;
QString license;
bool hidden;
};
/**
* List of the KateSyntaxModeListItems holding all the syntax mode list items
*/
typedef QValueList<KateSyntaxModeListItem*> KateSyntaxModeList;
/**
* Class holding the data around the current QDomElement
*/
class KateSyntaxContextData
{
public:
QDomElement parent;
QDomElement currentGroup;
QDomElement item;
};
/**
* Store and manage the information about Syntax Highlighting.
*/
class KateSyntaxDocument : public QDomDocument
{
public:
/**
* Constructor
* Sets the current file to nothing and build the ModeList (katesyntaxhighlightingrc)
* @param force fore the update of the hl cache
*/
KateSyntaxDocument(bool force = false);
/**
* Desctructor
*/
~KateSyntaxDocument();
/**
* If the open hl file is different from the one needed, it opens
* the new one and assign some other things.
* @param identifier file name and path of the new xml needed
* @return success
*/
bool setIdentifier(const QString& identifier);
/**
* Get the mode list
* @return mode list
*/
const KateSyntaxModeList &modeList() { return myModeList; }
/**
* Jump to the next group, KateSyntaxContextData::currentGroup will point to the next group
* @param data context
* @return success
*/
bool nextGroup(KateSyntaxContextData* data);
/**
* Jump to the next item, KateSyntaxContextData::item will point to the next item
* @param data context
* @return success
*/
bool nextItem(KateSyntaxContextData* data);
/**
* This function is used to fetch the atributes of the tags.
*/
QString groupItemData(const KateSyntaxContextData* data,const QString& name);
QString groupData(const KateSyntaxContextData* data,const QString& name);
void freeGroupInfo(KateSyntaxContextData* data);
KateSyntaxContextData* getSubItems(KateSyntaxContextData* data);
/**
* Get the KateSyntaxContextData of the DomElement Config inside mainGroupName
* It just fills KateSyntaxContextData::item
*/
KateSyntaxContextData* getConfig(const QString& mainGroupName, const QString &config);
/**
* Get the KateSyntaxContextData of the QDomElement Config inside mainGroupName
* KateSyntaxContextData::parent will contain the QDomElement found
*/
KateSyntaxContextData* getGroupInfo(const QString& mainGroupName, const QString &group);
/**
* Returns a list with all the keywords inside the list type
*/
QStringList& finddata(const QString& mainGroup,const QString& type,bool clearList=true);
private:
/**
* Generate the list of hl modes, store them in myModeList
* @param force if true forces to rebuild the Mode List from the xml files (instead of katesyntax...rc)
*/
void setupModeList(bool force);
/**
* Used by getConfig and getGroupInfo to traverse the xml nodes and
* evenually return the found element
*/
bool getElement (QDomElement &element, const QString &mainGroupName, const QString &config);
/**
* List of mode items
*/
KateSyntaxModeList myModeList;
/**
* current parsed filename
*/
QString currentFile;
/**
* last found data out of the xml
*/
QStringList m_data;
};
#endif
// kate: space-indent on; indent-width 2; replace-tabs on;
|