namefully 1.0.9 → 1.2.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 +21 -674
- package/dist/example/index.js +2734 -0
- package/dist/lib/config.d.ts +121 -0
- package/dist/lib/config.js +189 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/constants.d.ts +4 -0
- package/dist/lib/constants.js +31 -0
- package/dist/lib/constants.js.map +1 -0
- package/dist/lib/error.d.ts +172 -0
- package/dist/lib/error.js +210 -0
- package/dist/lib/error.js.map +1 -0
- package/dist/lib/{usecases/index.d.ts → example/example.d.ts} +0 -0
- package/dist/lib/full-name.d.ts +71 -0
- package/dist/lib/full-name.js +147 -0
- package/dist/lib/full-name.js.map +1 -0
- package/dist/lib/index.d.ts +16 -6
- package/dist/lib/index.js +29 -8
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/name.d.ts +177 -0
- package/dist/lib/name.js +322 -0
- package/dist/lib/name.js.map +1 -0
- package/dist/lib/namefully.d.ts +303 -208
- package/dist/lib/namefully.js +603 -442
- package/dist/lib/namefully.js.map +1 -1
- package/dist/lib/parser.d.ts +46 -0
- package/dist/lib/parser.js +173 -0
- package/dist/lib/parser.js.map +1 -0
- package/dist/lib/src/config.d.ts +121 -0
- package/dist/lib/src/constants.d.ts +4 -0
- package/dist/lib/src/error.d.ts +172 -0
- package/dist/lib/src/full-name.d.ts +71 -0
- package/dist/lib/src/index.d.ts +16 -6
- package/dist/lib/src/name.d.ts +177 -0
- package/dist/lib/src/namefully.d.ts +303 -208
- package/dist/lib/src/parser.d.ts +46 -0
- package/dist/lib/src/types.d.ts +127 -0
- package/dist/lib/src/utils.d.ts +63 -0
- package/dist/lib/src/validator.d.ts +66 -0
- package/dist/lib/types.d.ts +127 -0
- package/dist/lib/types.js +181 -0
- package/dist/lib/types.js.map +1 -0
- package/dist/lib/utils.d.ts +63 -0
- package/dist/lib/utils.js +138 -0
- package/dist/lib/utils.js.map +1 -0
- package/dist/lib/validator.d.ts +66 -0
- package/dist/lib/validator.js +332 -0
- package/dist/lib/validator.js.map +1 -0
- package/dist/umd/namefully.js +2191 -2111
- package/dist/umd/namefully.js.map +1 -1
- package/dist/umd/namefully.min.js +1 -1
- package/dist/umd/namefully.min.js.LICENSE.txt +8 -20
- package/dist/umd/namefully.min.js.map +1 -1
- package/package.json +50 -53
- package/readme.md +151 -175
- package/changelog.md +0 -114
- package/dist/lib/core/constants.d.ts +0 -26
- package/dist/lib/core/constants.js +0 -42
- package/dist/lib/core/constants.js.map +0 -1
- package/dist/lib/core/index.d.ts +0 -9
- package/dist/lib/core/index.js +0 -13
- package/dist/lib/core/index.js.map +0 -1
- package/dist/lib/core/parsers/array-name.parser.d.ts +0 -42
- package/dist/lib/core/parsers/array-name.parser.js +0 -84
- package/dist/lib/core/parsers/array-name.parser.js.map +0 -1
- package/dist/lib/core/parsers/array-string.parser.d.ts +0 -48
- package/dist/lib/core/parsers/array-string.parser.js +0 -96
- package/dist/lib/core/parsers/array-string.parser.js.map +0 -1
- package/dist/lib/core/parsers/index.d.ts +0 -11
- package/dist/lib/core/parsers/index.js +0 -11
- package/dist/lib/core/parsers/index.js.map +0 -1
- package/dist/lib/core/parsers/nama.parser.d.ts +0 -34
- package/dist/lib/core/parsers/nama.parser.js +0 -75
- package/dist/lib/core/parsers/nama.parser.js.map +0 -1
- package/dist/lib/core/parsers/parser.d.ts +0 -29
- package/dist/lib/core/parsers/parser.js +0 -3
- package/dist/lib/core/parsers/parser.js.map +0 -1
- package/dist/lib/core/parsers/string.parser.d.ts +0 -61
- package/dist/lib/core/parsers/string.parser.js +0 -63
- package/dist/lib/core/parsers/string.parser.js.map +0 -1
- package/dist/lib/core/utils/utils.d.ts +0 -14
- package/dist/lib/core/utils/utils.js +0 -67
- package/dist/lib/core/utils/utils.js.map +0 -1
- package/dist/lib/models/enums.d.ts +0 -91
- package/dist/lib/models/enums.js +0 -98
- package/dist/lib/models/enums.js.map +0 -1
- package/dist/lib/models/firstname.d.ts +0 -41
- package/dist/lib/models/firstname.js +0 -59
- package/dist/lib/models/firstname.js.map +0 -1
- package/dist/lib/models/index.d.ts +0 -12
- package/dist/lib/models/index.js +0 -15
- package/dist/lib/models/index.js.map +0 -1
- package/dist/lib/models/lastname.d.ts +0 -44
- package/dist/lib/models/lastname.js +0 -86
- package/dist/lib/models/lastname.js.map +0 -1
- package/dist/lib/models/misc.d.ts +0 -80
- package/dist/lib/models/misc.js +0 -3
- package/dist/lib/models/misc.js.map +0 -1
- package/dist/lib/models/name.d.ts +0 -48
- package/dist/lib/models/name.js +0 -72
- package/dist/lib/models/name.js.map +0 -1
- package/dist/lib/models/summary.d.ts +0 -23
- package/dist/lib/models/summary.js +0 -60
- package/dist/lib/models/summary.js.map +0 -1
- package/dist/lib/src/core/constants.d.ts +0 -26
- package/dist/lib/src/core/index.d.ts +0 -9
- package/dist/lib/src/core/parsers/array-name.parser.d.ts +0 -42
- package/dist/lib/src/core/parsers/array-string.parser.d.ts +0 -48
- package/dist/lib/src/core/parsers/index.d.ts +0 -11
- package/dist/lib/src/core/parsers/nama.parser.d.ts +0 -34
- package/dist/lib/src/core/parsers/parser.d.ts +0 -29
- package/dist/lib/src/core/parsers/string.parser.d.ts +0 -61
- package/dist/lib/src/core/utils/utils.d.ts +0 -14
- package/dist/lib/src/models/enums.d.ts +0 -91
- package/dist/lib/src/models/firstname.d.ts +0 -41
- package/dist/lib/src/models/index.d.ts +0 -12
- package/dist/lib/src/models/lastname.d.ts +0 -44
- package/dist/lib/src/models/misc.d.ts +0 -80
- package/dist/lib/src/models/name.d.ts +0 -48
- package/dist/lib/src/models/summary.d.ts +0 -23
- package/dist/lib/src/validators/array-name.validator.d.ts +0 -25
- package/dist/lib/src/validators/array-string.validator.d.ts +0 -43
- package/dist/lib/src/validators/common/validation-error.d.ts +0 -19
- package/dist/lib/src/validators/common/validation-rule.d.ts +0 -69
- package/dist/lib/src/validators/common/validation-type.d.ts +0 -24
- package/dist/lib/src/validators/firstname.validator.d.ts +0 -20
- package/dist/lib/src/validators/fullname.validator.d.ts +0 -21
- package/dist/lib/src/validators/index.d.ts +0 -21
- package/dist/lib/src/validators/lastname.validator.d.ts +0 -20
- package/dist/lib/src/validators/middlename.validator.d.ts +0 -20
- package/dist/lib/src/validators/nama.validator.d.ts +0 -21
- package/dist/lib/src/validators/namon.validator.d.ts +0 -20
- package/dist/lib/src/validators/prefix.validator.d.ts +0 -14
- package/dist/lib/src/validators/string-name.validator.d.ts +0 -20
- package/dist/lib/src/validators/suffix.validator.d.ts +0 -14
- package/dist/lib/src/validators/validator.d.ts +0 -13
- package/dist/lib/usecases/compress.usecase.d.ts +0 -8
- package/dist/lib/usecases/constants.d.ts +0 -7
- package/dist/lib/usecases/describe.usecase.d.ts +0 -12
- package/dist/lib/usecases/format.usecase.d.ts +0 -6
- package/dist/lib/usecases/namefully.usecase.d.ts +0 -14
- package/dist/lib/usecases/shorten.usecase.d.ts +0 -6
- package/dist/lib/validators/array-name.validator.d.ts +0 -25
- package/dist/lib/validators/array-name.validator.js +0 -82
- package/dist/lib/validators/array-name.validator.js.map +0 -1
- package/dist/lib/validators/array-string.validator.d.ts +0 -43
- package/dist/lib/validators/array-string.validator.js +0 -80
- package/dist/lib/validators/array-string.validator.js.map +0 -1
- package/dist/lib/validators/common/validation-error.d.ts +0 -19
- package/dist/lib/validators/common/validation-error.js +0 -26
- package/dist/lib/validators/common/validation-error.js.map +0 -1
- package/dist/lib/validators/common/validation-rule.d.ts +0 -69
- package/dist/lib/validators/common/validation-rule.js +0 -73
- package/dist/lib/validators/common/validation-rule.js.map +0 -1
- package/dist/lib/validators/common/validation-type.d.ts +0 -24
- package/dist/lib/validators/common/validation-type.js +0 -28
- package/dist/lib/validators/common/validation-type.js.map +0 -1
- package/dist/lib/validators/firstname.validator.d.ts +0 -20
- package/dist/lib/validators/firstname.validator.js +0 -29
- package/dist/lib/validators/firstname.validator.js.map +0 -1
- package/dist/lib/validators/fullname.validator.d.ts +0 -21
- package/dist/lib/validators/fullname.validator.js +0 -38
- package/dist/lib/validators/fullname.validator.js.map +0 -1
- package/dist/lib/validators/index.d.ts +0 -21
- package/dist/lib/validators/index.js +0 -35
- package/dist/lib/validators/index.js.map +0 -1
- package/dist/lib/validators/lastname.validator.d.ts +0 -20
- package/dist/lib/validators/lastname.validator.js +0 -29
- package/dist/lib/validators/lastname.validator.js.map +0 -1
- package/dist/lib/validators/middlename.validator.d.ts +0 -20
- package/dist/lib/validators/middlename.validator.js +0 -38
- package/dist/lib/validators/middlename.validator.js.map +0 -1
- package/dist/lib/validators/nama.validator.d.ts +0 -21
- package/dist/lib/validators/nama.validator.js +0 -43
- package/dist/lib/validators/nama.validator.js.map +0 -1
- package/dist/lib/validators/namon.validator.d.ts +0 -20
- package/dist/lib/validators/namon.validator.js +0 -29
- package/dist/lib/validators/namon.validator.js.map +0 -1
- package/dist/lib/validators/prefix.validator.d.ts +0 -14
- package/dist/lib/validators/prefix.validator.js +0 -31
- package/dist/lib/validators/prefix.validator.js.map +0 -1
- package/dist/lib/validators/string-name.validator.d.ts +0 -20
- package/dist/lib/validators/string-name.validator.js +0 -29
- package/dist/lib/validators/string-name.validator.js.map +0 -1
- package/dist/lib/validators/suffix.validator.d.ts +0 -14
- package/dist/lib/validators/suffix.validator.js +0 -31
- package/dist/lib/validators/suffix.validator.js.map +0 -1
- package/dist/lib/validators/validator.d.ts +0 -13
- package/dist/lib/validators/validator.js +0 -9
- package/dist/lib/validators/validator.js.map +0 -1
package/changelog.md
DELETED
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
# Changelog
|
|
2
|
-
|
|
3
|
-
This file contains the documentation on the notable changes and bug fixes, and
|
|
4
|
-
is formatted following this [standard](https://keepachangelog.com/en/1.0.0/).
|
|
5
|
-
This project also adheres to [Semantic Versioning](https://semver.org/).
|
|
6
|
-
|
|
7
|
-
## [1.0.9] - 2020-05-18
|
|
8
|
-
|
|
9
|
-
**Added**:
|
|
10
|
-
|
|
11
|
-
- Add support for Cyrillic and Greek alphabet
|
|
12
|
-
|
|
13
|
-
**Fixed**:
|
|
14
|
-
|
|
15
|
-
- Fix validation rules (regex) for specific fields
|
|
16
|
-
|
|
17
|
-
## [1.0.8] - 2020-04-18
|
|
18
|
-
|
|
19
|
-
**Added**:
|
|
20
|
-
|
|
21
|
-
- Add short API equivalent for `compress` => `zip`
|
|
22
|
-
- Add `lastnameFormat` option to config and surname subparts handling
|
|
23
|
-
- Refactor return values for `describe` (object instead of string)
|
|
24
|
-
- Add support for titling when compressing or zipping
|
|
25
|
-
|
|
26
|
-
**Fixed**:
|
|
27
|
-
|
|
28
|
-
- Fix missing bypass for fullname validator
|
|
29
|
-
- Fix logic for name parts handling in `Firstname` class
|
|
30
|
-
|
|
31
|
-
## [1.0.7] - 2020-03-28
|
|
32
|
-
|
|
33
|
-
**Added**:
|
|
34
|
-
|
|
35
|
-
- Add `titling` option to config
|
|
36
|
-
- Add support for prefixes and suffixes when formatting names
|
|
37
|
-
- including a clear cut for (de)-capitalized official names
|
|
38
|
-
|
|
39
|
-
**Fixed**:
|
|
40
|
-
|
|
41
|
-
- Fix wrong ending reference for suffixes
|
|
42
|
-
|
|
43
|
-
## [1.0.6] - 2020-03-20
|
|
44
|
-
|
|
45
|
-
**Added**:
|
|
46
|
-
|
|
47
|
-
- Add support for Latin (European and Spanish) names
|
|
48
|
-
- Add a bypass to skip validation rules (regex)
|
|
49
|
-
|
|
50
|
-
## [1.0.5] - 2020-03-17
|
|
51
|
-
|
|
52
|
-
**Fixed**:
|
|
53
|
-
|
|
54
|
-
- Fix non-relative paths related error
|
|
55
|
-
|
|
56
|
-
## [1.0.4] - 2020-03-17
|
|
57
|
-
|
|
58
|
-
**Added**:
|
|
59
|
-
|
|
60
|
-
- Add optional parameters for the `getFullname` and `getInitials` API;
|
|
61
|
-
- Users can forcefully alter order of appearance the full name and initials;
|
|
62
|
-
- Add optional parameters for the `describe` API;
|
|
63
|
-
- Users can either decide to describe the full name or some specific name parts;
|
|
64
|
-
- Introduce new option in `Namefully` creation;
|
|
65
|
-
- `ending` accepts a separator for to mark an ending suffix;
|
|
66
|
-
- Add some jsdoc comments to document the API;
|
|
67
|
-
- Add some aliases to the API.
|
|
68
|
-
|
|
69
|
-
**Fixed**:
|
|
70
|
-
|
|
71
|
-
- Fix validation error for string array input using wrong/insufficient entries;
|
|
72
|
-
- Fix options in `Namefully` creation;
|
|
73
|
-
- `orderedBy` accepts now two name parts only (first or last name);
|
|
74
|
-
- `separator` works as the splitting name factor;
|
|
75
|
-
- Fix the order of appearance for the full name and `compress` API.
|
|
76
|
-
|
|
77
|
-
## [1.0.3] - 2020-03-11
|
|
78
|
-
|
|
79
|
-
**Fixed**:
|
|
80
|
-
|
|
81
|
-
- Fix typescript compilation for ES2015, UMD
|
|
82
|
-
- Fix `namefully` version
|
|
83
|
-
|
|
84
|
-
## [1.0.2] - 2020-03-11
|
|
85
|
-
|
|
86
|
-
**Added**:
|
|
87
|
-
|
|
88
|
-
- Add use cases
|
|
89
|
-
- Add test coverage
|
|
90
|
-
- Add setup CI/CD
|
|
91
|
-
- Add support for UMD
|
|
92
|
-
- Make validation error message more explicit
|
|
93
|
-
|
|
94
|
-
## [1.0.1] - 2020-03-07
|
|
95
|
-
|
|
96
|
-
**Fixed**:
|
|
97
|
-
|
|
98
|
-
- Fix typo in readme
|
|
99
|
-
- Fix build system for npm
|
|
100
|
-
|
|
101
|
-
## [1.0.0] - 2020-03-07
|
|
102
|
-
|
|
103
|
-
Initial version
|
|
104
|
-
|
|
105
|
-
[1.0.9]: https://github.com/ralflorent/namefully/compare/v1.0.8...v1.0.9
|
|
106
|
-
[1.0.8]: https://github.com/ralflorent/namefully/compare/v1.0.7...v1.0.8
|
|
107
|
-
[1.0.7]: https://github.com/ralflorent/namefully/compare/v1.0.6...v1.0.7
|
|
108
|
-
[1.0.6]: https://github.com/ralflorent/namefully/compare/v1.0.5...v1.0.6
|
|
109
|
-
[1.0.5]: https://github.com/ralflorent/namefully/compare/v1.0.4...v1.0.5
|
|
110
|
-
[1.0.4]: https://github.com/ralflorent/namefully/compare/v1.0.3...v1.0.4
|
|
111
|
-
[1.0.3]: https://github.com/ralflorent/namefully/compare/v1.0.2...v1.0.3
|
|
112
|
-
[1.0.2]: https://github.com/ralflorent/namefully/compare/v1.0.1...v1.0.2
|
|
113
|
-
[1.0.1]: https://github.com/ralflorent/namefully/compare/v1.0.0...v1.0.1
|
|
114
|
-
[1.0.0]: https://github.com/ralflorent/namefully/releases/tag/v1.0.0
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Constants
|
|
3
|
-
*
|
|
4
|
-
* Created on March 07, 2020
|
|
5
|
-
* @author Ralph Florent <ralflornt@gmail.com>
|
|
6
|
-
*/
|
|
7
|
-
import { Config, NameIndex } from '../models/index';
|
|
8
|
-
/**
|
|
9
|
-
* The current version of `Namefully`.
|
|
10
|
-
* @constant
|
|
11
|
-
*/
|
|
12
|
-
export declare const version = "1.0.9";
|
|
13
|
-
/**
|
|
14
|
-
* CONFIG constant
|
|
15
|
-
* @constant
|
|
16
|
-
* @type {Config}
|
|
17
|
-
* @default
|
|
18
|
-
*/
|
|
19
|
-
export declare const CONFIG: Config;
|
|
20
|
-
/**
|
|
21
|
-
* NAME_INDEX constant
|
|
22
|
-
* @constant
|
|
23
|
-
* @type {NameIndex}
|
|
24
|
-
* @default
|
|
25
|
-
*/
|
|
26
|
-
export declare const NAME_INDEX: NameIndex;
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
/**
|
|
4
|
-
* Constants
|
|
5
|
-
*
|
|
6
|
-
* Created on March 07, 2020
|
|
7
|
-
* @author Ralph Florent <ralflornt@gmail.com>
|
|
8
|
-
*/
|
|
9
|
-
const index_1 = require("../models/index");
|
|
10
|
-
/**
|
|
11
|
-
* The current version of `Namefully`.
|
|
12
|
-
* @constant
|
|
13
|
-
*/
|
|
14
|
-
exports.version = '1.0.9';
|
|
15
|
-
/**
|
|
16
|
-
* CONFIG constant
|
|
17
|
-
* @constant
|
|
18
|
-
* @type {Config}
|
|
19
|
-
* @default
|
|
20
|
-
*/
|
|
21
|
-
exports.CONFIG = {
|
|
22
|
-
orderedBy: 'firstname',
|
|
23
|
-
separator: index_1.Separator.SPACE,
|
|
24
|
-
titling: 'uk',
|
|
25
|
-
ending: index_1.Separator.SPACE,
|
|
26
|
-
bypass: false,
|
|
27
|
-
lastnameFormat: 'father',
|
|
28
|
-
};
|
|
29
|
-
/**
|
|
30
|
-
* NAME_INDEX constant
|
|
31
|
-
* @constant
|
|
32
|
-
* @type {NameIndex}
|
|
33
|
-
* @default
|
|
34
|
-
*/
|
|
35
|
-
exports.NAME_INDEX = {
|
|
36
|
-
prefix: 0,
|
|
37
|
-
firstname: 1,
|
|
38
|
-
middlename: 2,
|
|
39
|
-
lastname: 3,
|
|
40
|
-
suffix: 4,
|
|
41
|
-
};
|
|
42
|
-
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/core/constants.ts"],"names":[],"mappings":";;AAAA;;;;;GAKG;AACH,2CAA+D;AAE/D;;;GAGG;AACU,QAAA,OAAO,GAAG,OAAO,CAAC;AAE/B;;;;;GAKG;AACU,QAAA,MAAM,GAAW;IAC1B,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,iBAAS,CAAC,KAAK;IAC1B,OAAO,EAAE,IAAI;IACb,MAAM,EAAE,iBAAS,CAAC,KAAK;IACvB,MAAM,EAAE,KAAK;IACb,cAAc,EAAE,QAAQ;CAC3B,CAAA;AAED;;;;;GAKG;AACU,QAAA,UAAU,GAAc;IACjC,MAAM,EAAE,CAAC;IACT,SAAS,EAAE,CAAC;IACZ,UAAU,EAAE,CAAC;IACb,QAAQ,EAAE,CAAC;IACX,MAAM,EAAE,CAAC;CACZ,CAAA"}
|
package/dist/lib/core/index.d.ts
DELETED
package/dist/lib/core/index.js
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const tslib_1 = require("tslib");
|
|
4
|
-
/**
|
|
5
|
-
* Make all the locals available
|
|
6
|
-
*
|
|
7
|
-
* Created on March 06, 2020
|
|
8
|
-
* @author Ralph Florent <ralflornt@gmail.com>
|
|
9
|
-
*/
|
|
10
|
-
tslib_1.__exportStar(require("./parsers/index"), exports);
|
|
11
|
-
tslib_1.__exportStar(require("./utils/utils"), exports);
|
|
12
|
-
tslib_1.__exportStar(require("./constants"), exports);
|
|
13
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/index.ts"],"names":[],"mappings":";;;AAAA;;;;;GAKG;AACH,0DAAgC;AAChC,wDAA8B;AAC9B,sDAA4B"}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* An array `Name` parser
|
|
3
|
-
*
|
|
4
|
-
* Created on March 15, 2020
|
|
5
|
-
* @author Ralph Florent <ralflornt@gmail.com>
|
|
6
|
-
*/
|
|
7
|
-
import { Name, Fullname, LastnameFormat } from '../../models/index';
|
|
8
|
-
import { Parser } from './parser';
|
|
9
|
-
/**
|
|
10
|
-
* Represents a `Name[]` parser
|
|
11
|
-
* @class
|
|
12
|
-
* @implements {Parser<Name[]>}
|
|
13
|
-
* @classdesc
|
|
14
|
-
* This parser parses an array of the class `Name` while checking that every part
|
|
15
|
-
* plays the role they are supposed to play. The class `Name` is a ready-made
|
|
16
|
-
* recipe that saves the how-to parsing for a raw data input.
|
|
17
|
-
*
|
|
18
|
-
* **NOTE**:
|
|
19
|
-
* In this specific case, the user is expected to carefully set each name part
|
|
20
|
-
* and submit a high-quality data. Why is this parser if the data is already
|
|
21
|
-
* shaped as wanted? Well, it is better to be safe than sorry, so we implement a
|
|
22
|
-
* double-check of these values and reconfirm a cleaner data. Remember, namefully
|
|
23
|
-
* works like a trapdoor, once the data is set and confirmed safe, no editing is
|
|
24
|
-
* possible.
|
|
25
|
-
*/
|
|
26
|
-
export default class ArrayNameParser implements Parser<Name[]> {
|
|
27
|
-
raw: Name[];
|
|
28
|
-
/**
|
|
29
|
-
* Create a parser ready to parse the raw data
|
|
30
|
-
* @param {Name[]} raw data
|
|
31
|
-
*/
|
|
32
|
-
constructor(raw: Name[]);
|
|
33
|
-
/**
|
|
34
|
-
* Parses the raw data into a full name
|
|
35
|
-
* @returns {Fullname}
|
|
36
|
-
*/
|
|
37
|
-
parse(options: {
|
|
38
|
-
bypass: boolean;
|
|
39
|
-
lastnameFormat: LastnameFormat;
|
|
40
|
-
}): Fullname;
|
|
41
|
-
private distribute;
|
|
42
|
-
}
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
/**
|
|
4
|
-
* An array `Name` parser
|
|
5
|
-
*
|
|
6
|
-
* Created on March 15, 2020
|
|
7
|
-
* @author Ralph Florent <ralflornt@gmail.com>
|
|
8
|
-
*/
|
|
9
|
-
const index_1 = require("../../models/index");
|
|
10
|
-
const index_2 = require("../../validators/index");
|
|
11
|
-
/**
|
|
12
|
-
* Represents a `Name[]` parser
|
|
13
|
-
* @class
|
|
14
|
-
* @implements {Parser<Name[]>}
|
|
15
|
-
* @classdesc
|
|
16
|
-
* This parser parses an array of the class `Name` while checking that every part
|
|
17
|
-
* plays the role they are supposed to play. The class `Name` is a ready-made
|
|
18
|
-
* recipe that saves the how-to parsing for a raw data input.
|
|
19
|
-
*
|
|
20
|
-
* **NOTE**:
|
|
21
|
-
* In this specific case, the user is expected to carefully set each name part
|
|
22
|
-
* and submit a high-quality data. Why is this parser if the data is already
|
|
23
|
-
* shaped as wanted? Well, it is better to be safe than sorry, so we implement a
|
|
24
|
-
* double-check of these values and reconfirm a cleaner data. Remember, namefully
|
|
25
|
-
* works like a trapdoor, once the data is set and confirmed safe, no editing is
|
|
26
|
-
* possible.
|
|
27
|
-
*/
|
|
28
|
-
class ArrayNameParser {
|
|
29
|
-
/**
|
|
30
|
-
* Create a parser ready to parse the raw data
|
|
31
|
-
* @param {Name[]} raw data
|
|
32
|
-
*/
|
|
33
|
-
constructor(raw) {
|
|
34
|
-
this.raw = raw;
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Parses the raw data into a full name
|
|
38
|
-
* @returns {Fullname}
|
|
39
|
-
*/
|
|
40
|
-
parse(options) {
|
|
41
|
-
const { bypass, lastnameFormat } = options;
|
|
42
|
-
// validate first
|
|
43
|
-
if (!bypass)
|
|
44
|
-
new index_2.ArrayNameValidator().validate(this.raw);
|
|
45
|
-
// then distribute all the elements accordingly
|
|
46
|
-
const fullname = this.distribute(lastnameFormat);
|
|
47
|
-
// finally return high quality of data
|
|
48
|
-
return fullname;
|
|
49
|
-
}
|
|
50
|
-
distribute(lastnameFormat) {
|
|
51
|
-
const fullname = {
|
|
52
|
-
firstname: null,
|
|
53
|
-
lastname: null,
|
|
54
|
-
middlename: [],
|
|
55
|
-
prefix: null,
|
|
56
|
-
suffix: null,
|
|
57
|
-
};
|
|
58
|
-
this.raw.forEach(name => {
|
|
59
|
-
switch (name.type) {
|
|
60
|
-
case index_1.Namon.PREFIX:
|
|
61
|
-
fullname.prefix = name.namon;
|
|
62
|
-
break;
|
|
63
|
-
case index_1.Namon.FIRST_NAME:
|
|
64
|
-
fullname.firstname = new index_1.Firstname(name.namon);
|
|
65
|
-
break;
|
|
66
|
-
case index_1.Namon.LAST_NAME:
|
|
67
|
-
if (name instanceof index_1.Lastname)
|
|
68
|
-
fullname.lastname = new index_1.Lastname(name.father, name.mother, lastnameFormat);
|
|
69
|
-
else
|
|
70
|
-
fullname.lastname = new index_1.Lastname(name.namon, null, lastnameFormat);
|
|
71
|
-
break;
|
|
72
|
-
case index_1.Namon.MIDDLE_NAME:
|
|
73
|
-
fullname.middlename.push(name);
|
|
74
|
-
break;
|
|
75
|
-
case index_1.Namon.SUFFIX:
|
|
76
|
-
fullname.suffix = name.namon;
|
|
77
|
-
break;
|
|
78
|
-
}
|
|
79
|
-
});
|
|
80
|
-
return fullname;
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
exports.default = ArrayNameParser;
|
|
84
|
-
//# sourceMappingURL=array-name.parser.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"array-name.parser.js","sourceRoot":"","sources":["../../../../src/core/parsers/array-name.parser.ts"],"names":[],"mappings":";;AAAA;;;;;GAKG;AACH,8CAAgH;AAChH,kDAA4D;AAI5D;;;;;;;;;;;;;;;;GAgBG;AACH,MAAqB,eAAe;IAEhC;;;OAGG;IACH,YAAmB,GAAW;QAAX,QAAG,GAAH,GAAG,CAAQ;IAAG,CAAC;IAElC;;;OAGG;IACH,KAAK,CAAC,OAA4D;QAC9D,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC;QAC3C,iBAAiB;QACjB,IAAI,CAAC,MAAM;YAAE,IAAI,0BAAkB,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEzD,+CAA+C;QAC/C,MAAM,QAAQ,GAAa,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;QAE3D,sCAAsC;QACtC,OAAO,QAAQ,CAAC;IACpB,CAAC;IAEO,UAAU,CAAC,cAA8B;QAE7C,MAAM,QAAQ,GAAa;YACvB,SAAS,EAAE,IAAI;YACf,QAAQ,EAAE,IAAI;YACd,UAAU,EAAE,EAAE;YACd,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,IAAI;SACf,CAAC;QAEF,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACpB,QAAQ,IAAI,CAAC,IAAI,EAAE;gBACf,KAAK,aAAK,CAAC,MAAM;oBACb,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,KAAe,CAAC;oBACvC,MAAM;gBACV,KAAK,aAAK,CAAC,UAAU;oBACjB,QAAQ,CAAC,SAAS,GAAG,IAAI,iBAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAC/C,MAAM;gBACV,KAAK,aAAK,CAAC,SAAS;oBAChB,IAAI,IAAI,YAAY,gBAAQ;wBACxB,QAAQ,CAAC,QAAQ,GAAG,IAAI,gBAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;;wBAE1E,QAAQ,CAAC,QAAQ,GAAG,IAAI,gBAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;oBACvE,MAAM;gBACV,KAAK,aAAK,CAAC,WAAW;oBAClB,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC/B,MAAM;gBACV,KAAK,aAAK,CAAC,MAAM;oBACb,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,KAAe,CAAC;oBACvC,MAAM;aACb;QACL,CAAC,CAAC,CAAC;QAEH,OAAO,QAAQ,CAAC;IACpB,CAAC;CACJ;AA3DD,kCA2DC"}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* An array of string parser
|
|
3
|
-
*
|
|
4
|
-
* Created on March 15, 2020
|
|
5
|
-
* @author Ralph Florent <ralflornt@gmail.com>
|
|
6
|
-
*/
|
|
7
|
-
import { Fullname, NameOrder } from '../../models/index';
|
|
8
|
-
import { Parser } from './parser';
|
|
9
|
-
/**
|
|
10
|
-
* Represents an array string parser
|
|
11
|
-
* @class
|
|
12
|
-
* @implements {Parser<string[]>}
|
|
13
|
-
* @classdesc
|
|
14
|
-
* This parser parses an array of string name following a specific order based
|
|
15
|
-
* on the count of elements. It is expected that the array has to be between two
|
|
16
|
-
* and five elements. Also, the order of appearance set in the configuration
|
|
17
|
-
* influences how this parsing is carried out.
|
|
18
|
-
*
|
|
19
|
-
* Ordered by first name, the parser works as follows:
|
|
20
|
-
* - 2 elements: firstname lastname
|
|
21
|
-
* - 3 elements: firstname middlename lastname
|
|
22
|
-
* - 4 elements: prefix firstname middlename lastname
|
|
23
|
-
* - 5 elements: prefix firstname middlename lastname suffix
|
|
24
|
-
*
|
|
25
|
-
* Ordered by last name, the parser works as follows:
|
|
26
|
-
* - 2 elements: lastname firstname
|
|
27
|
-
* - 3 elements: lastname firstname middlename
|
|
28
|
-
* - 4 elements: prefix lastname firstname middlename
|
|
29
|
-
* - 5 elements: prefix lastname firstname middlename suffix
|
|
30
|
-
*
|
|
31
|
-
*/
|
|
32
|
-
export default class ArrayStringParser implements Parser<string[]> {
|
|
33
|
-
raw: string[];
|
|
34
|
-
/**
|
|
35
|
-
* Create a parser ready to parse the raw data
|
|
36
|
-
* @param {Array<string>} raw data
|
|
37
|
-
*/
|
|
38
|
-
constructor(raw: string[]);
|
|
39
|
-
/**
|
|
40
|
-
* Parses the raw data into a full name
|
|
41
|
-
* @returns {Fullname}
|
|
42
|
-
*/
|
|
43
|
-
parse(options: {
|
|
44
|
-
orderedBy: NameOrder;
|
|
45
|
-
bypass: boolean;
|
|
46
|
-
}): Fullname;
|
|
47
|
-
private distribute;
|
|
48
|
-
}
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
/**
|
|
4
|
-
* An array of string parser
|
|
5
|
-
*
|
|
6
|
-
* Created on March 15, 2020
|
|
7
|
-
* @author Ralph Florent <ralflornt@gmail.com>
|
|
8
|
-
*/
|
|
9
|
-
const index_1 = require("../../models/index");
|
|
10
|
-
const index_2 = require("../../validators/index");
|
|
11
|
-
const index_3 = require("../../core/index");
|
|
12
|
-
/**
|
|
13
|
-
* Represents an array string parser
|
|
14
|
-
* @class
|
|
15
|
-
* @implements {Parser<string[]>}
|
|
16
|
-
* @classdesc
|
|
17
|
-
* This parser parses an array of string name following a specific order based
|
|
18
|
-
* on the count of elements. It is expected that the array has to be between two
|
|
19
|
-
* and five elements. Also, the order of appearance set in the configuration
|
|
20
|
-
* influences how this parsing is carried out.
|
|
21
|
-
*
|
|
22
|
-
* Ordered by first name, the parser works as follows:
|
|
23
|
-
* - 2 elements: firstname lastname
|
|
24
|
-
* - 3 elements: firstname middlename lastname
|
|
25
|
-
* - 4 elements: prefix firstname middlename lastname
|
|
26
|
-
* - 5 elements: prefix firstname middlename lastname suffix
|
|
27
|
-
*
|
|
28
|
-
* Ordered by last name, the parser works as follows:
|
|
29
|
-
* - 2 elements: lastname firstname
|
|
30
|
-
* - 3 elements: lastname firstname middlename
|
|
31
|
-
* - 4 elements: prefix lastname firstname middlename
|
|
32
|
-
* - 5 elements: prefix lastname firstname middlename suffix
|
|
33
|
-
*
|
|
34
|
-
*/
|
|
35
|
-
class ArrayStringParser {
|
|
36
|
-
/**
|
|
37
|
-
* Create a parser ready to parse the raw data
|
|
38
|
-
* @param {Array<string>} raw data
|
|
39
|
-
*/
|
|
40
|
-
constructor(raw) {
|
|
41
|
-
this.raw = raw;
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Parses the raw data into a full name
|
|
45
|
-
* @returns {Fullname}
|
|
46
|
-
*/
|
|
47
|
-
parse(options) {
|
|
48
|
-
// given this setting
|
|
49
|
-
const { orderedBy, bypass } = options;
|
|
50
|
-
// validate first
|
|
51
|
-
const raw = this.raw.map(n => n.trim()); // cleanup
|
|
52
|
-
const index = index_3.organizeNameIndex(orderedBy, raw.length);
|
|
53
|
-
if (!bypass)
|
|
54
|
-
new index_2.ArrayStringValidator(index).validate(raw);
|
|
55
|
-
// then distribute all the elements accordingly
|
|
56
|
-
const fullname = this.distribute(raw, index);
|
|
57
|
-
// finally return high quality of data
|
|
58
|
-
return fullname;
|
|
59
|
-
}
|
|
60
|
-
distribute(raw, index) {
|
|
61
|
-
const fullname = {
|
|
62
|
-
firstname: null,
|
|
63
|
-
lastname: null,
|
|
64
|
-
middlename: [],
|
|
65
|
-
prefix: null,
|
|
66
|
-
suffix: null,
|
|
67
|
-
};
|
|
68
|
-
switch (raw.length) {
|
|
69
|
-
case 2: // first name + last name
|
|
70
|
-
fullname.firstname = new index_1.Firstname(raw[index.firstname]);
|
|
71
|
-
fullname.lastname = new index_1.Lastname(raw[index.lastname]);
|
|
72
|
-
break;
|
|
73
|
-
case 3: // first name + middle name + last name
|
|
74
|
-
fullname.firstname = new index_1.Firstname(raw[index.firstname]);
|
|
75
|
-
fullname.middlename.push(new index_1.Name(raw[index.middlename], index_1.Namon.MIDDLE_NAME));
|
|
76
|
-
fullname.lastname = new index_1.Lastname(raw[index.lastname]);
|
|
77
|
-
break;
|
|
78
|
-
case 4: // prefix + first name + middle name + last name
|
|
79
|
-
fullname.prefix = raw[index.prefix];
|
|
80
|
-
fullname.firstname = new index_1.Firstname(raw[index.firstname]);
|
|
81
|
-
fullname.middlename.push(new index_1.Name(raw[index.middlename], index_1.Namon.MIDDLE_NAME));
|
|
82
|
-
fullname.lastname = new index_1.Lastname(raw[index.lastname]);
|
|
83
|
-
break;
|
|
84
|
-
case 5: // prefix + first name + middle name + last name + suffix
|
|
85
|
-
fullname.prefix = raw[index.prefix];
|
|
86
|
-
fullname.firstname = new index_1.Firstname(raw[index.firstname]);
|
|
87
|
-
fullname.middlename.push(new index_1.Name(raw[index.middlename], index_1.Namon.MIDDLE_NAME));
|
|
88
|
-
fullname.lastname = new index_1.Lastname(raw[index.lastname]);
|
|
89
|
-
fullname.suffix = raw[index.suffix];
|
|
90
|
-
break;
|
|
91
|
-
}
|
|
92
|
-
return fullname;
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
exports.default = ArrayStringParser;
|
|
96
|
-
//# sourceMappingURL=array-string.parser.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"array-string.parser.js","sourceRoot":"","sources":["../../../../src/core/parsers/array-string.parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Export the local parsers
|
|
3
|
-
*
|
|
4
|
-
* Created on March 03, 2020
|
|
5
|
-
* @author Ralph Florent <ralflornt@gmail.com>
|
|
6
|
-
*/
|
|
7
|
-
export * from './parser';
|
|
8
|
-
export { default as ArrayNameParser } from './array-name.parser';
|
|
9
|
-
export { default as ArrayStringParser } from './array-string.parser';
|
|
10
|
-
export { default as NamaParser } from './nama.parser';
|
|
11
|
-
export { default as StringParser } from './string.parser';
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
var array_name_parser_1 = require("./array-name.parser");
|
|
4
|
-
exports.ArrayNameParser = array_name_parser_1.default;
|
|
5
|
-
var array_string_parser_1 = require("./array-string.parser");
|
|
6
|
-
exports.ArrayStringParser = array_string_parser_1.default;
|
|
7
|
-
var nama_parser_1 = require("./nama.parser");
|
|
8
|
-
exports.NamaParser = nama_parser_1.default;
|
|
9
|
-
var string_parser_1 = require("./string.parser");
|
|
10
|
-
exports.StringParser = string_parser_1.default;
|
|
11
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/parsers/index.ts"],"names":[],"mappings":";;AAOA,yDAAiE;AAAxD,8CAAA,OAAO,CAAmB;AACnC,6DAAqE;AAA5D,kDAAA,OAAO,CAAqB;AACrC,6CAAsD;AAA7C,mCAAA,OAAO,CAAc;AAC9B,iDAA0D;AAAjD,uCAAA,OAAO,CAAgB"}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* A `Nama` (JSON signature) parser
|
|
3
|
-
*
|
|
4
|
-
* Created on March 15, 2020
|
|
5
|
-
* @author Ralph Florent <ralflornt@gmail.com>
|
|
6
|
-
*/
|
|
7
|
-
import { Nama, Fullname } from '../../models/index';
|
|
8
|
-
import { Parser } from './parser';
|
|
9
|
-
/**
|
|
10
|
-
* Represents a `Nama` parser
|
|
11
|
-
* @class
|
|
12
|
-
* @implements {Parser<Nama>}
|
|
13
|
-
* @classdesc
|
|
14
|
-
* This parser parses a JSON signature of the name parts provided as string
|
|
15
|
-
* values. This is to facilitate a developer's life that holds users' info in a
|
|
16
|
-
* JSON format. In other words, the developer only needs to provide similar info
|
|
17
|
-
* and the rest will follow.
|
|
18
|
-
*/
|
|
19
|
-
export default class NamaParser implements Parser<Nama> {
|
|
20
|
-
raw: Nama;
|
|
21
|
-
/**
|
|
22
|
-
* Create a parser ready to parse the raw data
|
|
23
|
-
* @param {Nama} raw data as JSON object
|
|
24
|
-
*/
|
|
25
|
-
constructor(raw: Nama);
|
|
26
|
-
/**
|
|
27
|
-
* Parses the raw data into a full name
|
|
28
|
-
* @returns {Fullname}
|
|
29
|
-
*/
|
|
30
|
-
parse(options: {
|
|
31
|
-
bypass: boolean;
|
|
32
|
-
}): Fullname;
|
|
33
|
-
private distribute;
|
|
34
|
-
}
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
/**
|
|
4
|
-
* A `Nama` (JSON signature) parser
|
|
5
|
-
*
|
|
6
|
-
* Created on March 15, 2020
|
|
7
|
-
* @author Ralph Florent <ralflornt@gmail.com>
|
|
8
|
-
*/
|
|
9
|
-
const index_1 = require("../../models/index");
|
|
10
|
-
const index_2 = require("../../validators/index");
|
|
11
|
-
/**
|
|
12
|
-
* Represents a `Nama` parser
|
|
13
|
-
* @class
|
|
14
|
-
* @implements {Parser<Nama>}
|
|
15
|
-
* @classdesc
|
|
16
|
-
* This parser parses a JSON signature of the name parts provided as string
|
|
17
|
-
* values. This is to facilitate a developer's life that holds users' info in a
|
|
18
|
-
* JSON format. In other words, the developer only needs to provide similar info
|
|
19
|
-
* and the rest will follow.
|
|
20
|
-
*/
|
|
21
|
-
class NamaParser {
|
|
22
|
-
/**
|
|
23
|
-
* Create a parser ready to parse the raw data
|
|
24
|
-
* @param {Nama} raw data as JSON object
|
|
25
|
-
*/
|
|
26
|
-
constructor(raw) {
|
|
27
|
-
this.raw = raw;
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Parses the raw data into a full name
|
|
31
|
-
* @returns {Fullname}
|
|
32
|
-
*/
|
|
33
|
-
parse(options) {
|
|
34
|
-
// validate first
|
|
35
|
-
if (!options.bypass)
|
|
36
|
-
new index_2.NamaValidator().validate(this.raw);
|
|
37
|
-
// then distribute all the elements accordingly
|
|
38
|
-
const fullname = this.distribute();
|
|
39
|
-
// finally return high quality of data
|
|
40
|
-
return fullname;
|
|
41
|
-
}
|
|
42
|
-
distribute() {
|
|
43
|
-
const fullname = {
|
|
44
|
-
firstname: null,
|
|
45
|
-
lastname: null,
|
|
46
|
-
middlename: [],
|
|
47
|
-
prefix: null,
|
|
48
|
-
suffix: null,
|
|
49
|
-
};
|
|
50
|
-
for (const entry of Object.entries(this.raw)) {
|
|
51
|
-
const key = entry[0];
|
|
52
|
-
const value = entry[1];
|
|
53
|
-
switch (key) {
|
|
54
|
-
case index_1.Namon.FIRST_NAME:
|
|
55
|
-
fullname.firstname = new index_1.Firstname(value);
|
|
56
|
-
break;
|
|
57
|
-
case index_1.Namon.LAST_NAME:
|
|
58
|
-
fullname.lastname = new index_1.Lastname(value);
|
|
59
|
-
break;
|
|
60
|
-
case index_1.Namon.MIDDLE_NAME:
|
|
61
|
-
fullname.middlename.push(new index_1.Name(value, index_1.Namon.MIDDLE_NAME));
|
|
62
|
-
break;
|
|
63
|
-
case index_1.Namon.PREFIX:
|
|
64
|
-
fullname.prefix = value;
|
|
65
|
-
break;
|
|
66
|
-
case index_1.Namon.SUFFIX:
|
|
67
|
-
fullname.suffix = value;
|
|
68
|
-
break;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
return fullname;
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
exports.default = NamaParser;
|
|
75
|
-
//# sourceMappingURL=nama.parser.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"nama.parser.js","sourceRoot":"","sources":["../../../../src/core/parsers/nama.parser.ts"],"names":[],"mappings":";;AAAA;;;;;GAKG;AACH,8CAAsG;AACtG,kDAAuD;AAIvD;;;;;;;;;GASG;AACH,MAAqB,UAAU;IAE3B;;;OAGG;IACH,YAAmB,GAAS;QAAT,QAAG,GAAH,GAAG,CAAM;IAAI,CAAC;IAEjC;;;OAGG;IACH,KAAK,CAAC,OAA4B;QAE9B,iBAAiB;QACjB,IAAI,CAAC,OAAO,CAAC,MAAM;YAAE,IAAI,qBAAa,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAE5D,+CAA+C;QAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAEnC,sCAAsC;QACtC,OAAO,QAAQ,CAAC;IACpB,CAAC;IAEO,UAAU;QACd,MAAM,QAAQ,GAAa;YACvB,SAAS,EAAE,IAAI;YACf,QAAQ,EAAE,IAAI;YACd,UAAU,EAAE,EAAE;YACd,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,IAAI;SACf,CAAC;QAEF,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YAC1C,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAe,CAAC;YACnC,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAW,CAAC;YACjC,QAAQ,GAAG,EAAE;gBACT,KAAK,aAAK,CAAC,UAAU;oBACjB,QAAQ,CAAC,SAAS,GAAG,IAAI,iBAAS,CAAC,KAAK,CAAC,CAAC;oBAC1C,MAAM;gBACV,KAAK,aAAK,CAAC,SAAS;oBAChB,QAAQ,CAAC,QAAQ,GAAG,IAAI,gBAAQ,CAAC,KAAK,CAAC,CAAC;oBACxC,MAAM;gBACV,KAAK,aAAK,CAAC,WAAW;oBAClB,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,YAAI,CAAC,KAAK,EAAE,aAAK,CAAC,WAAW,CAAC,CAAC,CAAC;oBAC7D,MAAM;gBACV,KAAK,aAAK,CAAC,MAAM;oBACb,QAAQ,CAAC,MAAM,GAAG,KAAe,CAAC;oBAClC,MAAM;gBACV,KAAK,aAAK,CAAC,MAAM;oBACb,QAAQ,CAAC,MAAM,GAAG,KAAe,CAAC;oBAClC,MAAM;aACb;SACJ;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC;CACJ;AAxDD,6BAwDC"}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* A `Parser` contract
|
|
3
|
-
*
|
|
4
|
-
* Created on March 15, 2020
|
|
5
|
-
* @author Ralph Florent <ralflornt@gmail.com>
|
|
6
|
-
*/
|
|
7
|
-
import { Fullname, Separator, NameOrder, LastnameFormat } from '../../models/index';
|
|
8
|
-
/**
|
|
9
|
-
* Interface for JSON signature that represents a generic parser
|
|
10
|
-
* @interface
|
|
11
|
-
*/
|
|
12
|
-
export interface Parser<T> {
|
|
13
|
-
/**
|
|
14
|
-
* raw data to be parsed
|
|
15
|
-
* @type {T}
|
|
16
|
-
*/
|
|
17
|
-
raw: T;
|
|
18
|
-
/**
|
|
19
|
-
* Parses the raw data into a full name
|
|
20
|
-
* @param {Config} [options]
|
|
21
|
-
* @returns {Fullname}
|
|
22
|
-
*/
|
|
23
|
-
parse(options?: Partial<{
|
|
24
|
-
orderedBy: NameOrder;
|
|
25
|
-
separator: Separator;
|
|
26
|
-
bypass: boolean;
|
|
27
|
-
lastnameFormat: LastnameFormat;
|
|
28
|
-
}>): Fullname;
|
|
29
|
-
}
|