db-modeling-markdown 2.0.1 → 2.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/README.md +168 -164
- package/dist/dialects/core/dbImportProvider.d.ts +5 -5
- package/dist/dialects/core/dbImportProvider.js +6 -6
- package/dist/dialects/core/dbProvider.d.ts +34 -34
- package/dist/dialects/core/dbProvider.js +119 -119
- package/dist/dialects/core/dbProvider.js.map +1 -1
- package/dist/dialects/core/dbUtils.d.ts +35 -35
- package/dist/dialects/core/dbUtils.js +157 -158
- package/dist/dialects/core/dbUtils.js.map +1 -1
- package/dist/dialects/core/providerFactory.d.ts +7 -7
- package/dist/dialects/core/providerFactory.js +63 -63
- package/dist/dialects/core/providerFactory.js.map +1 -1
- package/dist/dialects/db2/db2Provider.d.ts +19 -19
- package/dist/dialects/db2/db2Provider.js +185 -186
- package/dist/dialects/db2/db2Provider.js.map +1 -1
- package/dist/dialects/mariadb/mariaDbImportProvider.d.ts +19 -19
- package/dist/dialects/mariadb/mariaDbImportProvider.js +260 -253
- package/dist/dialects/mariadb/mariaDbImportProvider.js.map +1 -1
- package/dist/dialects/mariadb/mariaDbProvider.d.ts +18 -18
- package/dist/dialects/mariadb/mariaDbProvider.js +152 -153
- package/dist/dialects/mariadb/mariaDbProvider.js.map +1 -1
- package/dist/dialects/mariadb/mariaDbUtil.d.ts +6 -6
- package/dist/dialects/mariadb/mariaDbUtil.js +22 -22
- package/dist/dialects/mariadb/mariaDbUtil.js.map +1 -1
- package/dist/dialects/mssql/msSqlProvider.d.ts +21 -21
- package/dist/dialects/mssql/msSqlProvider.js +264 -265
- package/dist/dialects/mssql/msSqlProvider.js.map +1 -1
- package/dist/dialects/mysql/mySqlImportProvider.d.ts +3 -3
- package/dist/dialects/mysql/mySqlImportProvider.js +7 -7
- package/dist/dialects/mysql/mySqlProvider.d.ts +3 -3
- package/dist/dialects/mysql/mySqlProvider.js +7 -7
- package/dist/dialects/oracle/oracleProvider.d.ts +35 -35
- package/dist/dialects/oracle/oracleProvider.js +327 -327
- package/dist/dialects/oracle/oracleProvider.js.map +1 -1
- package/dist/dialects/postgresql/postgreSqlProvider.d.ts +19 -19
- package/dist/dialects/postgresql/postgreSqlProvider.js +172 -173
- package/dist/dialects/postgresql/postgreSqlProvider.js.map +1 -1
- package/dist/dialects/sqlite/sqliteSqlProvider.d.ts +23 -23
- package/dist/dialects/sqlite/sqliteSqlProvider.js +147 -148
- package/dist/dialects/sqlite/sqliteSqlProvider.js.map +1 -1
- package/dist/index.d.ts +10 -10
- package/dist/index.js +9 -9
- package/dist/lib/code-flow/codeFlow.d.ts +37 -37
- package/dist/lib/code-flow/codeFlow.js +61 -61
- package/dist/lib/markdown-object/markdownModel.d.ts +14 -14
- package/dist/lib/markdown-object/markdownModel.js +12 -12
- package/dist/lib/markdown-object/markdownModel.js.map +1 -1
- package/dist/lib/markdown-object/markdownReader.d.ts +39 -39
- package/dist/lib/markdown-object/markdownReader.js +261 -258
- package/dist/lib/markdown-object/markdownReader.js.map +1 -1
- package/dist/lib/markdown-object/markdownWriter.d.ts +36 -36
- package/dist/lib/markdown-object/markdownWriter.js +224 -223
- package/dist/lib/markdown-object/markdownWriter.js.map +1 -1
- package/dist/lib/markdown-object/readerContext.d.ts +12 -12
- package/dist/lib/markdown-object/readerContext.js +48 -48
- package/dist/lib/markdown-object/readerContext.js.map +1 -1
- package/dist/lib/utils/fileHelper.d.ts +14 -15
- package/dist/lib/utils/fileHelper.js +58 -57
- package/dist/lib/utils/fileHelper.js.map +1 -1
- package/dist/lib/utils/logger.d.ts +9 -9
- package/dist/lib/utils/logger.js +60 -60
- package/dist/lib/utils/logger.js.map +1 -1
- package/dist/lib/utils/markdownParser.d.ts +22 -22
- package/dist/lib/utils/markdownParser.js +99 -95
- package/dist/lib/utils/markdownParser.js.map +1 -1
- package/dist/lib/utils/sqlHelper.d.ts +3 -3
- package/dist/lib/utils/sqlHelper.js +23 -23
- package/dist/lib/utils/sqlHelper.js.map +1 -1
- package/dist/lib/utils/systemHelper.d.ts +2 -2
- package/dist/lib/utils/systemHelper.js +6 -6
- package/dist/lib/utils/textFileReader.d.ts +25 -25
- package/dist/lib/utils/textFileReader.js +57 -57
- package/dist/lib/utils/textFileReader.js.map +1 -1
- package/dist/lib/utils/textHelper.d.ts +21 -21
- package/dist/lib/utils/textHelper.js +75 -71
- package/dist/lib/utils/textHelper.js.map +1 -1
- package/dist/models/databaseTypes.d.ts +33 -33
- package/dist/models/databaseTypes.js +37 -37
- package/dist/models/databaseTypes.js.map +1 -1
- package/dist/models/dbColumn.d.ts +43 -43
- package/dist/models/dbColumn.js +2 -2
- package/dist/models/dbDiffModel.d.ts +43 -43
- package/dist/models/dbDiffModel.js +2 -2
- package/dist/models/dbForeignKey.d.ts +33 -33
- package/dist/models/dbForeignKey.js +2 -2
- package/dist/models/dbIndex.d.ts +28 -28
- package/dist/models/dbIndex.js +2 -2
- package/dist/models/dbIndexType.d.ts +8 -8
- package/dist/models/dbIndexType.js +12 -12
- package/dist/models/dbIndexType.js.map +1 -1
- package/dist/models/dbModel.d.ts +10 -10
- package/dist/models/dbModel.js +2 -2
- package/dist/models/dbPrimaryKey.d.ts +16 -16
- package/dist/models/dbPrimaryKey.js +2 -2
- package/dist/models/dbTable.d.ts +49 -49
- package/dist/models/dbTable.js +2 -2
- package/dist/models/dbTableMarkdown.d.ts +35 -34
- package/dist/models/dbTableMarkdown.js +2 -2
- package/dist/resources/mariadb/procAppUpgradeDB.sql +164 -0
- package/dist/resources/mariadb/sql-create-table-fk.njk +10 -0
- package/dist/resources/mariadb/sql-create-table.njk +12 -0
- package/dist/resources/mariadb/sql-create-tables.njk +9 -0
- package/dist/resources/mariadb/sql-drop-tables.njk +10 -0
- package/dist/resources/mariadb/sql-drop-then-create-tables.njk +4 -0
- package/dist/resources/mariadb/sql-upgrade-new-table.njk +15 -0
- package/dist/resources/mariadb/sql-upgrade-table-fk.njk +10 -0
- package/dist/resources/mariadb/sql-upgrade-table.njk +41 -0
- package/dist/resources/mariadb/sql-upgrade-tables.njk +19 -0
- package/dist/services/dbOptions.d.ts +35 -35
- package/dist/services/dbOptions.js +17 -17
- package/dist/services/dbmOptions.d.ts +28 -28
- package/dist/services/dbmOptions.js +34 -34
- package/dist/services/dbmService.d.ts +87 -87
- package/dist/services/dbmService.js +244 -246
- package/dist/services/dbmService.js.map +1 -1
- package/package.json +29 -34
- package/CHANGELOG.md +0 -81
- package/CONTRIBUTING.md +0 -82
|
@@ -1,39 +1,39 @@
|
|
|
1
|
-
|
|
2
|
-
/**
|
|
3
|
-
* Main functions:
|
|
4
|
-
* read a markdown file into an object
|
|
5
|
-
*/
|
|
6
|
-
export declare class MarkdownReader {
|
|
7
|
-
path: string;
|
|
8
|
-
constructor(path: string);
|
|
9
|
-
private static createHeader;
|
|
10
|
-
private static createListItem;
|
|
11
|
-
private static handleHeader;
|
|
12
|
-
private static handleList;
|
|
13
|
-
private static handleTable;
|
|
14
|
-
private static isArrayTable;
|
|
15
|
-
private static mergeTableRow;
|
|
16
|
-
static normalize(value: string, isPropertyName?: boolean): ObjectValueType;
|
|
17
|
-
private static normalizeTableRow;
|
|
18
|
-
private static readLine;
|
|
19
|
-
toObject(): any;
|
|
20
|
-
/**
|
|
21
|
-
* convert the markdown object to the model object
|
|
22
|
-
* @param table the markdown object
|
|
23
|
-
* @returns the dbTable object
|
|
24
|
-
*/
|
|
25
|
-
private static upgrade;
|
|
26
|
-
/**
|
|
27
|
-
* Version 1
|
|
28
|
-
* @param table the markdown object
|
|
29
|
-
* @returns the dbTable object
|
|
30
|
-
*/
|
|
31
|
-
private static upgradeV1;
|
|
32
|
-
/**
|
|
33
|
-
* Version 2
|
|
34
|
-
* @param table the markdown object
|
|
35
|
-
* @returns the dbTable object
|
|
36
|
-
*/
|
|
37
|
-
private static upgradeV2;
|
|
38
|
-
}
|
|
39
|
-
export {};
|
|
1
|
+
type ObjectValueType = null | string | number | boolean;
|
|
2
|
+
/**
|
|
3
|
+
* Main functions:
|
|
4
|
+
* read a markdown file into an object
|
|
5
|
+
*/
|
|
6
|
+
export declare class MarkdownReader {
|
|
7
|
+
path: string;
|
|
8
|
+
constructor(path: string);
|
|
9
|
+
private static createHeader;
|
|
10
|
+
private static createListItem;
|
|
11
|
+
private static handleHeader;
|
|
12
|
+
private static handleList;
|
|
13
|
+
private static handleTable;
|
|
14
|
+
private static isArrayTable;
|
|
15
|
+
private static mergeTableRow;
|
|
16
|
+
static normalize(value: string, isPropertyName?: boolean): ObjectValueType;
|
|
17
|
+
private static normalizeTableRow;
|
|
18
|
+
private static readLine;
|
|
19
|
+
toObject(): any;
|
|
20
|
+
/**
|
|
21
|
+
* convert the markdown object to the model object
|
|
22
|
+
* @param table the markdown object
|
|
23
|
+
* @returns the dbTable object
|
|
24
|
+
*/
|
|
25
|
+
private static upgrade;
|
|
26
|
+
/**
|
|
27
|
+
* Version 1
|
|
28
|
+
* @param table the markdown object
|
|
29
|
+
* @returns the dbTable object
|
|
30
|
+
*/
|
|
31
|
+
private static upgradeV1;
|
|
32
|
+
/**
|
|
33
|
+
* Version 2
|
|
34
|
+
* @param table the markdown object
|
|
35
|
+
* @returns the dbTable object
|
|
36
|
+
*/
|
|
37
|
+
private static upgradeV2;
|
|
38
|
+
}
|
|
39
|
+
export {};
|
|
@@ -1,259 +1,262 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.MarkdownReader = void 0;
|
|
4
|
-
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
const
|
|
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
|
-
const
|
|
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
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
return
|
|
196
|
-
}
|
|
197
|
-
static
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MarkdownReader = void 0;
|
|
4
|
+
/* eslint-disable no-restricted-syntax */
|
|
5
|
+
const markdownParser_1 = require("../utils/markdownParser");
|
|
6
|
+
const textFileReader_1 = require("../utils/textFileReader");
|
|
7
|
+
const textHelper_1 = require("../utils/textHelper");
|
|
8
|
+
const markdownModel_1 = require("./markdownModel");
|
|
9
|
+
const readerContext_1 = require("./readerContext");
|
|
10
|
+
/**
|
|
11
|
+
* Main functions:
|
|
12
|
+
* read a markdown file into an object
|
|
13
|
+
*/
|
|
14
|
+
class MarkdownReader {
|
|
15
|
+
constructor(path) {
|
|
16
|
+
this.path = path;
|
|
17
|
+
}
|
|
18
|
+
static createHeader(array, context) {
|
|
19
|
+
const element = {
|
|
20
|
+
type: markdownModel_1.MarkdownElementType.header,
|
|
21
|
+
level: array[1].length,
|
|
22
|
+
name: array[2],
|
|
23
|
+
};
|
|
24
|
+
if (element.level <= 1) {
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
if (element.level <= context.currentLevel) {
|
|
28
|
+
context.pop(element.level - 1);
|
|
29
|
+
}
|
|
30
|
+
let propertyName = MarkdownReader.normalize(element.name, true);
|
|
31
|
+
// case: the property is an array
|
|
32
|
+
if (propertyName.endsWith('[]')) {
|
|
33
|
+
propertyName = propertyName.substring(0, propertyName.length - 2).trim();
|
|
34
|
+
}
|
|
35
|
+
// generate the property
|
|
36
|
+
context.push(propertyName, null);
|
|
37
|
+
}
|
|
38
|
+
static createListItem(array, context) {
|
|
39
|
+
const element = {
|
|
40
|
+
type: markdownModel_1.MarkdownElementType.listItem,
|
|
41
|
+
level: 0,
|
|
42
|
+
name: array[1],
|
|
43
|
+
value: array[2],
|
|
44
|
+
};
|
|
45
|
+
// TODO: case: multiple lines value
|
|
46
|
+
context.setCurrentProperty(MarkdownReader.normalize(element.name, true), MarkdownReader.normalize(element.value));
|
|
47
|
+
}
|
|
48
|
+
static handleHeader(line, reader, context) {
|
|
49
|
+
if (!line) {
|
|
50
|
+
return true;
|
|
51
|
+
}
|
|
52
|
+
const result = markdownParser_1.MarkdownParser.matchHeader(line);
|
|
53
|
+
if (result) {
|
|
54
|
+
MarkdownReader.createHeader(result, context);
|
|
55
|
+
return true;
|
|
56
|
+
}
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
static handleList(line, reader, context) {
|
|
60
|
+
if (!line) {
|
|
61
|
+
return true;
|
|
62
|
+
}
|
|
63
|
+
const result = markdownParser_1.MarkdownParser.matchListItem(line);
|
|
64
|
+
if (result) {
|
|
65
|
+
MarkdownReader.createListItem(result, context);
|
|
66
|
+
return true;
|
|
67
|
+
}
|
|
68
|
+
return false;
|
|
69
|
+
}
|
|
70
|
+
static handleTable(line, reader, context) {
|
|
71
|
+
if (!line) {
|
|
72
|
+
// case: end of file
|
|
73
|
+
return true;
|
|
74
|
+
}
|
|
75
|
+
let isValid = markdownParser_1.MarkdownParser.testTableHeader(line);
|
|
76
|
+
if (!isValid) {
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
// check if the next line is table line row
|
|
80
|
+
const headerLine = line;
|
|
81
|
+
let dataLine = reader.peak();
|
|
82
|
+
if (!dataLine) {
|
|
83
|
+
// case: end of file
|
|
84
|
+
return true;
|
|
85
|
+
}
|
|
86
|
+
isValid = markdownParser_1.MarkdownParser.testTableLine(dataLine);
|
|
87
|
+
if (!isValid) {
|
|
88
|
+
return false;
|
|
89
|
+
}
|
|
90
|
+
reader.move();
|
|
91
|
+
context.current = [];
|
|
92
|
+
const headers = MarkdownReader.normalizeTableRow(headerLine, true);
|
|
93
|
+
const isArray = MarkdownReader.isArrayTable(headers);
|
|
94
|
+
// now: it is a table, read table rows
|
|
95
|
+
while (reader.hasMore(1)) {
|
|
96
|
+
dataLine = reader.peak().trim();
|
|
97
|
+
if (!dataLine) {
|
|
98
|
+
// case: end of file
|
|
99
|
+
return true;
|
|
100
|
+
}
|
|
101
|
+
isValid = markdownParser_1.MarkdownParser.testTableRow(dataLine);
|
|
102
|
+
if (!isValid) {
|
|
103
|
+
// true: indicate we use these read lines
|
|
104
|
+
return true;
|
|
105
|
+
}
|
|
106
|
+
reader.move();
|
|
107
|
+
// read a data row
|
|
108
|
+
const cells = MarkdownReader.normalizeTableRow(dataLine);
|
|
109
|
+
if (isArray) {
|
|
110
|
+
if (!context.current) {
|
|
111
|
+
context.current = [];
|
|
112
|
+
}
|
|
113
|
+
context.current.push(cells);
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
// data row -> data row object
|
|
117
|
+
const rowObject = {};
|
|
118
|
+
headers.some((header, index) => {
|
|
119
|
+
if (index >= cells.length) {
|
|
120
|
+
return true;
|
|
121
|
+
}
|
|
122
|
+
rowObject[header] = cells[index];
|
|
123
|
+
return false;
|
|
124
|
+
});
|
|
125
|
+
// put into the result
|
|
126
|
+
if (!MarkdownReader.mergeTableRow(headers, rowObject, context)) {
|
|
127
|
+
context.current.push(rowObject);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
return false;
|
|
132
|
+
}
|
|
133
|
+
static isArrayTable(headers) {
|
|
134
|
+
for (const element of headers) {
|
|
135
|
+
if (element.length > 0) {
|
|
136
|
+
return false;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
return true;
|
|
140
|
+
}
|
|
141
|
+
static mergeTableRow(headers, rowObject, context) {
|
|
142
|
+
if (context.current.length === 0 ||
|
|
143
|
+
rowObject[headers[0]] !== '' ||
|
|
144
|
+
rowObject[headers[1]] !== '') {
|
|
145
|
+
return false;
|
|
146
|
+
}
|
|
147
|
+
const lastObject = context.current[context.current.length - 1];
|
|
148
|
+
headers.forEach((header) => {
|
|
149
|
+
const prop = rowObject[header];
|
|
150
|
+
if (prop) {
|
|
151
|
+
// TODO: merge with \r\n
|
|
152
|
+
lastObject[header] = `${lastObject[header]} ${prop}`;
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
return true;
|
|
156
|
+
}
|
|
157
|
+
static normalize(value, isPropertyName = false) {
|
|
158
|
+
if (!value) {
|
|
159
|
+
return value;
|
|
160
|
+
}
|
|
161
|
+
let newValue = textHelper_1.TextHelper.decodeMarkdown(value.trim());
|
|
162
|
+
// case: inline code
|
|
163
|
+
if (newValue.length >= 2 && newValue[0] === '`' && newValue[newValue.length - 1] === '`') {
|
|
164
|
+
const blockValue = newValue.substring(1, newValue.length - 1);
|
|
165
|
+
if (!isPropertyName) {
|
|
166
|
+
const lowerValue = blockValue.toLocaleLowerCase();
|
|
167
|
+
if (lowerValue === 'yes' || lowerValue === 'true') {
|
|
168
|
+
newValue = true;
|
|
169
|
+
}
|
|
170
|
+
else if (lowerValue === 'no' || lowerValue === 'false') {
|
|
171
|
+
newValue = false;
|
|
172
|
+
}
|
|
173
|
+
else if (lowerValue === 'null') {
|
|
174
|
+
newValue = null;
|
|
175
|
+
}
|
|
176
|
+
else {
|
|
177
|
+
const testValue = parseFloat(blockValue);
|
|
178
|
+
// eslint-disable-next-line no-restricted-globals
|
|
179
|
+
if (!isNaN(testValue)) {
|
|
180
|
+
newValue = testValue;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
else {
|
|
185
|
+
newValue = newValue.substring(1, newValue.length - 1);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
// case: produce a good property name
|
|
189
|
+
if (isPropertyName && typeof newValue === 'string' && newValue.length > 0) {
|
|
190
|
+
// case: remove spaces
|
|
191
|
+
newValue = newValue.replace(' ', '');
|
|
192
|
+
// case: camelCase
|
|
193
|
+
newValue = newValue[0].toLocaleLowerCase() + newValue.substr(1, newValue.length);
|
|
194
|
+
}
|
|
195
|
+
return newValue;
|
|
196
|
+
}
|
|
197
|
+
static normalizeTableRow(line, isName = false) {
|
|
198
|
+
const values = markdownParser_1.MarkdownParser.splitTableRowToCells(line);
|
|
199
|
+
return values.map((value) => MarkdownReader.normalize(value, isName));
|
|
200
|
+
}
|
|
201
|
+
static readLine(line, reader, context) {
|
|
202
|
+
if (MarkdownReader.handleHeader(line, reader, context)) {
|
|
203
|
+
return;
|
|
204
|
+
}
|
|
205
|
+
if (MarkdownReader.handleList(line, reader, context)) {
|
|
206
|
+
return;
|
|
207
|
+
}
|
|
208
|
+
MarkdownReader.handleTable(line, reader, context);
|
|
209
|
+
}
|
|
210
|
+
toObject() {
|
|
211
|
+
const reader = new textFileReader_1.TextFileReader();
|
|
212
|
+
const context = new readerContext_1.ReadContext();
|
|
213
|
+
reader.open(this.path);
|
|
214
|
+
while (reader.hasMore()) {
|
|
215
|
+
MarkdownReader.readLine(reader.read().trim(), reader, context);
|
|
216
|
+
}
|
|
217
|
+
return MarkdownReader.upgrade(context.root);
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* convert the markdown object to the model object
|
|
221
|
+
* @param table the markdown object
|
|
222
|
+
* @returns the dbTable object
|
|
223
|
+
*/
|
|
224
|
+
static upgrade(table) {
|
|
225
|
+
if (table.name) {
|
|
226
|
+
return MarkdownReader.upgradeV1(table);
|
|
227
|
+
}
|
|
228
|
+
return MarkdownReader.upgradeV2(table);
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Version 1
|
|
232
|
+
* @param table the markdown object
|
|
233
|
+
* @returns the dbTable object
|
|
234
|
+
*/
|
|
235
|
+
static upgradeV1(table) {
|
|
236
|
+
return {
|
|
237
|
+
name: table.name,
|
|
238
|
+
comment: table.comment,
|
|
239
|
+
primaryKey: table.primaryKey,
|
|
240
|
+
indexes: table.indexes || [],
|
|
241
|
+
foreignKeys: table.foreignKeys || [],
|
|
242
|
+
columns: table.columns || [],
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Version 2
|
|
247
|
+
* @param table the markdown object
|
|
248
|
+
* @returns the dbTable object
|
|
249
|
+
*/
|
|
250
|
+
static upgradeV2(table) {
|
|
251
|
+
const basic = table.table && table.table.length > 0 ? table.table[0] : undefined;
|
|
252
|
+
return {
|
|
253
|
+
...basic,
|
|
254
|
+
primaryKey: table.primaryKey?.length > 0 ? table.primaryKey[0] : undefined,
|
|
255
|
+
indexes: table.indexes || [],
|
|
256
|
+
foreignKeys: table.foreignKeys || [],
|
|
257
|
+
columns: table.columns || [],
|
|
258
|
+
};
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
exports.MarkdownReader = MarkdownReader;
|
|
259
262
|
//# sourceMappingURL=markdownReader.js.map
|