comment-parser 1.3.0 → 1.4.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/CHANGELOG.md +7 -1
- package/browser/index.js +2 -5
- package/es6/index.d.ts +14 -14
- package/es6/parser/block-parser.d.ts +3 -3
- package/es6/parser/index.d.ts +3 -3
- package/es6/parser/index.js +0 -3
- package/es6/parser/source-parser.d.ts +2 -2
- package/es6/parser/spec-parser.d.ts +3 -3
- package/es6/parser/tokenizers/description.d.ts +4 -4
- package/es6/parser/tokenizers/index.d.ts +2 -2
- package/es6/parser/tokenizers/name.d.ts +1 -1
- package/es6/parser/tokenizers/tag.d.ts +2 -2
- package/es6/parser/tokenizers/tag.js +1 -1
- package/es6/parser/tokenizers/type.d.ts +3 -3
- package/es6/primitives.js +1 -1
- package/es6/stringifier/index.d.ts +2 -2
- package/es6/stringifier/inspect.d.ts +1 -1
- package/es6/transforms/align.d.ts +2 -2
- package/es6/transforms/crlf.d.ts +2 -2
- package/es6/transforms/indent.d.ts +1 -1
- package/es6/transforms/index.d.ts +2 -2
- package/es6/util.d.ts +1 -1
- package/jest.config.cjs +3 -1
- package/lib/index.cjs +39 -33
- package/lib/index.cjs.map +1 -1
- package/lib/index.d.ts +14 -14
- package/lib/parser/block-parser.d.ts +3 -3
- package/lib/parser/index.cjs +16 -20
- package/lib/parser/index.cjs.map +1 -1
- package/lib/parser/index.d.ts +3 -3
- package/lib/parser/source-parser.cjs +8 -8
- package/lib/parser/source-parser.cjs.map +1 -1
- package/lib/parser/source-parser.d.ts +2 -2
- package/lib/parser/spec-parser.cjs +2 -2
- package/lib/parser/spec-parser.cjs.map +1 -1
- package/lib/parser/spec-parser.d.ts +3 -3
- package/lib/parser/tokenizers/description.cjs +4 -4
- package/lib/parser/tokenizers/description.cjs.map +1 -1
- package/lib/parser/tokenizers/description.d.ts +4 -4
- package/lib/parser/tokenizers/index.d.ts +2 -2
- package/lib/parser/tokenizers/name.cjs +4 -4
- package/lib/parser/tokenizers/name.cjs.map +1 -1
- package/lib/parser/tokenizers/name.d.ts +1 -1
- package/lib/parser/tokenizers/tag.cjs +1 -1
- package/lib/parser/tokenizers/tag.cjs.map +1 -1
- package/lib/parser/tokenizers/tag.d.ts +2 -2
- package/lib/parser/tokenizers/type.cjs +2 -2
- package/lib/parser/tokenizers/type.cjs.map +1 -1
- package/lib/parser/tokenizers/type.d.ts +3 -3
- package/lib/stringifier/index.d.ts +2 -2
- package/lib/stringifier/inspect.cjs +2 -2
- package/lib/stringifier/inspect.cjs.map +1 -1
- package/lib/stringifier/inspect.d.ts +1 -1
- package/lib/transforms/align.cjs +5 -5
- package/lib/transforms/align.cjs.map +1 -1
- package/lib/transforms/align.d.ts +2 -2
- package/lib/transforms/crlf.cjs +2 -2
- package/lib/transforms/crlf.cjs.map +1 -1
- package/lib/transforms/crlf.d.ts +2 -2
- package/lib/transforms/indent.cjs +2 -2
- package/lib/transforms/indent.cjs.map +1 -1
- package/lib/transforms/indent.d.ts +1 -1
- package/lib/transforms/index.d.ts +2 -2
- package/lib/util.d.ts +1 -1
- package/package.json +4 -6
- package/src/index.ts +13 -13
- package/src/parser/block-parser.ts +1 -1
- package/src/parser/index.ts +10 -14
- package/src/parser/source-parser.ts +2 -2
- package/src/parser/spec-parser.ts +3 -3
- package/src/parser/tokenizers/description.ts +2 -2
- package/src/parser/tokenizers/index.ts +1 -1
- package/src/parser/tokenizers/name.ts +3 -3
- package/src/parser/tokenizers/tag.ts +3 -3
- package/src/parser/tokenizers/type.ts +3 -3
- package/src/stringifier/index.ts +1 -1
- package/src/stringifier/inspect.ts +2 -2
- package/src/transforms/align.ts +3 -3
- package/src/transforms/crlf.ts +3 -3
- package/src/transforms/indent.ts +3 -3
- package/src/transforms/index.ts +1 -1
- package/src/util.ts +1 -1
- package/tests/e2e/parse.spec.js +0 -9
- package/tests/unit/block-parser.spec.ts +3 -3
- package/tests/unit/inspect.spec.ts +3 -3
- package/tests/unit/parser.spec.ts +107 -7
- package/tests/unit/source-parser.spec.ts +3 -3
- package/tests/unit/spacer-description-joiner.spec.ts +3 -3
- package/tests/unit/spec-description-tokenizer.spec.ts +2 -2
- package/tests/unit/spec-name-tokenizer.spec.ts +2 -2
- package/tests/unit/spec-parser.spec.ts +7 -7
- package/tests/unit/spec-tag-tokenizer.spec.ts +2 -2
- package/tests/unit/spec-type-tokenizer.spec.ts +2 -2
- package/tests/unit/stringifier.spec.ts +1 -1
- package/tests/unit/transforms-align.spec.ts +3 -3
- package/tests/unit/transforms-crlf.spec.ts +3 -3
- package/tests/unit/transforms-indent.spec.ts +3 -3
- package/tests/unit/transforms.spec.ts +3 -3
- package/tests/unit/util-rewire.spec.ts +1 -1
- package/tests/unit/util.spec.ts +11 -1
- package/tsconfig.json +1 -2
- package/tsconfig.node.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["crlf.js"],"names":["__rest","s","e","t","p","Object","prototype","hasOwnProperty","call","indexOf","getOwnPropertySymbols","i","length","propertyIsEnumerable","defineProperty","exports","value","
|
|
1
|
+
{"version":3,"sources":["crlf.js"],"names":["__rest","s","e","t","p","Object","prototype","hasOwnProperty","call","indexOf","getOwnPropertySymbols","i","length","propertyIsEnumerable","defineProperty","exports","value","util_js_1","require","order","crlf","ending","update","line","assign","tokens","lineEnd","_a","source","fields","rewireSource","map","default"],"mappings":"AAAA;;AACA,IAAIA,MAAM,GAAI,QAAQ,KAAKA,MAAd,IAAyB,UAAUC,CAAV,EAAaC,CAAb,EAAgB;AAClD,MAAIC,CAAC,GAAG,EAAR;;AACA,OAAK,IAAIC,CAAT,IAAcH,CAAd,EAAiB,IAAII,MAAM,CAACC,SAAP,CAAiBC,cAAjB,CAAgCC,IAAhC,CAAqCP,CAArC,EAAwCG,CAAxC,KAA8CF,CAAC,CAACO,OAAF,CAAUL,CAAV,IAAe,CAAjE,EACbD,CAAC,CAACC,CAAD,CAAD,GAAOH,CAAC,CAACG,CAAD,CAAR;;AACJ,MAAIH,CAAC,IAAI,IAAL,IAAa,OAAOI,MAAM,CAACK,qBAAd,KAAwC,UAAzD,EACI,KAAK,IAAIC,CAAC,GAAG,CAAR,EAAWP,CAAC,GAAGC,MAAM,CAACK,qBAAP,CAA6BT,CAA7B,CAApB,EAAqDU,CAAC,GAAGP,CAAC,CAACQ,MAA3D,EAAmED,CAAC,EAApE,EAAwE;AACpE,QAAIT,CAAC,CAACO,OAAF,CAAUL,CAAC,CAACO,CAAD,CAAX,IAAkB,CAAlB,IAAuBN,MAAM,CAACC,SAAP,CAAiBO,oBAAjB,CAAsCL,IAAtC,CAA2CP,CAA3C,EAA8CG,CAAC,CAACO,CAAD,CAA/C,CAA3B,EACIR,CAAC,CAACC,CAAC,CAACO,CAAD,CAAF,CAAD,GAAUV,CAAC,CAACG,CAAC,CAACO,CAAD,CAAF,CAAX;AACP;AACL,SAAOR,CAAP;AACH,CAVD;;AAWAE,MAAM,CAACS,cAAP,CAAsBC,OAAtB,EAA+B,YAA/B,EAA6C;AAAEC,EAAAA,KAAK,EAAE;AAAT,CAA7C;;AACA,MAAMC,SAAS,GAAGC,OAAH,eAAf;;AACA,MAAMC,KAAK,GAAG,CACV,KADU,EAEV,aAFU,EAGV,UAHU,EAIV,MAJU,EAKV,UALU,EAMV,MANU,EAOV,SAPU,EAQV,KARU,EASV,eATU,EAUV,WAVU,EAWV,OAXU,CAAd;;AAaA,SAASC,IAAT,CAAcC,MAAd,EAAsB;AAClB,WAASC,MAAT,CAAgBC,IAAhB,EAAsB;AAClB,WAAOlB,MAAM,CAACmB,MAAP,CAAcnB,MAAM,CAACmB,MAAP,CAAc,EAAd,EAAkBD,IAAlB,CAAd,EAAuC;AAAEE,MAAAA,MAAM,EAAEpB,MAAM,CAACmB,MAAP,CAAcnB,MAAM,CAACmB,MAAP,CAAc,EAAd,EAAkBD,IAAI,CAACE,MAAvB,CAAd,EAA8C;AAAEC,QAAAA,OAAO,EAAEL,MAAM,KAAK,IAAX,GAAkB,EAAlB,GAAuB;AAAlC,OAA9C;AAAV,KAAvC,CAAP;AACH;;AACD,SAAQM,EAAD,IAAQ;AACX,QAAI;AAAEC,MAAAA;AAAF,QAAaD,EAAjB;AAAA,QAAqBE,MAAM,GAAG7B,MAAM,CAAC2B,EAAD,EAAK,CAAC,QAAD,CAAL,CAApC;;AACA,WAAO,CAAC,GAAGV,SAAS,CAACa,YAAd,EAA4BzB,MAAM,CAACmB,MAAP,CAAcnB,MAAM,CAACmB,MAAP,CAAc,EAAd,EAAkBK,MAAlB,CAAd,EAAyC;AAAED,MAAAA,MAAM,EAAEA,MAAM,CAACG,GAAP,CAAWT,MAAX;AAAV,KAAzC,CAA5B,CAAP;AACH,GAHD;AAIH;;AACDP,OAAO,CAACiB,OAAR,GAAkBZ,IAAlB","sourcesContent":["\"use strict\";\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst util_js_1 = require(\"../util.js\");\nconst order = [\n 'end',\n 'description',\n 'postType',\n 'type',\n 'postName',\n 'name',\n 'postTag',\n 'tag',\n 'postDelimiter',\n 'delimiter',\n 'start',\n];\nfunction crlf(ending) {\n function update(line) {\n return Object.assign(Object.assign({}, line), { tokens: Object.assign(Object.assign({}, line.tokens), { lineEnd: ending === 'LF' ? '' : '\\r' }) });\n }\n return (_a) => {\n var { source } = _a, fields = __rest(_a, [\"source\"]);\n return (0, util_js_1.rewireSource)(Object.assign(Object.assign({}, fields), { source: source.map(update) }));\n };\n}\nexports.default = crlf;\n"],"file":"crlf.cjs"}
|
package/lib/transforms/crlf.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { Transform } from './index';
|
|
2
|
-
export
|
|
1
|
+
import { Transform } from './index.js';
|
|
2
|
+
export type Ending = 'LF' | 'CRLF';
|
|
3
3
|
export default function crlf(ending: Ending): Transform;
|
|
@@ -15,7 +15,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
15
15
|
value: true
|
|
16
16
|
});
|
|
17
17
|
|
|
18
|
-
const
|
|
18
|
+
const util_js_1 = require("../util.cjs");
|
|
19
19
|
|
|
20
20
|
const pull = offset => str => str.slice(offset);
|
|
21
21
|
|
|
@@ -48,7 +48,7 @@ function indent(pos) {
|
|
|
48
48
|
} = _a,
|
|
49
49
|
fields = __rest(_a, ["source"]);
|
|
50
50
|
|
|
51
|
-
return
|
|
51
|
+
return (0, util_js_1.rewireSource)(Object.assign(Object.assign({}, fields), {
|
|
52
52
|
source: source.map(update)
|
|
53
53
|
}));
|
|
54
54
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["indent.js"],"names":["__rest","s","e","t","p","Object","prototype","hasOwnProperty","call","indexOf","getOwnPropertySymbols","i","length","propertyIsEnumerable","defineProperty","exports","value","
|
|
1
|
+
{"version":3,"sources":["indent.js"],"names":["__rest","s","e","t","p","Object","prototype","hasOwnProperty","call","indexOf","getOwnPropertySymbols","i","length","propertyIsEnumerable","defineProperty","exports","value","util_js_1","require","pull","offset","str","slice","push","space","padStart","indent","pos","shift","pad","start","undefined","update","line","assign","tokens","_a","source","fields","rewireSource","map","default"],"mappings":"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","sourcesContent":["\"use strict\";\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst util_js_1 = require(\"../util.js\");\nconst pull = (offset) => (str) => str.slice(offset);\nconst push = (offset) => {\n const space = ''.padStart(offset, ' ');\n return (str) => str + space;\n};\nfunction indent(pos) {\n let shift;\n const pad = (start) => {\n if (shift === undefined) {\n const offset = pos - start.length;\n shift = offset > 0 ? push(offset) : pull(-offset);\n }\n return shift(start);\n };\n const update = (line) => (Object.assign(Object.assign({}, line), { tokens: Object.assign(Object.assign({}, line.tokens), { start: pad(line.tokens.start) }) }));\n return (_a) => {\n var { source } = _a, fields = __rest(_a, [\"source\"]);\n return (0, util_js_1.rewireSource)(Object.assign(Object.assign({}, fields), { source: source.map(update) }));\n };\n}\nexports.default = indent;\n"],"file":"indent.cjs"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { Transform } from './index';
|
|
1
|
+
import { Transform } from './index.js';
|
|
2
2
|
export default function indent(pos: number): Transform;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { Block } from '../primitives';
|
|
2
|
-
export
|
|
1
|
+
import { Block } from '../primitives.js';
|
|
2
|
+
export type Transform = (Block: Block) => Block;
|
|
3
3
|
export declare function flow(...transforms: Transform[]): Transform;
|
package/lib/util.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Block, Tokens, Spec } from './primitives';
|
|
1
|
+
import { Block, Tokens, Spec } from './primitives.js';
|
|
2
2
|
export declare function isSpace(source: string): boolean;
|
|
3
3
|
export declare function hasCR(source: string): boolean;
|
|
4
4
|
export declare function splitCR(source: string): [string, string];
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "comment-parser",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.4.0",
|
|
4
4
|
"description": "Generic JSDoc-like comment parser",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "lib/index.cjs",
|
|
@@ -39,17 +39,16 @@
|
|
|
39
39
|
"convert-extension": "^0.3.0",
|
|
40
40
|
"jest": "^27.0.5",
|
|
41
41
|
"prettier": "2.3.1",
|
|
42
|
-
"replace": "^1.2.1",
|
|
43
42
|
"rimraf": "^3.0.2",
|
|
44
43
|
"rollup": "^2.52.2",
|
|
45
44
|
"ts-jest": "^27.0.3",
|
|
46
|
-
"typescript": "^4.
|
|
45
|
+
"typescript": "^4.9.5"
|
|
47
46
|
},
|
|
48
47
|
"engines": {
|
|
49
48
|
"node": ">= 12.0.0"
|
|
50
49
|
},
|
|
51
50
|
"scripts": {
|
|
52
|
-
"build": "rimraf lib es6 browser; tsc -p tsconfig.json && tsc -p tsconfig.node.json && rollup -o browser/index.js -f iife --context window -n CommentParser es6/index.js && convert-extension cjs lib/
|
|
51
|
+
"build": "rimraf lib es6 browser; tsc -p tsconfig.json && tsc -p tsconfig.node.json && rollup -o browser/index.js -f iife --context window -n CommentParser es6/index.js && convert-extension cjs lib/",
|
|
53
52
|
"format": "prettier --write src tests",
|
|
54
53
|
"pretest": "rimraf coverage; npm run build",
|
|
55
54
|
"test": "prettier --check src tests && jest --verbose",
|
|
@@ -81,6 +80,5 @@
|
|
|
81
80
|
"bugs": {
|
|
82
81
|
"url": "https://github.com/syavorsky/comment-parser/issues"
|
|
83
82
|
},
|
|
84
|
-
"homepage": "https://github.com/syavorsky/comment-parser"
|
|
85
|
-
"dependencies": {}
|
|
83
|
+
"homepage": "https://github.com/syavorsky/comment-parser"
|
|
86
84
|
}
|
package/src/index.ts
CHANGED
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
import getParser, { Options as ParserOptions } from './parser/index';
|
|
2
|
-
import descriptionTokenizer from './parser/tokenizers/description';
|
|
3
|
-
import nameTokenizer from './parser/tokenizers/name';
|
|
4
|
-
import tagTokenizer from './parser/tokenizers/tag';
|
|
5
|
-
import typeTokenizer from './parser/tokenizers/type';
|
|
6
|
-
import getStringifier from './stringifier/index';
|
|
7
|
-
import alignTransform from './transforms/align';
|
|
8
|
-
import indentTransform from './transforms/indent';
|
|
9
|
-
import crlfTransform from './transforms/crlf';
|
|
10
|
-
import { flow as flowTransform } from './transforms/index';
|
|
11
|
-
import { rewireSpecs, rewireSource, seedBlock, seedTokens } from './util';
|
|
1
|
+
import getParser, { Options as ParserOptions } from './parser/index.js';
|
|
2
|
+
import descriptionTokenizer from './parser/tokenizers/description.js';
|
|
3
|
+
import nameTokenizer from './parser/tokenizers/name.js';
|
|
4
|
+
import tagTokenizer from './parser/tokenizers/tag.js';
|
|
5
|
+
import typeTokenizer from './parser/tokenizers/type.js';
|
|
6
|
+
import getStringifier from './stringifier/index.js';
|
|
7
|
+
import alignTransform from './transforms/align.js';
|
|
8
|
+
import indentTransform from './transforms/indent.js';
|
|
9
|
+
import crlfTransform from './transforms/crlf.js';
|
|
10
|
+
import { flow as flowTransform } from './transforms/index.js';
|
|
11
|
+
import { rewireSpecs, rewireSource, seedBlock, seedTokens } from './util.js';
|
|
12
12
|
|
|
13
|
-
export * from './primitives';
|
|
13
|
+
export * from './primitives.js';
|
|
14
14
|
|
|
15
15
|
export function parse(source: string, options: Partial<ParserOptions> = {}) {
|
|
16
16
|
return getParser(options)(source);
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
export const stringify = getStringifier();
|
|
20
|
-
export { default as inspect } from './stringifier/inspect';
|
|
20
|
+
export { default as inspect } from './stringifier/inspect.js';
|
|
21
21
|
|
|
22
22
|
export const transforms = {
|
|
23
23
|
flow: flowTransform,
|
package/src/parser/index.ts
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { Block, Line, Problem, BlockMarkers, Markers } from '../primitives';
|
|
2
|
-
import { splitLines } from '../util';
|
|
3
|
-
import blockParser from './block-parser';
|
|
4
|
-
import sourceParser from './source-parser';
|
|
5
|
-
import specParser from './spec-parser';
|
|
6
|
-
import { Tokenizer } from './tokenizers/index';
|
|
7
|
-
import tokenizeTag from './tokenizers/tag';
|
|
8
|
-
import tokenizeType from './tokenizers/type';
|
|
9
|
-
import tokenizeName from './tokenizers/name';
|
|
1
|
+
import { Block, Line, Problem, BlockMarkers, Markers } from '../primitives.js';
|
|
2
|
+
import { splitLines } from '../util.js';
|
|
3
|
+
import blockParser from './block-parser.js';
|
|
4
|
+
import sourceParser from './source-parser.js';
|
|
5
|
+
import specParser from './spec-parser.js';
|
|
6
|
+
import { Tokenizer } from './tokenizers/index.js';
|
|
7
|
+
import tokenizeTag from './tokenizers/tag.js';
|
|
8
|
+
import tokenizeType from './tokenizers/type.js';
|
|
9
|
+
import tokenizeName from './tokenizers/name.js';
|
|
10
10
|
import tokenizeDescription, {
|
|
11
11
|
getJoiner as getDescriptionJoiner,
|
|
12
|
-
} from './tokenizers/description';
|
|
12
|
+
} from './tokenizers/description.js';
|
|
13
13
|
|
|
14
14
|
export interface Options {
|
|
15
15
|
// start count for source line numbers
|
|
@@ -45,16 +45,12 @@ export default function getParser({
|
|
|
45
45
|
const parseSpec = specParser({ tokenizers });
|
|
46
46
|
const joinDescription = getDescriptionJoiner(spacing);
|
|
47
47
|
|
|
48
|
-
const notEmpty = (line: Line): boolean =>
|
|
49
|
-
line.tokens.description.trim() != '';
|
|
50
|
-
|
|
51
48
|
return function (source: string): Block[] {
|
|
52
49
|
const blocks: Block[] = [];
|
|
53
50
|
for (const line of splitLines(source)) {
|
|
54
51
|
const lines = parseSource(line);
|
|
55
52
|
|
|
56
53
|
if (lines === null) continue;
|
|
57
|
-
if (lines.find(notEmpty) === undefined) continue;
|
|
58
54
|
|
|
59
55
|
const sections = parseBlock(lines);
|
|
60
56
|
const specs = sections.slice(1).map(parseSpec);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Line, Tokens, BlockMarkers, Markers } from '../primitives';
|
|
2
|
-
import { seedTokens, splitSpace, splitCR } from '../util';
|
|
1
|
+
import { Line, Tokens, BlockMarkers, Markers } from '../primitives.js';
|
|
2
|
+
import { seedTokens, splitSpace, splitCR } from '../util.js';
|
|
3
3
|
|
|
4
4
|
export interface Options {
|
|
5
5
|
startLine: number;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Line, Spec } from '../primitives';
|
|
2
|
-
import { seedSpec } from '../util';
|
|
3
|
-
import { Tokenizer } from './tokenizers/index';
|
|
1
|
+
import { Line, Spec } from '../primitives.js';
|
|
2
|
+
import { seedSpec } from '../util.js';
|
|
3
|
+
import { Tokenizer } from './tokenizers/index.js';
|
|
4
4
|
|
|
5
5
|
export type Parser = (source: Line[]) => Spec;
|
|
6
6
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Spec, Line, BlockMarkers, Markers } from '../../primitives';
|
|
2
|
-
import { Tokenizer } from './index';
|
|
1
|
+
import { Spec, Line, BlockMarkers, Markers } from '../../primitives.js';
|
|
2
|
+
import { Tokenizer } from './index.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Walks over provided lines joining description token into a single string.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Spec, Line } from '../../primitives';
|
|
2
|
-
import { splitSpace, isSpace } from '../../util';
|
|
3
|
-
import { Tokenizer } from './index';
|
|
1
|
+
import { Spec, Line } from '../../primitives.js';
|
|
2
|
+
import { splitSpace, isSpace } from '../../util.js';
|
|
3
|
+
import { Tokenizer } from './index.js';
|
|
4
4
|
|
|
5
5
|
const isQuoted = (s: string) => s && s.startsWith('"') && s.endsWith('"');
|
|
6
6
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { Spec } from '../../primitives';
|
|
2
|
-
import { Tokenizer } from './index';
|
|
1
|
+
import { Spec } from '../../primitives.js';
|
|
2
|
+
import { Tokenizer } from './index.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
|
-
* Splits the `@prefix` from remaining `Spec.lines[].token.
|
|
5
|
+
* Splits the `@prefix` from remaining `Spec.lines[].token.description` into the `tag` token,
|
|
6
6
|
* and populates `spec.tag`
|
|
7
7
|
*/
|
|
8
8
|
export default function tagTokenizer(): Tokenizer {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Spec, Tokens } from '../../primitives';
|
|
2
|
-
import { splitSpace } from '../../util';
|
|
3
|
-
import { Tokenizer } from './index';
|
|
1
|
+
import { Spec, Tokens } from '../../primitives.js';
|
|
2
|
+
import { splitSpace } from '../../util.js';
|
|
3
|
+
import { Tokenizer } from './index.js';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* Joiner is a function taking collected type token string parts,
|
package/src/stringifier/index.ts
CHANGED
package/src/transforms/align.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Transform } from './index';
|
|
2
|
-
import { BlockMarkers, Block, Line, Markers } from '../primitives';
|
|
3
|
-
import { rewireSource } from '../util';
|
|
1
|
+
import { Transform } from './index.js';
|
|
2
|
+
import { BlockMarkers, Block, Line, Markers } from '../primitives.js';
|
|
3
|
+
import { rewireSource } from '../util.js';
|
|
4
4
|
|
|
5
5
|
interface Width {
|
|
6
6
|
start: number;
|
package/src/transforms/crlf.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Transform } from './index';
|
|
2
|
-
import { Block, Line } from '../primitives';
|
|
3
|
-
import { rewireSource } from '../util';
|
|
1
|
+
import { Transform } from './index.js';
|
|
2
|
+
import { Block, Line } from '../primitives.js';
|
|
3
|
+
import { rewireSource } from '../util.js';
|
|
4
4
|
|
|
5
5
|
const order = [
|
|
6
6
|
'end',
|
package/src/transforms/indent.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Transform } from './index';
|
|
2
|
-
import { Block, Line } from '../primitives';
|
|
3
|
-
import { rewireSource } from '../util';
|
|
1
|
+
import { Transform } from './index.js';
|
|
2
|
+
import { Block, Line } from '../primitives.js';
|
|
3
|
+
import { rewireSource } from '../util.js';
|
|
4
4
|
|
|
5
5
|
const pull = (offset: number) => (str) => str.slice(offset);
|
|
6
6
|
const push = (offset: number) => {
|
package/src/transforms/index.ts
CHANGED
package/src/util.ts
CHANGED
package/tests/e2e/parse.spec.js
CHANGED
|
@@ -480,15 +480,6 @@ test('description on the first line', () => {
|
|
|
480
480
|
]);
|
|
481
481
|
});
|
|
482
482
|
|
|
483
|
-
test('skip empty blocks', () => {
|
|
484
|
-
const parsed = parse(`
|
|
485
|
-
/**
|
|
486
|
-
*
|
|
487
|
-
*/
|
|
488
|
-
var a`);
|
|
489
|
-
expect(parsed).toHaveLength(0);
|
|
490
|
-
});
|
|
491
|
-
|
|
492
483
|
test('multiple blocks', () => {
|
|
493
484
|
const parsed = parse(`
|
|
494
485
|
/**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import getParser from '../../src/parser/block-parser';
|
|
2
|
-
import { Line } from '../../src/primitives';
|
|
3
|
-
import { seedTokens } from '../../src/util';
|
|
1
|
+
import getParser from '../../src/parser/block-parser.js';
|
|
2
|
+
import { Line } from '../../src/primitives.js';
|
|
3
|
+
import { seedTokens } from '../../src/util.js';
|
|
4
4
|
|
|
5
5
|
let source: Line[];
|
|
6
6
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import getParser from '../../src/parser/index';
|
|
2
|
-
import inspect from '../../src/stringifier/inspect';
|
|
3
|
-
import { seedBlock } from '../../src/util';
|
|
1
|
+
import getParser from '../../src/parser/index.js';
|
|
2
|
+
import inspect from '../../src/stringifier/inspect.js';
|
|
3
|
+
import { seedBlock } from '../../src/util.js';
|
|
4
4
|
|
|
5
5
|
test('multiple lines', () => {
|
|
6
6
|
const source = `
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import getParser from '../../src/parser';
|
|
2
|
-
import { seedTokens } from '../../src/util';
|
|
1
|
+
import getParser from '../../src/parser/index.js';
|
|
2
|
+
import { seedTokens } from '../../src/util.js';
|
|
3
3
|
|
|
4
4
|
test('block with tags', () => {
|
|
5
5
|
const parsed = getParser()(`
|
|
6
6
|
/**
|
|
7
|
-
* Description may go
|
|
7
|
+
* Description may go\x20
|
|
8
8
|
* over few lines followed by @tags
|
|
9
9
|
* @param {string} name name parameter
|
|
10
10
|
*
|
|
@@ -167,10 +167,10 @@ test('block with tags', () => {
|
|
|
167
167
|
]);
|
|
168
168
|
});
|
|
169
169
|
|
|
170
|
-
test('no source
|
|
170
|
+
test('no source cloning', () => {
|
|
171
171
|
const parsed = getParser()(`
|
|
172
172
|
/**
|
|
173
|
-
* Description may go
|
|
173
|
+
* Description may go\x20
|
|
174
174
|
* over few lines followed by @tags
|
|
175
175
|
* @param {string} name name parameter
|
|
176
176
|
*
|
|
@@ -179,11 +179,111 @@ test('no source clonning', () => {
|
|
|
179
179
|
expect(parsed[0].tags[0].source[0] === parsed[0].source[3]).toBe(true);
|
|
180
180
|
});
|
|
181
181
|
|
|
182
|
+
test('empty multi-line block', () => {
|
|
183
|
+
const parsed = getParser()(`
|
|
184
|
+
/**
|
|
185
|
+
*
|
|
186
|
+
*/`);
|
|
187
|
+
expect(parsed).toEqual([
|
|
188
|
+
{
|
|
189
|
+
description: '',
|
|
190
|
+
tags: [],
|
|
191
|
+
source: [
|
|
192
|
+
{
|
|
193
|
+
number: 1,
|
|
194
|
+
source: ' /**',
|
|
195
|
+
tokens: {
|
|
196
|
+
delimiter: '/**',
|
|
197
|
+
description: '',
|
|
198
|
+
end: '',
|
|
199
|
+
lineEnd: '',
|
|
200
|
+
name: '',
|
|
201
|
+
postDelimiter: '',
|
|
202
|
+
postName: '',
|
|
203
|
+
postTag: '',
|
|
204
|
+
postType: '',
|
|
205
|
+
start: ' ',
|
|
206
|
+
tag: '',
|
|
207
|
+
type: '',
|
|
208
|
+
},
|
|
209
|
+
},
|
|
210
|
+
{
|
|
211
|
+
number: 2,
|
|
212
|
+
source: ' *',
|
|
213
|
+
tokens: {
|
|
214
|
+
delimiter: '*',
|
|
215
|
+
description: '',
|
|
216
|
+
end: '',
|
|
217
|
+
lineEnd: '',
|
|
218
|
+
name: '',
|
|
219
|
+
postDelimiter: '',
|
|
220
|
+
postName: '',
|
|
221
|
+
postTag: '',
|
|
222
|
+
postType: '',
|
|
223
|
+
start: ' ',
|
|
224
|
+
tag: '',
|
|
225
|
+
type: '',
|
|
226
|
+
},
|
|
227
|
+
},
|
|
228
|
+
{
|
|
229
|
+
number: 3,
|
|
230
|
+
source: ' */',
|
|
231
|
+
tokens: {
|
|
232
|
+
delimiter: '',
|
|
233
|
+
description: '',
|
|
234
|
+
end: '*/',
|
|
235
|
+
lineEnd: '',
|
|
236
|
+
name: '',
|
|
237
|
+
postDelimiter: '',
|
|
238
|
+
postName: '',
|
|
239
|
+
postTag: '',
|
|
240
|
+
postType: '',
|
|
241
|
+
start: ' ',
|
|
242
|
+
tag: '',
|
|
243
|
+
type: '',
|
|
244
|
+
},
|
|
245
|
+
},
|
|
246
|
+
],
|
|
247
|
+
problems: [],
|
|
248
|
+
},
|
|
249
|
+
]);
|
|
250
|
+
});
|
|
251
|
+
|
|
252
|
+
test('empty one-line block', () => {
|
|
253
|
+
const parsed = getParser()(`
|
|
254
|
+
/** */`);
|
|
255
|
+
expect(parsed).toEqual([
|
|
256
|
+
{
|
|
257
|
+
description: '',
|
|
258
|
+
tags: [],
|
|
259
|
+
source: [
|
|
260
|
+
{
|
|
261
|
+
number: 1,
|
|
262
|
+
source: ' /** */',
|
|
263
|
+
tokens: {
|
|
264
|
+
delimiter: '/**',
|
|
265
|
+
description: '',
|
|
266
|
+
end: '*/',
|
|
267
|
+
lineEnd: '',
|
|
268
|
+
name: '',
|
|
269
|
+
postDelimiter: ' ',
|
|
270
|
+
postName: '',
|
|
271
|
+
postTag: '',
|
|
272
|
+
postType: '',
|
|
273
|
+
start: ' ',
|
|
274
|
+
tag: '',
|
|
275
|
+
type: '',
|
|
276
|
+
},
|
|
277
|
+
},
|
|
278
|
+
],
|
|
279
|
+
problems: [],
|
|
280
|
+
},
|
|
281
|
+
]);
|
|
282
|
+
});
|
|
283
|
+
|
|
182
284
|
test.each([
|
|
183
|
-
['empty', '/**\n*\n*/'],
|
|
184
285
|
['one-star', '/*\n*\n*/'],
|
|
185
286
|
['three-star', '/***\n*\n*/'],
|
|
186
|
-
['empty one-liner', '/** */'],
|
|
187
287
|
['one-star oneliner', '/* */'],
|
|
188
288
|
['three-star oneliner', '/*** */'],
|
|
189
289
|
])('skip block - %s', (name, source) => {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import getParser, { Parser } from '../../src/parser/source-parser';
|
|
2
|
-
import { Line } from '../../src/primitives';
|
|
3
|
-
import { splitLines, seedBlock, seedTokens } from '../../src/util';
|
|
1
|
+
import getParser, { Parser } from '../../src/parser/source-parser.js';
|
|
2
|
+
import { Line } from '../../src/primitives.js';
|
|
3
|
+
import { splitLines, seedBlock, seedTokens } from '../../src/util.js';
|
|
4
4
|
|
|
5
5
|
let _parse: Parser;
|
|
6
6
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { getJoiner } from '../../src/parser/tokenizers/description';
|
|
2
|
-
import { Line } from '../../src/primitives';
|
|
3
|
-
import { seedTokens } from '../../src/util';
|
|
1
|
+
import { getJoiner } from '../../src/parser/tokenizers/description.js';
|
|
2
|
+
import { Line } from '../../src/primitives.js';
|
|
3
|
+
import { seedTokens } from '../../src/util.js';
|
|
4
4
|
|
|
5
5
|
const source: Line[] = [
|
|
6
6
|
{
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import descriptionTokenizer from '../../src/parser/tokenizers/description';
|
|
2
|
-
import { seedSpec, seedTokens } from '../../src/util';
|
|
1
|
+
import descriptionTokenizer from '../../src/parser/tokenizers/description.js';
|
|
2
|
+
import { seedSpec, seedTokens } from '../../src/util.js';
|
|
3
3
|
|
|
4
4
|
const sourceSingle = [
|
|
5
5
|
{
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import nameTokenizer from '../../src/parser/tokenizers/name';
|
|
2
|
-
import { seedTokens, seedSpec } from '../../src/util';
|
|
1
|
+
import nameTokenizer from '../../src/parser/tokenizers/name.js';
|
|
2
|
+
import { seedTokens, seedSpec } from '../../src/util.js';
|
|
3
3
|
|
|
4
4
|
const tokenize = nameTokenizer();
|
|
5
5
|
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import descriptionTokenizer from '../../src/parser/tokenizers/description';
|
|
2
|
-
import nameTokenizer from '../../src/parser/tokenizers/name';
|
|
3
|
-
import tagTokenizer from '../../src/parser/tokenizers/tag';
|
|
4
|
-
import typeTokenizer from '../../src/parser/tokenizers/type';
|
|
5
|
-
import getParser from '../../src/parser/spec-parser';
|
|
6
|
-
import { seedTokens, seedSpec } from '../../src/util';
|
|
7
|
-
import { Spec, Problem } from '../../src/primitives';
|
|
1
|
+
import descriptionTokenizer from '../../src/parser/tokenizers/description.js';
|
|
2
|
+
import nameTokenizer from '../../src/parser/tokenizers/name.js';
|
|
3
|
+
import tagTokenizer from '../../src/parser/tokenizers/tag.js';
|
|
4
|
+
import typeTokenizer from '../../src/parser/tokenizers/type.js';
|
|
5
|
+
import getParser from '../../src/parser/spec-parser.js';
|
|
6
|
+
import { seedTokens, seedSpec } from '../../src/util.js';
|
|
7
|
+
import { Spec, Problem } from '../../src/primitives.js';
|
|
8
8
|
|
|
9
9
|
const parse = getParser({
|
|
10
10
|
tokenizers: [
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import tagTokenizer from '../../src/parser/tokenizers/tag';
|
|
2
|
-
import { seedTokens, seedSpec } from '../../src/util';
|
|
1
|
+
import tagTokenizer from '../../src/parser/tokenizers/tag.js';
|
|
2
|
+
import { seedTokens, seedSpec } from '../../src/util.js';
|
|
3
3
|
|
|
4
4
|
const tokenize = tagTokenizer();
|
|
5
5
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import typeTokenizer, { Joiner } from '../../src/parser/tokenizers/type';
|
|
2
|
-
import { seedTokens, seedSpec } from '../../src/util';
|
|
1
|
+
import typeTokenizer, { Joiner } from '../../src/parser/tokenizers/type.js';
|
|
2
|
+
import { seedTokens, seedSpec } from '../../src/util.js';
|
|
3
3
|
|
|
4
4
|
const tokenize = typeTokenizer();
|
|
5
5
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import align from '../../src/transforms/align';
|
|
2
|
-
import getParser, { Parser } from '../../src/parser/index';
|
|
3
|
-
import getStringifier, { Stringifier } from '../../src/stringifier/index';
|
|
1
|
+
import align from '../../src/transforms/align.js';
|
|
2
|
+
import getParser, { Parser } from '../../src/parser/index.js';
|
|
3
|
+
import getStringifier, { Stringifier } from '../../src/stringifier/index.js';
|
|
4
4
|
|
|
5
5
|
let parse: Parser;
|
|
6
6
|
let stringify: Stringifier;
|