gedcom.json 1.0.3 → 1.0.4
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 +2 -1
- package/dist/ToJSON/console.js +5 -0
- package/dist/ToJSON/console.js.map +1 -1
- package/dist/ToJSON/models/Parsing.js +3 -3
- package/dist/ToJSON/models/Parsing.js.map +1 -1
- package/dist/ToJSON/models/ParsingOptions.js +6 -0
- package/dist/ToJSON/models/ParsingOptions.js.map +1 -1
- package/dist/ToJSON/parsing/parsing.js +31 -4
- package/dist/ToJSON/parsing/parsing.js.map +1 -1
- package/dist/ToJSON/parsing/processLine.js +1 -1
- package/dist/ToJSON/parsing/processLine.js.map +1 -1
- package/package.json +2 -1
- package/src/ToJSON/console.ts +6 -0
- package/src/ToJSON/models/Parsing.ts +3 -3
- package/src/ToJSON/models/ParsingOptions.ts +9 -0
- package/src/ToJSON/parsing/parsing.ts +55 -6
- package/src/ToJSON/parsing/processLine.ts +1 -1
- package/test.json +92928 -0
package/README.md
CHANGED
|
@@ -31,7 +31,7 @@ I am aware that there are already several parsers for the gedcom format. However
|
|
|
31
31
|
|
|
32
32
|
##### Via commandline
|
|
33
33
|
|
|
34
|
-
Just run npx ts-node src/
|
|
34
|
+
Just run npx ts-node src/console.ts with the wanted flags. Eg if you run "npm run demo:JSON" it will execute "ts-node src/console.ts --path 'examples/simpsons.get'" and will print out the Simpsons GEDCOM examplke file as JSON object in the console. With "npm run demoFile:JSON" it will do the same but prints the JSON object in a 'test.json' file.
|
|
35
35
|
|
|
36
36
|
| Flag | Description |
|
|
37
37
|
| ---------------- | ------------------------------------------------------------ |
|
|
@@ -40,6 +40,7 @@ Just run npx ts-node src/index.ts with the wanted flags. Eg if you run "npm run
|
|
|
40
40
|
| --out *xxx.json* | File path to print into |
|
|
41
41
|
| --path *xxx.ged* | Set the path to the GEDCOM file |
|
|
42
42
|
| --silent | Don't print anything to the console |
|
|
43
|
+
| --showProgress | Print the progress during processing the file |
|
|
43
44
|
|
|
44
45
|
##### Via Node or JS
|
|
45
46
|
|
package/dist/ToJSON/console.js
CHANGED
|
@@ -14,6 +14,11 @@ function Convert(argv) {
|
|
|
14
14
|
if (argv.opt) {
|
|
15
15
|
options.SetConfigFile(argv.opt);
|
|
16
16
|
}
|
|
17
|
+
if (argv.showProgress) {
|
|
18
|
+
options.SetProgressFunction((linesCount, lineNumber) => {
|
|
19
|
+
process.stdout.write(`\rProgress: parsing line ${lineNumber} from ${linesCount}`);
|
|
20
|
+
});
|
|
21
|
+
}
|
|
17
22
|
let silent = false;
|
|
18
23
|
if (argv.silent) {
|
|
19
24
|
silent = true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"console.js","sourceRoot":"","sources":["../../src/ToJSON/console.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"console.js","sourceRoot":"","sources":["../../src/ToJSON/console.ts"],"names":[],"mappings":";;;;;;AAAA,+DAAuC;AACvC,6EAAqD;AAErD,SAAgB,OAAO,CAAC,IAAQ;IAC5B,IAAI,OAAO,GAAG,IAAI,wBAAc,EAAE,CAAC;IAEnC,IAAI,IAAI,CAAC,IAAI,EAAE;QACX,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,IAAc,CAAC,CAAC;KAC5C;IAED,IAAI,IAAI,CAAC,GAAG,EAAE;QACV,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,GAAa,CAAC,CAAC;KAC7C;IAED,IAAI,IAAI,CAAC,YAAY,EAAE;QACnB,OAAO,CAAC,mBAAmB,CAAC,CAAC,UAAkB,EAAE,UAAiB,EAAE,EAAE;YAClE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,4BAA4B,UAAU,SAAS,UAAU,EAAE,CAAC,CAAC;QACtF,CAAC,CAAC,CAAC;KACN;IAED,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,IAAI,CAAC,MAAM,EAAE;QACb,MAAM,GAAG,IAAI,CAAC;KACjB;IAED,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,IAAI,IAAI,CAAC,SAAS,EAAE;QAChB,SAAS,GAAG,IAAI,CAAC;KACpB;IAED,IAAI,KAAK,GAAG,IAAI,iBAAO,CAAC,OAAO,CAAC,CAAC;IACjC,IAAI,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;IACjC,KAAK,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;QACjC,IAAI,IAAI,CAAC,GAAG,EAAE;YACV,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAa,CAAC,CAAC;SACnD;aACI;YAED,IAAI,MAAM,EAAE;gBACR,OAAO;aACV;YAED,IAAI,CAAC,SAAS,EAAE;gBACZ,mBAAmB;gBACnB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;aACvD;SACJ;QAED,IAAI,MAAM,EAAE;YACR,OAAO;SACV;QAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;QAC/D,OAAO,CAAC,GAAG,CAAC,UAAU,MAAM,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,iBAAiB,MAAM,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC,CAAC;QACnE,OAAO,CAAC,GAAG,CAAC,qBAAqB,MAAM,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,CAAC;QAC1E,OAAO,CAAC,GAAG,CAAC,iDAAiD,MAAM,CAAC,UAAU,CAAC,mCAAmC,EAAE,CAAC,CAAC;QACtH,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,CAAC;QACzE,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;QAClE,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;QAC/D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,IAAI,MAAM,CAAC,UAAU,CAAC,mBAAmB,GAAG,CAAC,EAAE;YAC3C,OAAO,CAAC,GAAG,CAAC,qBAAqB,MAAM,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC;SAC5E;QAED,IAAI,MAAM,CAAC,UAAU,CAAC,mBAAmB,GAAG,CAAC,EAAE;YAC3C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;YAC/D,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,IAAS,EAAE,EAAE;gBACnD,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YACpD,CAAC,CAAC,CAAC;SACN;IAEL,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;QACT,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC,CAAC,CAAC;AACP,CAAC;AA7ED,0BA6EC"}
|
|
@@ -17,7 +17,7 @@ class Parsing {
|
|
|
17
17
|
if (!this.options.GetText()) {
|
|
18
18
|
return new ParsingResult_1.default({});
|
|
19
19
|
}
|
|
20
|
-
return parsing_1.ParseText(this.options.GetText(), this.options.GetConfig());
|
|
20
|
+
return parsing_1.ParseText(this.options.GetText(), this.options.GetConfig(), this.options.GetProgressFunction());
|
|
21
21
|
}
|
|
22
22
|
ParseTextAsync() {
|
|
23
23
|
if (!this.options.GetText()) {
|
|
@@ -26,7 +26,7 @@ class Parsing {
|
|
|
26
26
|
});
|
|
27
27
|
}
|
|
28
28
|
return new Promise((resolve, reject) => {
|
|
29
|
-
resolve(parsing_1.ParseText(this.options.GetText(), this.options.GetConfig()));
|
|
29
|
+
resolve(parsing_1.ParseText(this.options.GetText(), this.options.GetConfig(), this.options.GetProgressFunction()));
|
|
30
30
|
});
|
|
31
31
|
}
|
|
32
32
|
ParseFile(doneCallback, errorCallback) {
|
|
@@ -34,7 +34,7 @@ class Parsing {
|
|
|
34
34
|
if (!filePath) {
|
|
35
35
|
return;
|
|
36
36
|
}
|
|
37
|
-
parsing_1.ParseFile(filePath, this.options.GetConfig(), doneCallback, errorCallback);
|
|
37
|
+
parsing_1.ParseFile(filePath, this.options.GetConfig(), doneCallback, errorCallback, this.options.GetProgressFunction());
|
|
38
38
|
}
|
|
39
39
|
ParseFileAsync() {
|
|
40
40
|
if (!this.options.GetFilePath()) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Parsing.js","sourceRoot":"","sources":["../../../src/ToJSON/models/Parsing.ts"],"names":[],"mappings":";;;;;AAAA,gDAA0D;AAC1D,sEAA8C;AAC9C,oEAA4C;AAE5C,MAAqB,OAAO;IACxB,YAAY,cAA+B;QACvC,IAAI,CAAC,OAAO,GAAG,cAAc,aAAd,cAAc,cAAd,cAAc,GAAI,IAAI,wBAAc,EAAE,CAAC;IAC1D,CAAC;IAID,MAAM,CAAC,MAAc,EAAE,IAAY;QAC/B,OAAO,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACvE,CAAC;IAED,SAAS;QACL,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE;YACzB,OAAO,IAAI,uBAAa,CAAC,EAAE,CAAC,CAAC;SAChC;QAED,OAAO,mBAAS,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"Parsing.js","sourceRoot":"","sources":["../../../src/ToJSON/models/Parsing.ts"],"names":[],"mappings":";;;;;AAAA,gDAA0D;AAC1D,sEAA8C;AAC9C,oEAA4C;AAE5C,MAAqB,OAAO;IACxB,YAAY,cAA+B;QACvC,IAAI,CAAC,OAAO,GAAG,cAAc,aAAd,cAAc,cAAd,cAAc,GAAI,IAAI,wBAAc,EAAE,CAAC;IAC1D,CAAC;IAID,MAAM,CAAC,MAAc,EAAE,IAAY;QAC/B,OAAO,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACvE,CAAC;IAED,SAAS;QACL,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE;YACzB,OAAO,IAAI,uBAAa,CAAC,EAAE,CAAC,CAAC;SAChC;QAED,OAAO,mBAAS,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAC3G,CAAC;IAED,cAAc;QACV,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE;YACzB,OAAO,IAAI,OAAO,CAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBAClD,MAAM,CAAC,kBAAkB,CAAC,CAAC;YAC/B,CAAC,CAAC,CAAC;SACN;QAED,OAAO,IAAI,OAAO,CAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAClD,OAAO,CAAC,mBAAS,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC;QAC7G,CAAC,CAAC,CAAC;IACP,CAAC;IAED,SAAS,CAAC,YAA6C,EAAE,aAAuB;QAC5E,IAAI,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QAC1C,IAAI,CAAC,QAAQ,EAAE;YACX,OAAO;SACV;QAED,mBAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,YAAY,EAAE,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC;IACnH,CAAC;IAED,cAAc;QACV,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE;YAC7B,OAAO,IAAI,OAAO,CAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBAClD,MAAM,CAAC,uBAAuB,CAAC,CAAC;YACpC,CAAC,CAAC,CAAC;SACN;QAED,OAAO,IAAI,OAAO,CAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAClD,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAK,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;IACP,CAAC;CACJ;AAnDD,0BAmDC"}
|
|
@@ -23,6 +23,12 @@ class ParsingOptions {
|
|
|
23
23
|
var _a;
|
|
24
24
|
return (_a = this.config) !== null && _a !== void 0 ? _a : require('fs').readFileSync('options/version551.yaml', 'utf8');
|
|
25
25
|
}
|
|
26
|
+
SetProgressFunction(func) {
|
|
27
|
+
this.progressFunction = func;
|
|
28
|
+
}
|
|
29
|
+
GetProgressFunction() {
|
|
30
|
+
return this.progressFunction;
|
|
31
|
+
}
|
|
26
32
|
}
|
|
27
33
|
exports.default = ParsingOptions;
|
|
28
34
|
//# sourceMappingURL=ParsingOptions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ParsingOptions.js","sourceRoot":"","sources":["../../../src/ToJSON/models/ParsingOptions.ts"],"names":[],"mappings":";;AAAA,MAAqB,cAAc;
|
|
1
|
+
{"version":3,"file":"ParsingOptions.js","sourceRoot":"","sources":["../../../src/ToJSON/models/ParsingOptions.ts"],"names":[],"mappings":";;AAAA,MAAqB,cAAc;IAM/B,OAAO,CAAC,IAAY;QAChB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACrB,CAAC;IAED,WAAW,CAAC,IAAY;QACpB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACzB,CAAC;IAED,aAAa,CAAC,IAAY;QACtB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC3D,CAAC;IAED,SAAS,CAAC,MAAc;QACpB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;IAED,OAAO;QACH,OAAO,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;IAED,WAAW;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED,SAAS;;QACL,aAAO,IAAI,CAAC,MAAM,mCAAI,OAAO,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,yBAAyB,EAAE,MAAM,CAAC,CAAC;IACxF,CAAC;IAED,mBAAmB,CAAC,IAAsD;QACtE,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;IACjC,CAAC;IAED,mBAAmB;QACf,OAAO,IAAI,CAAC,gBAAgB,CAAC;IACjC,CAAC;CACJ;AAzCD,iCAyCC"}
|
|
@@ -21,9 +21,10 @@ let stats = new Statistics_1.default();
|
|
|
21
21
|
*
|
|
22
22
|
* @param text - The text
|
|
23
23
|
* @param parsingOptions - The parsing options
|
|
24
|
+
* @param invokeProgressFunction - Set function that is called before each line, to show progress in some way
|
|
24
25
|
* @returns An object which includes the parsed object and parsing statistics
|
|
25
26
|
*/
|
|
26
|
-
function ParseText(text, parsingOptions) {
|
|
27
|
+
function ParseText(text, parsingOptions, invokeProgressFunction) {
|
|
27
28
|
if (!text || !parsingOptions) {
|
|
28
29
|
return new ParsingResult_1.default({});
|
|
29
30
|
}
|
|
@@ -46,7 +47,10 @@ function ParseText(text, parsingOptions) {
|
|
|
46
47
|
}
|
|
47
48
|
lineNumber++;
|
|
48
49
|
};
|
|
49
|
-
forEach_1.default(lines, line => {
|
|
50
|
+
forEach_1.default(lines, (line, index) => {
|
|
51
|
+
if (invokeProgressFunction) {
|
|
52
|
+
invokeProgressFunction(lines.length, index);
|
|
53
|
+
}
|
|
50
54
|
ProcessNewLine(lastLevel, lineNumber, line, nextLine);
|
|
51
55
|
});
|
|
52
56
|
let result = processLine_1.GetResult();
|
|
@@ -61,10 +65,31 @@ exports.ParseText = ParseText;
|
|
|
61
65
|
* @param parsingOptions - The parsing options
|
|
62
66
|
* @param doneCallback - Returns the resulting object when file is readed completly
|
|
63
67
|
* @param errorCallback - Returns file reading errors
|
|
68
|
+
* @param invokeProgressFunction - Set function that is called before each line, to show progress in some way
|
|
64
69
|
* @returns An object which includes the parsed object and parsing statistics
|
|
65
70
|
*/
|
|
66
71
|
/* istanbul ignore next */ // maybe later ;)
|
|
67
|
-
function ParseFile(path, parsingOptions, doneCallback, errorCallback) {
|
|
72
|
+
function ParseFile(path, parsingOptions, doneCallback, errorCallback, invokeProgressFunction) {
|
|
73
|
+
// if no progress should be shown, it is not necessary to get the line count of the file at first
|
|
74
|
+
if (!invokeProgressFunction) {
|
|
75
|
+
ExecuteParseFile(path, parsingOptions, doneCallback, errorCallback, 0);
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
// read first time to get lines count
|
|
79
|
+
let linesCountLr = new LineByLineReader(path);
|
|
80
|
+
let linesCount = 0;
|
|
81
|
+
linesCountLr.on('line', function (line) {
|
|
82
|
+
linesCountLr.pause();
|
|
83
|
+
linesCount++;
|
|
84
|
+
linesCountLr.resume();
|
|
85
|
+
});
|
|
86
|
+
linesCountLr.on('end', function () {
|
|
87
|
+
ExecuteParseFile(path, parsingOptions, doneCallback, errorCallback, linesCount, invokeProgressFunction);
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
exports.ParseFile = ParseFile;
|
|
91
|
+
/* istanbul ignore next */ // maybe later ;)
|
|
92
|
+
function ExecuteParseFile(path, parsingOptions, doneCallback, errorCallback, linesCount, invokeProgressFunction) {
|
|
68
93
|
let lr = new LineByLineReader(path);
|
|
69
94
|
let lastLevel = 0;
|
|
70
95
|
let lineNumber = 1;
|
|
@@ -83,6 +108,9 @@ function ParseFile(path, parsingOptions, doneCallback, errorCallback) {
|
|
|
83
108
|
if (lastLine) {
|
|
84
109
|
lastLevel = lastLine.Level;
|
|
85
110
|
}
|
|
111
|
+
if (invokeProgressFunction) {
|
|
112
|
+
invokeProgressFunction(linesCount, lineNumber);
|
|
113
|
+
}
|
|
86
114
|
lineNumber++;
|
|
87
115
|
lr.resume();
|
|
88
116
|
};
|
|
@@ -102,7 +130,6 @@ function ParseFile(path, parsingOptions, doneCallback, errorCallback) {
|
|
|
102
130
|
doneCallback(new ParsingResult_1.default(result, stats));
|
|
103
131
|
});
|
|
104
132
|
}
|
|
105
|
-
exports.ParseFile = ParseFile;
|
|
106
133
|
/**
|
|
107
134
|
* Function that processes a text line
|
|
108
135
|
* @param lastLevel level of the last level
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parsing.js","sourceRoot":"","sources":["../../../src/ToJSON/parsing/parsing.ts"],"names":[],"mappings":";;;;;;AAAA,iEAAyC;AACzC,6DAAqC;AACrC,yDAAiC;AAGjC,sEAA8C;AAC9C,4EAAoD;AAEpD,qDAA+C;AAC/C,2CAAwC;AACxC,+CAA2F;AAC3F,4EAAoD;AACpD,sDAA2B;AAE3B,MAAM,gBAAgB,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;AACjD,IAAI,KAAK,GAAG,IAAI,oBAAU,EAAE,CAAC;AAE7B
|
|
1
|
+
{"version":3,"file":"parsing.js","sourceRoot":"","sources":["../../../src/ToJSON/parsing/parsing.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,6 +15,7 @@ const TagDefinition_1 = __importDefault(require("../models/TagDefinition"));
|
|
|
15
15
|
const LineParsingResult_1 = __importDefault(require("../models/LineParsingResult"));
|
|
16
16
|
const parseDate_1 = require("./parseDate");
|
|
17
17
|
const eachDeep = require('deepdash/eachDeep');
|
|
18
|
+
let parsingOptions;
|
|
18
19
|
/**
|
|
19
20
|
* Store for file\text processing
|
|
20
21
|
* @internal
|
|
@@ -28,7 +29,6 @@ function ResetProcessing() {
|
|
|
28
29
|
parsingOptions = {};
|
|
29
30
|
}
|
|
30
31
|
exports.ResetProcessing = ResetProcessing;
|
|
31
|
-
let parsingOptions;
|
|
32
32
|
function SetParsingOptions(options) {
|
|
33
33
|
parsingOptions = options;
|
|
34
34
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"processLine.js","sourceRoot":"","sources":["../../../src/ToJSON/parsing/processLine.ts"],"names":[],"mappings":";;;;;;AAAA,uDAA+B;AAC/B,qDAA6B;AAC7B,2DAAmC;AACnC,6DAAqC;AACrC,uDAA+B;AAE/B,oDAA4B;AAG5B,4DAAoC;AACpC,4EAAoD;AACpD,oFAA4D;AAG5D,2CAAwD;AAExD,MAAM,QAAQ,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"processLine.js","sourceRoot":"","sources":["../../../src/ToJSON/parsing/processLine.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "gedcom.json",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.4",
|
|
4
4
|
"description": "Convert GEDCOM Files to an JSON File or an JavaScript-Object and vice versa",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
"clean": "tsc --build ./tsconfig.json --clean",
|
|
9
9
|
"demo:JSON": "ts-node src/console.ts --path 'examples/simpsons.ged'",
|
|
10
10
|
"demoFile:JSON": "ts-node src/console.ts --path 'examples/simpsons.ged' --out 'test.json'",
|
|
11
|
+
"demoFileWithProgress:JSON": "ts-node src/console.ts --path 'examples/royal92.ged' --out 'test.json' --showProgress",
|
|
11
12
|
"test": "nyc mocha",
|
|
12
13
|
"test:watch": "mocha --watch --watch-files src, tests/**/*.ts",
|
|
13
14
|
"doc": "typedoc --out docs src",
|
package/src/ToJSON/console.ts
CHANGED
|
@@ -12,6 +12,12 @@ export function Convert(argv:any) {
|
|
|
12
12
|
options.SetConfigFile(argv.opt as string);
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
+
if (argv.showProgress) {
|
|
16
|
+
options.SetProgressFunction((linesCount: number, lineNumber:number) => {
|
|
17
|
+
process.stdout.write(`\rProgress: parsing line ${lineNumber} from ${linesCount}`);
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
|
|
15
21
|
let silent = false;
|
|
16
22
|
if (argv.silent) {
|
|
17
23
|
silent = true;
|
|
@@ -18,7 +18,7 @@ export default class Parsing {
|
|
|
18
18
|
return new ParsingResult({});
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
-
return ParseText(this.options.GetText(), this.options.GetConfig());
|
|
21
|
+
return ParseText(this.options.GetText(), this.options.GetConfig(), this.options.GetProgressFunction());
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
ParseTextAsync(): Promise<ParsingResult> {
|
|
@@ -29,7 +29,7 @@ export default class Parsing {
|
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
return new Promise<ParsingResult>((resolve, reject) => {
|
|
32
|
-
resolve(ParseText(this.options.GetText(), this.options.GetConfig()));
|
|
32
|
+
resolve(ParseText(this.options.GetText(), this.options.GetConfig(), this.options.GetProgressFunction()));
|
|
33
33
|
});
|
|
34
34
|
}
|
|
35
35
|
|
|
@@ -39,7 +39,7 @@ export default class Parsing {
|
|
|
39
39
|
return;
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
-
ParseFile(filePath, this.options.GetConfig(), doneCallback, errorCallback);
|
|
42
|
+
ParseFile(filePath, this.options.GetConfig(), doneCallback, errorCallback, this.options.GetProgressFunction());
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
ParseFileAsync(): Promise<ParsingResult> {
|
|
@@ -2,6 +2,7 @@ export default class ParsingOptions {
|
|
|
2
2
|
private text?: string;
|
|
3
3
|
private filePath?: string;
|
|
4
4
|
private config?: string;
|
|
5
|
+
private progressFunction?: (linesCount: number, actualLine: number) => void;
|
|
5
6
|
|
|
6
7
|
SetText(text: string) {
|
|
7
8
|
this.text = text;
|
|
@@ -30,4 +31,12 @@ export default class ParsingOptions {
|
|
|
30
31
|
GetConfig() {
|
|
31
32
|
return this.config ?? require('fs').readFileSync('options/version551.yaml', 'utf8');
|
|
32
33
|
}
|
|
34
|
+
|
|
35
|
+
SetProgressFunction(func: (linesCount: number, actualLine: number) => void) {
|
|
36
|
+
this.progressFunction = func;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
GetProgressFunction() : ((linesCount: number, actualLine: number) => void) | undefined {
|
|
40
|
+
return this.progressFunction;
|
|
41
|
+
}
|
|
33
42
|
}
|
|
@@ -20,9 +20,14 @@ let stats = new Statistics();
|
|
|
20
20
|
*
|
|
21
21
|
* @param text - The text
|
|
22
22
|
* @param parsingOptions - The parsing options
|
|
23
|
+
* @param invokeProgressFunction - Set function that is called before each line, to show progress in some way
|
|
23
24
|
* @returns An object which includes the parsed object and parsing statistics
|
|
24
25
|
*/
|
|
25
|
-
export function ParseText(
|
|
26
|
+
export function ParseText(
|
|
27
|
+
text?: string,
|
|
28
|
+
parsingOptions?: string,
|
|
29
|
+
invokeProgressFunction?: (linesCount: number, actualLine: number) => void): ParsingResult {
|
|
30
|
+
|
|
26
31
|
if (!text || !parsingOptions){
|
|
27
32
|
return new ParsingResult({});
|
|
28
33
|
}
|
|
@@ -51,8 +56,12 @@ export function ParseText(text?: string, parsingOptions?: string): ParsingResult
|
|
|
51
56
|
lineNumber++;
|
|
52
57
|
};
|
|
53
58
|
|
|
54
|
-
forEach(lines, line => {
|
|
55
|
-
|
|
59
|
+
forEach(lines, (line, index) => {
|
|
60
|
+
if (invokeProgressFunction) {
|
|
61
|
+
invokeProgressFunction(lines.length, index);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
ProcessNewLine(lastLevel, lineNumber, line, nextLine);
|
|
56
65
|
});
|
|
57
66
|
|
|
58
67
|
let result = GetResult();
|
|
@@ -67,11 +76,47 @@ export function ParseText(text?: string, parsingOptions?: string): ParsingResult
|
|
|
67
76
|
* @param parsingOptions - The parsing options
|
|
68
77
|
* @param doneCallback - Returns the resulting object when file is readed completly
|
|
69
78
|
* @param errorCallback - Returns file reading errors
|
|
79
|
+
* @param invokeProgressFunction - Set function that is called before each line, to show progress in some way
|
|
70
80
|
* @returns An object which includes the parsed object and parsing statistics
|
|
71
81
|
*/
|
|
82
|
+
|
|
72
83
|
/* istanbul ignore next */ // maybe later ;)
|
|
73
|
-
export function ParseFile(
|
|
74
|
-
|
|
84
|
+
export function ParseFile(
|
|
85
|
+
path: string,
|
|
86
|
+
parsingOptions: string,
|
|
87
|
+
doneCallback: (result: ParsingResult) => void,
|
|
88
|
+
errorCallback: any,
|
|
89
|
+
invokeProgressFunction?: ((linesCount: number, actualLine: number) => void) | undefined) {
|
|
90
|
+
|
|
91
|
+
// if no progress should be shown, it is not necessary to get the line count of the file at first
|
|
92
|
+
if (!invokeProgressFunction) {
|
|
93
|
+
ExecuteParseFile(path, parsingOptions, doneCallback, errorCallback, 0);
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
// read first time to get lines count
|
|
98
|
+
let linesCountLr = new LineByLineReader(path);
|
|
99
|
+
let linesCount = 0;
|
|
100
|
+
linesCountLr.on('line', function (line: any) {
|
|
101
|
+
linesCountLr.pause();
|
|
102
|
+
linesCount++;
|
|
103
|
+
linesCountLr.resume();
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
linesCountLr.on('end', function () {
|
|
107
|
+
ExecuteParseFile(path, parsingOptions, doneCallback, errorCallback, linesCount, invokeProgressFunction);
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/* istanbul ignore next */ // maybe later ;)
|
|
112
|
+
function ExecuteParseFile(
|
|
113
|
+
path: string,
|
|
114
|
+
parsingOptions: string,
|
|
115
|
+
doneCallback: (result: ParsingResult) => void,
|
|
116
|
+
errorCallback: any,
|
|
117
|
+
linesCount: number,
|
|
118
|
+
invokeProgressFunction?: ((linesCount: number, actualLine: number) => void) | undefined) {
|
|
119
|
+
let lr = new LineByLineReader(path);
|
|
75
120
|
let lastLevel = 0;
|
|
76
121
|
let lineNumber = 1;
|
|
77
122
|
let yamlOptions: string | object | undefined = {};
|
|
@@ -93,6 +138,10 @@ export function ParseFile(path: string, parsingOptions: string, doneCallback: (r
|
|
|
93
138
|
lastLevel = lastLine.Level;
|
|
94
139
|
}
|
|
95
140
|
|
|
141
|
+
if (invokeProgressFunction) {
|
|
142
|
+
invokeProgressFunction(linesCount, lineNumber);
|
|
143
|
+
}
|
|
144
|
+
|
|
96
145
|
lineNumber++;
|
|
97
146
|
lr.resume();
|
|
98
147
|
};
|
|
@@ -115,7 +164,7 @@ export function ParseFile(path: string, parsingOptions: string, doneCallback: (r
|
|
|
115
164
|
// All lines are read, file is closed now.
|
|
116
165
|
doneCallback(new ParsingResult(result, stats));
|
|
117
166
|
});
|
|
118
|
-
}
|
|
167
|
+
}
|
|
119
168
|
|
|
120
169
|
/**
|
|
121
170
|
* Function that processes a text line
|
|
@@ -15,6 +15,7 @@ import ParsingPath from '../models/ParsingPath';
|
|
|
15
15
|
import { ClearDateTimeMergingInfos } from './parseDate';
|
|
16
16
|
|
|
17
17
|
const eachDeep = require('deepdash/eachDeep');
|
|
18
|
+
let parsingOptions: any;
|
|
18
19
|
|
|
19
20
|
/**
|
|
20
21
|
* Store for file\text processing
|
|
@@ -30,7 +31,6 @@ export function ResetProcessing() {
|
|
|
30
31
|
parsingOptions = {};
|
|
31
32
|
}
|
|
32
33
|
|
|
33
|
-
let parsingOptions: any;
|
|
34
34
|
export function SetParsingOptions(options: any) {
|
|
35
35
|
parsingOptions = options;
|
|
36
36
|
}
|