grammar-composer 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +7 -0
- package/README.md +387 -0
- package/dist/Exports.d.ts +1 -0
- package/dist/Exports.js +2 -0
- package/dist/Exports.js.map +1 -0
- package/dist/Grammar.d.ts +62 -0
- package/dist/Grammar.js +376 -0
- package/dist/Grammar.js.map +1 -0
- package/dist/GrammarComposer.d.ts +61 -0
- package/dist/GrammarComposer.js +383 -0
- package/dist/GrammarComposer.js.map +1 -0
- package/dist/Grammars/JsonGrammar.d.ts +16 -0
- package/dist/Grammars/JsonGrammar.js +74 -0
- package/dist/Grammars/JsonGrammar.js.map +1 -0
- package/dist/Grammars/XmlGrammar.d.ts +13 -0
- package/dist/Grammars/XmlGrammar.js +74 -0
- package/dist/Grammars/XmlGrammar.js.map +1 -0
- package/dist/ParserTest.d.ts +1 -0
- package/dist/ParserTest.js +37 -0
- package/dist/ParserTest.js.map +1 -0
- package/dist/Test.d.ts +1 -0
- package/dist/Test.js +74 -0
- package/dist/Test.js.map +1 -0
- package/dist/TestData.d.ts +5 -0
- package/dist/TestData.js +466 -0
- package/dist/TestData.js.map +1 -0
- package/dist/TopDownParser.d.ts +13 -0
- package/dist/TopDownParser.js +229 -0
- package/dist/TopDownParser.js.map +1 -0
- package/dist/data/TestData.d.ts +5 -0
- package/dist/data/TestData.js +466 -0
- package/dist/data/TestData.js.map +1 -0
- package/dist/test-data/TestData.d.ts +5 -0
- package/dist/test-data/TestData.js +466 -0
- package/dist/test-data/TestData.js.map +1 -0
- package/dist/test-grammars/JsonGrammar.d.ts +17 -0
- package/dist/test-grammars/JsonGrammar.js +74 -0
- package/dist/test-grammars/JsonGrammar.js.map +1 -0
- package/dist/test-grammars/XmlGrammar.d.ts +14 -0
- package/dist/test-grammars/XmlGrammar.js +74 -0
- package/dist/test-grammars/XmlGrammar.js.map +1 -0
- package/dist/utilities/Timer.d.ts +13 -0
- package/dist/utilities/Timer.js +70 -0
- package/dist/utilities/Timer.js.map +1 -0
- package/dist/utilities/utilities.d.ts +8 -0
- package/dist/utilities/utilities.js +26 -0
- package/dist/utilities/utilities.js.map +1 -0
- package/package.json +40 -0
- package/src/GrammarComposer.ts +541 -0
- package/src/Test.ts +101 -0
- package/src/TopDownParser.ts +304 -0
- package/src/test-data/TestData.ts +470 -0
- package/src/test-grammars/JsonGrammar.ts +118 -0
- package/src/test-grammars/XmlGrammar.ts +141 -0
- package/src/utilities/Timer.ts +95 -0
- package/src/utilities/Utilities.ts +33 -0
- package/tsconfig.json +105 -0
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
export function parse(inputString, grammar) {
|
|
2
|
+
const inputLength = inputString.length;
|
|
3
|
+
const maxElementId = grammar.maxElementId;
|
|
4
|
+
let bestFailedMatches = [];
|
|
5
|
+
let bestFailedMatchesOffset = -1;
|
|
6
|
+
function updateBestFailedMatchesIfNeeded(terminal, startOffset) {
|
|
7
|
+
if (startOffset >= bestFailedMatchesOffset) {
|
|
8
|
+
if (startOffset > bestFailedMatchesOffset) {
|
|
9
|
+
bestFailedMatchesOffset = startOffset;
|
|
10
|
+
bestFailedMatches = [terminal];
|
|
11
|
+
}
|
|
12
|
+
else {
|
|
13
|
+
bestFailedMatches.push(terminal);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
function tryParse(grammarElement, startOffset) {
|
|
18
|
+
if (grammarElement.cached === true) {
|
|
19
|
+
return tryParseCached(grammarElement, startOffset);
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
return tryParseUncached(grammarElement, startOffset);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
const cachedParseResults = new Array(inputLength);
|
|
26
|
+
function tryParseCached(grammarElement, startOffset) {
|
|
27
|
+
let slot = cachedParseResults[startOffset];
|
|
28
|
+
if (slot === undefined) {
|
|
29
|
+
slot = new Map();
|
|
30
|
+
cachedParseResults[startOffset] = slot;
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
const cachedResult = slot.get(grammarElement);
|
|
34
|
+
if (cachedResult !== undefined) {
|
|
35
|
+
return cachedResult;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
const parseResult = tryParseUncached(grammarElement, startOffset);
|
|
39
|
+
slot.set(grammarElement, parseResult);
|
|
40
|
+
return parseResult;
|
|
41
|
+
}
|
|
42
|
+
function tryParseUncached(grammarElement, startOffset) {
|
|
43
|
+
switch (grammarElement.type) {
|
|
44
|
+
case 'StringTerminal': {
|
|
45
|
+
const target = grammarElement.content;
|
|
46
|
+
const endOffset = startOffset + target.length;
|
|
47
|
+
if (endOffset > inputLength) {
|
|
48
|
+
updateBestFailedMatchesIfNeeded(grammarElement, startOffset);
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
51
|
+
const substringToMatch = inputString.substring(startOffset, endOffset);
|
|
52
|
+
if (substringToMatch === target) {
|
|
53
|
+
return {
|
|
54
|
+
endOffset,
|
|
55
|
+
nodes: undefined
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
updateBestFailedMatchesIfNeeded(grammarElement, startOffset);
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
case 'PatternTerminal': {
|
|
64
|
+
if (startOffset >= inputLength) {
|
|
65
|
+
updateBestFailedMatchesIfNeeded(grammarElement, startOffset);
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
const substringToMatch = inputString.substring(startOffset);
|
|
69
|
+
const matchResults = grammarElement.regExp.exec(substringToMatch);
|
|
70
|
+
if (matchResults === null) {
|
|
71
|
+
updateBestFailedMatchesIfNeeded(grammarElement, startOffset);
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
const matchStartOffset = startOffset + matchResults.index;
|
|
75
|
+
const matchEndOffset = matchStartOffset + matchResults[0].length;
|
|
76
|
+
let nodes = undefined;
|
|
77
|
+
const groupsIndices = matchResults.indices;
|
|
78
|
+
if (groupsIndices !== undefined) {
|
|
79
|
+
let namedGroupIndicesIdentifiers = undefined;
|
|
80
|
+
if (groupsIndices.groups) {
|
|
81
|
+
namedGroupIndicesIdentifiers = Object.keys(groupsIndices.groups);
|
|
82
|
+
if (namedGroupIndicesIdentifiers.length !== groupsIndices.length - 1) {
|
|
83
|
+
throw new Error(`The regular expression /${grammarElement.regExp.source}/ contains a combination of named and unnamed groups. Due to limitations of the JavaScript RegExp engine, it is impossible to reliably identify the ordering of this combination, please use either all unnamed or named groups, but not both.`);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
const children = [];
|
|
87
|
+
for (let i = 1; i < groupsIndices.length; i++) {
|
|
88
|
+
const groupIndices = groupsIndices[i];
|
|
89
|
+
if (groupIndices === undefined) {
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
92
|
+
const groupStartOffset = startOffset + groupIndices[0];
|
|
93
|
+
const groupEndOffset = startOffset + groupIndices[1];
|
|
94
|
+
children.push({
|
|
95
|
+
name: namedGroupIndicesIdentifiers ? namedGroupIndicesIdentifiers[i - 1] : i.toString(),
|
|
96
|
+
startOffset: groupStartOffset,
|
|
97
|
+
endOffset: groupEndOffset,
|
|
98
|
+
sourceText: inputString.substring(groupStartOffset, groupEndOffset),
|
|
99
|
+
children: undefined
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
nodes = [{
|
|
103
|
+
name: grammarElement.name,
|
|
104
|
+
startOffset: matchStartOffset,
|
|
105
|
+
endOffset: matchEndOffset,
|
|
106
|
+
sourceText: inputString.substring(matchStartOffset, matchEndOffset),
|
|
107
|
+
children
|
|
108
|
+
}];
|
|
109
|
+
}
|
|
110
|
+
const parseResult = {
|
|
111
|
+
endOffset: matchEndOffset,
|
|
112
|
+
nodes
|
|
113
|
+
};
|
|
114
|
+
return parseResult;
|
|
115
|
+
}
|
|
116
|
+
case 'Nonterminal': {
|
|
117
|
+
const result = tryParse(grammarElement.content, startOffset);
|
|
118
|
+
if (result === null) {
|
|
119
|
+
return null;
|
|
120
|
+
}
|
|
121
|
+
let newNode = {
|
|
122
|
+
name: grammarElement.name,
|
|
123
|
+
startOffset,
|
|
124
|
+
endOffset: result.endOffset,
|
|
125
|
+
sourceText: inputString.substring(startOffset, result.endOffset),
|
|
126
|
+
children: result.nodes,
|
|
127
|
+
};
|
|
128
|
+
const newResult = {
|
|
129
|
+
endOffset: result.endOffset,
|
|
130
|
+
nodes: [newNode]
|
|
131
|
+
};
|
|
132
|
+
return newResult;
|
|
133
|
+
}
|
|
134
|
+
case 'Sequence': {
|
|
135
|
+
let successfulResults = [];
|
|
136
|
+
let readOffset = startOffset;
|
|
137
|
+
for (const element of grammarElement.members) {
|
|
138
|
+
const elementResult = tryParse(element, readOffset);
|
|
139
|
+
if (elementResult !== null) {
|
|
140
|
+
successfulResults.push(elementResult);
|
|
141
|
+
readOffset = elementResult.endOffset;
|
|
142
|
+
}
|
|
143
|
+
else if (element.optional === false) {
|
|
144
|
+
return null;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
let nodes = [];
|
|
148
|
+
for (const result of successfulResults) {
|
|
149
|
+
if (result.nodes !== undefined) {
|
|
150
|
+
nodes.push(...result.nodes);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
return {
|
|
154
|
+
endOffset: readOffset,
|
|
155
|
+
nodes: nodes.length > 0 ? nodes : undefined
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
case 'Repetition': {
|
|
159
|
+
let readOffset = startOffset;
|
|
160
|
+
const nodes = [];
|
|
161
|
+
while (true) {
|
|
162
|
+
const result = tryParse(grammarElement.content, readOffset);
|
|
163
|
+
if (result === null) {
|
|
164
|
+
break;
|
|
165
|
+
}
|
|
166
|
+
if (result.nodes !== undefined) {
|
|
167
|
+
nodes.push(...result.nodes);
|
|
168
|
+
}
|
|
169
|
+
readOffset = result.endOffset;
|
|
170
|
+
}
|
|
171
|
+
if (readOffset > startOffset) {
|
|
172
|
+
return {
|
|
173
|
+
endOffset: readOffset,
|
|
174
|
+
nodes: nodes.length > 0 ? nodes : undefined
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
return null;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
case 'Choice': {
|
|
182
|
+
let bestResult = null;
|
|
183
|
+
for (const member of grammarElement.members) {
|
|
184
|
+
const result = tryParse(member, startOffset);
|
|
185
|
+
if (result !== null && (bestResult === null || result.endOffset > bestResult.endOffset)) {
|
|
186
|
+
bestResult = result;
|
|
187
|
+
if (grammarElement.exhaustive === false) {
|
|
188
|
+
break;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
return bestResult;
|
|
193
|
+
}
|
|
194
|
+
default: {
|
|
195
|
+
throw new Error(`Unsupported grammar element type '${grammarElement.type}'.`);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
const result = tryParse(grammar.rootElement, 0);
|
|
200
|
+
const lastNode = result?.nodes?.[result.nodes.length - 1];
|
|
201
|
+
if (lastNode && lastNode.endOffset >= inputLength) {
|
|
202
|
+
return result.nodes;
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
if (bestFailedMatches.length > 0) {
|
|
206
|
+
const possibleMatches = bestFailedMatches.map(match => {
|
|
207
|
+
if (match.type === 'StringTerminal') {
|
|
208
|
+
return `'${match.content}'`;
|
|
209
|
+
}
|
|
210
|
+
else {
|
|
211
|
+
return match.name;
|
|
212
|
+
}
|
|
213
|
+
});
|
|
214
|
+
const possibleMatchesWithoutDuplicates = [...(new Set(possibleMatches))];
|
|
215
|
+
let possibleMatchesString;
|
|
216
|
+
if (possibleMatchesWithoutDuplicates.length > 1) {
|
|
217
|
+
possibleMatchesString = `any of ${possibleMatchesWithoutDuplicates.join(', ')}`;
|
|
218
|
+
}
|
|
219
|
+
else {
|
|
220
|
+
possibleMatchesString = possibleMatchesWithoutDuplicates[0];
|
|
221
|
+
}
|
|
222
|
+
throw new Error(`Failed parsing the input text. Expected ${possibleMatchesString} at position ${bestFailedMatchesOffset}.`);
|
|
223
|
+
}
|
|
224
|
+
else {
|
|
225
|
+
throw new Error(`Failed parsing the input text. Parsed length was ${lastNode?.endOffset ?? 0}. Input length was ${inputLength}.`);
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
//# sourceMappingURL=TopDownParser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TopDownParser.js","sourceRoot":"","sources":["../src/TopDownParser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare const jsonSample1: string;
|
|
2
|
+
export declare const jsonSample2: string;
|
|
3
|
+
export declare const xmlSample1 = "\n\n<menu>\n <popup>\n \t<test value='New'>\n <!--<menuitem value=\"New\" onclick=\"CreateNewDoc()\" />-->\n <menuitem value=\"Open\" onclick=\"OpenDoc()\" />\n <menuitem value=\"Close\" onclick=\"CloseDoc()\" />\n </popup>\n</menu>";
|
|
4
|
+
export declare const xmlSample2 = "\n<!DOCTYPE web-app\n PUBLIC \"-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN\"\n \"http://java.sun.com/j2ee/dtds/web-app_2.2.dtd\">\n\n<menu>\n <header>Adobe SVG Viewer</header>\n <item action=\"Open\" id=\"Open\">Open</item>\n <item action=\"OpenNew\" id=\"OpenNew\">Open New</item>\n <separator/>\n <item action=\"ZoomIn\" id=\"ZoomIn\">Zoom In</item>\n <item action=\"ZoomOut\" id=\"ZoomOut\">Zoom Out</item>\n <item action=\"OriginalView\" id=\"OriginalView\">Original View</item>\n <separator/>\n <item action=\"Quality\" id=\"Quality\">Quality</item>\n <item action=\"Pause\" id=\"Pause\">Pause</item>\n <item action=\"Mute\" id=\"Mute\">Mute</item>\n <separator/>\n <item action=\"Find\" id=\"Find\">Find...</item>\n <item action=\"FindAgain\" id=\"FindAgain\">Find Again</item>\n <item action=\"Copy\" id=\"Copy\">Copy</item>\n <item action=\"CopyAgain\" id=\"CopyAgain\">Copy Again</item>\n <item action=\"CopySVG\" id=\"CopySVG\">Copy SVG</item>\n <item action=\"ViewSVG\" id=\"ViewSVG\">View SVG</item>\n <item action=\"ViewSource\" id=\"ViewSource\">View Source</item>\n <item action=\"SaveAs\" id=\"SaveAs\">Save As</item>\n <separator/>\n <item action=\"Help\" id=\"Help\">Help</item>\n <item action=\"About\" id=\"About\">About Adobe CVG Viewer...</item>\n</menu>";
|
|
5
|
+
export declare const xmlSample3 = "\n<!DOCTYPE web-app\n PUBLIC \"-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN\"\n \"http://java.sun.com/j2ee/dtds/web-app_2.2.dtd\">\n<web-app>\n\t<servlet>\n\t\t<servlet-name>\n cofaxCDS\n </servlet-name>\n\t\t<servlet-class>\n org.cofax.cds.CDSServlet\n </servlet-class>\n\t\t<init-param>\n\t\t\t<param-name>configGlossary:installationAt</param-name>\n\t\t\t<param-value>Philadelphia, PA</param-value>\n\t\t</init-param>\n\t\t<init-param>\n\t\t\t<param-name>configGlossary:adminEmail</param-name>\n\t\t\t<param-value>ksm@pobox.com</param-value>\n\t\t</init-param>\n\t\t<init-param>\n\t\t\t<param-name>configGlossary:poweredBy</param-name>\n\t\t\t<param-value>Cofax</param-value>\n\t\t</init-param>\n\t\t<init-param>\n\t\t\t<param-name>configGlossary:poweredByIcon</param-name>\n\t\t\t<param-value>/images/cofax.gif</param-value>\n\t\t</init-param>\n\t\t<init-param>\n\t\t\t<param-name>configGlossary:staticPath</param-name>\n\t\t\t<param-value>/content/static</param-value>\n\t\t</init-param>\n\t\t<init-param>\n\t\t\t<param-name>templateProcessorClass</param-name>\n\t\t\t<param-value>org.cofax.WysiwygTemplate</param-value>\n\t\t</init-param>\n\t\t<init-param>\n\t\t\t<param-name>templateLoaderClass</param-name>\n\t\t\t<param-value>org.cofax.FilesTemplateLoader</param-value>\n\t\t</init-param>\n\t\t<init-param>\n\t\t\t<param-name>templatePath</param-name>\n\t\t\t<param-value>templates</param-value>\n\t\t</init-param>\n\t\t<init-param>\n\t\t\t<param-name>templateOverridePath</param-name>\n\t\t\t<param-value></param-value>\n\t\t</init-param>\n\t\t<init-param>\n\t\t\t<param-name>defaultListTemplate</param-name>\n\t\t\t<param-value>listTemplate.htm</param-value>\n\t\t</init-param>\n\t\t<init-param>\n\t\t\t<param-name>defaultFileTemplate</param-name>\n\t\t\t<param-value>articleTemplate.htm</param-value>\n\t\t</init-param>\n\t\t<init-param>\n\t\t\t<param-name>useJSP</param-name>\n\t\t\t<param-value>false</param-value>\n\t\t</init-param>\n\t\t<init-param>\n\t\t\t<param-name>jspListTemplate</param-name>\n\t\t\t<param-value>listTemplate.jsp</param-value>\n\t\t</init-param>\n\t\t<init-param>\n\t\t\t<param-name>jspFileTemplate</param-name>\n\t\t\t<param-value>articleTemplate.jsp</param-value>\n\t\t</init-param>\n\t\t<init-param>\n\t\t\t<param-name>cachePackageTagsTrack</param-name>\n\t\t\t<param-value>200</param-value>\n\t\t</init-param>\n\t\t<init-param>\n\t\t\t<param-name>cachePackageTagsStore</param-name>\n\t\t\t<param-value>200</param-value>\n\t\t</init-param>\n\t\t<init-param>\n\t\t\t<param-name>cachePackageTagsRefresh</param-name>\n\t\t\t<param-value>60</param-value>\n\t\t</init-param>\n\t\t<init-param>\n\t\t\t<param-name>cacheTemplatesTrack</param-name>\n\t\t\t<param-value>100</param-value>\n\t\t</init-param>\n\t\t<init-param>\n\t\t\t<param-name>cacheTemplatesStore</param-name>\n\t\t\t<param-value>50</param-value>\n\t\t</init-param>\n\t\t<init-param>\n\t\t\t<param-name>cacheTemplatesRefresh</param-name>\n\t\t\t<param-value>15</param-value>\n\t\t</init-param>\n\t\t<init-param>\n\t\t\t<param-name>cachePagesTrack</param-name>\n\t\t\t<param-value>200</param-value>\n\t\t</init-param>\n\t\t<init-param>\n\t\t\t<param-name>cachePagesStore</param-name>\n\t\t\t<param-value>100</param-value>\n\t\t</init-param>\n\t\t<init-param>\n\t\t\t<param-name>cachePagesRefresh</param-name>\n\t\t\t<param-value>10</param-value>\n\t\t</init-param>\n\t\t<init-param>\n\t\t\t<param-name>cachePagesDirtyRead</param-name>\n\t\t\t<param-value>10</param-value>\n\t\t</init-param>\n\t\t<init-param>\n\t\t\t<param-name>searchEngineListTemplate</param-name>\n\t\t\t<param-value>forSearchEnginesList.htm</param-value>\n\t\t</init-param>\n\t\t<init-param>\n\t\t\t<param-name>searchEngineFileTemplate</param-name>\n\t\t\t<param-value>forSearchEngines.htm</param-value>\n\t\t</init-param>\n\t\t<init-param>\n\t\t\t<param-name>searchEngineRobotsDb</param-name>\n\t\t\t<param-value>WEB-INF/robots.db</param-value>\n\t\t</init-param>\n\t\t<init-param>\n\t\t\t<param-name>useDataStore</param-name>\n\t\t\t<param-value>true</param-value>\n\t\t</init-param>\n\t\t<init-param>\n\t\t\t<param-name>dataStoreClass</param-name>\n\t\t\t<param-value>org.cofax.SqlDataStore</param-value>\n\t\t</init-param>\n\t\t<init-param>\n\t\t\t<param-name>redirectionClass</param-name>\n\t\t\t<param-value>org.cofax.SqlRedirection</param-value>\n\t\t</init-param>\n\t\t<init-param>\n\t\t\t<param-name>dataStoreName</param-name>\n\t\t\t<param-value>cofax</param-value>\n\t\t</init-param>\n\t\t<init-param>\n\t\t\t<param-name>dataStoreDriver</param-name>\n\t\t\t<param-value>com.microsoft.jdbc.sqlserver.SQLServerDriver</param-value>\n\t\t</init-param>\n\t\t<init-param>\n\t\t\t<param-name>dataStoreUrl</param-name>\n\t\t\t<param-value>jdbc:microsoft:sqlserver://LOCALHOST:1433;DatabaseName=goon</param-value>\n\t\t</init-param>\n\t\t<init-param>\n\t\t\t<param-name>dataStoreUser</param-name>\n\t\t\t<param-value>sa</param-value>\n\t\t</init-param>\n\t\t<init-param>\n\t\t\t<param-name>dataStorePassword</param-name>\n\t\t\t<param-value></param-value>\n\t\t</init-param>\n\t\t<init-param>\n\t\t\t<param-name>dataStoreTestQuery</param-name>\n\t\t\t<param-value>SET NOCOUNT ON;select test='test';</param-value>\n\t\t</init-param>\n\t\t<init-param>\n\t\t\t<param-name>dataStoreLogFile</param-name>\n\t\t\t<param-value>/usr/local/tomcat/logs/datastore.log</param-value>\n\t\t</init-param>\n\t\t<init-param>\n\t\t\t<param-name>dataStoreInitConns</param-name>\n\t\t\t<param-value>10</param-value>\n\t\t</init-param>\n\t\t<init-param>\n\t\t\t<param-name>dataStoreMaxConns</param-name>\n\t\t\t<param-value>100</param-value>\n\t\t</init-param>\n\t\t<init-param>\n\t\t\t<param-name>dataStoreConnUsageLimit</param-name>\n\t\t\t<param-value>100</param-value>\n\t\t</init-param>\n\t\t<init-param>\n\t\t\t<param-name>dataStoreLogLevel</param-name>\n\t\t\t<param-value>debug</param-value>\n\t\t</init-param>\n\t\t<init-param>\n\t\t\t<param-name>maxUrlLength</param-name>\n\t\t\t<param-value>500</param-value>\n\t\t</init-param>\n\t</servlet>\n\t<servlet>\n\t\t<servlet-name>\n cofaxEmail\n </servlet-name>\n\t\t<servlet-class>\n org.cofax.cds.EmailServlet\n </servlet-class>\n\t\t<init-param>\n\t\t\t<param-name>mailHost</param-name>\n\t\t\t<param-value>mail1</param-value>\n\t\t</init-param>\n\t\t<init-param>\n\t\t\t<param-name>mailHostOverride</param-name>\n\t\t\t<param-value>mail2</param-value>\n\t\t</init-param>\n\t</servlet>\n\t<servlet>\n\t\t<servlet-name>\n cofaxAdmin\n </servlet-name>\n\t\t<servlet-class>\n org.cofax.cds.AdminServlet\n </servlet-class>\n\t</servlet>\n\t<servlet>\n\t\t<servlet-name>\n fileServlet\n </servlet-name>\n\t\t<servlet-class>\n org.cofax.cds.FileServlet\n </servlet-class>\n\t</servlet>\n\t<servlet>\n\t\t<servlet-name>\n cofaxTools\n </servlet-name>\n\t\t<servlet-class>\n org.cofax.cms.CofaxToolsServlet\n </servlet-class>\n\t\t<init-param>\n\t\t\t<param-name>templatePath</param-name>\n\t\t\t<param-value>toolstemplates/</param-value>\n\t\t</init-param>\n\t\t<init-param>\n\t\t\t<param-name>log</param-name>\n\t\t\t<param-value>1</param-value>\n\t\t</init-param>\n\t\t<init-param>\n\t\t\t<param-name>logLocation</param-name>\n\t\t\t<param-value>/usr/local/tomcat/logs/CofaxTools.log</param-value>\n\t\t</init-param>\n\t\t<init-param>\n\t\t\t<param-name>logMaxSize</param-name>\n\t\t\t<param-value></param-value>\n\t\t</init-param>\n\t\t<init-param>\n\t\t\t<param-name>dataLog</param-name>\n\t\t\t<param-value>1</param-value>\n\t\t</init-param>\n\t\t<init-param>\n\t\t\t<param-name>dataLogLocation</param-name>\n\t\t\t<param-value>/usr/local/tomcat/logs/dataLog.log</param-value>\n\t\t</init-param>\n\t\t<init-param>\n\t\t\t<param-name>dataLogMaxSize</param-name>\n\t\t\t<param-value></param-value>\n\t\t</init-param>\n\t\t<init-param>\n\t\t\t<param-name>removePageCache</param-name>\n\t\t\t<param-value>/content/admin/remove?cache=pages&id=</param-value>\n\t\t</init-param>\n\t\t<init-param>\n\t\t\t<param-name>removeTemplateCache</param-name>\n\t\t\t<param-value>/content/admin/remove?cache=templates&id=</param-value>\n\t\t</init-param>\n\t\t<init-param>\n\t\t\t<param-name>fileTransferFolder</param-name>\n\t\t\t<param-value>/usr/local/tomcat/webapps/content/fileTransferFolder</param-value>\n\t\t</init-param>\n\t\t<init-param>\n\t\t\t<param-name>lookInContext</param-name>\n\t\t\t<param-value>1</param-value>\n\t\t</init-param>\n\t\t<init-param>\n\t\t\t<param-name>adminGroupID</param-name>\n\t\t\t<param-value>4</param-value>\n\t\t</init-param>\n\t\t<init-param>\n\t\t\t<param-name>betaServer</param-name>\n\t\t\t<param-value>true</param-value>\n\t\t</init-param>\n\t</servlet>\n\t<servlet-mapping>\n\t\t<servlet-name>\n cofaxCDS\n </servlet-name>\n\t\t<url-pattern>\n /\n </url-pattern>\n\t</servlet-mapping>\n\t<servlet-mapping>\n\t\t<servlet-name>\n cofaxEmail\n </servlet-name>\n\t\t<url-pattern>\n /cofaxutil/aemail/*\n </url-pattern>\n\t</servlet-mapping>\n\t<servlet-mapping>\n\t\t<servlet-name>\n cofaxAdmin\n </servlet-name>\n\t\t<url-pattern>\n /admin/*\n </url-pattern>\n\t</servlet-mapping>\n\t<servlet-mapping>\n\t\t<servlet-name>\n fileServlet\n </servlet-name>\n\t\t<url-pattern>\n /static/*\n </url-pattern>\n\t</servlet-mapping>\n\t<servlet-mapping>\n\t\t<servlet-name>\n cofaxTools\n </servlet-name>\n\t\t<url-pattern>\n /tools/*\n </url-pattern>\n\t</servlet-mapping>\n\t<taglib>\n\t\t<taglib-uri>cofax.tld</taglib-uri>\n\t\t<taglib-location>/WEB-INF/tlds/cofax.tld</taglib-location>\n\t</taglib>\n</web-app>\n";
|