comment-parser 1.2.4 → 1.3.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.
@@ -10,13 +10,14 @@ const primitives_1 = require("../../primitives.cjs");
10
10
  * Makes no changes to `spec.lines[].tokens` but joins them into `spec.description`
11
11
  * following given spacing srtategy
12
12
  * @param {Spacing} spacing tells how to handle the whitespace
13
+ * @param {BlockMarkers} markers tells how to handle comment block delimitation
13
14
  */
14
15
 
15
16
 
16
- function descriptionTokenizer(spacing = 'compact') {
17
+ function descriptionTokenizer(spacing = 'compact', markers = primitives_1.Markers) {
17
18
  const join = getJoiner(spacing);
18
19
  return spec => {
19
- spec.description = join(spec.source);
20
+ spec.description = join(spec.source, markers);
20
21
  return spec;
21
22
  };
22
23
  }
@@ -31,7 +32,7 @@ function getJoiner(spacing) {
31
32
 
32
33
  exports.getJoiner = getJoiner;
33
34
 
34
- function compactJoiner(lines) {
35
+ function compactJoiner(lines, markers = primitives_1.Markers) {
35
36
  return lines.map(({
36
37
  tokens: {
37
38
  description
@@ -47,13 +48,13 @@ const getDescription = ({
47
48
  tokens
48
49
  }) => (tokens.delimiter === '' ? tokens.start : tokens.postDelimiter.slice(1)) + tokens.description;
49
50
 
50
- function preserveJoiner(lines) {
51
+ function preserveJoiner(lines, markers = primitives_1.Markers) {
51
52
  if (lines.length === 0) return ''; // skip the opening line with no description
52
53
 
53
- if (lines[0].tokens.description === '' && lines[0].tokens.delimiter === primitives_1.Markers.start) lines = lines.slice(1); // skip the closing line with no description
54
+ if (lines[0].tokens.description === '' && lines[0].tokens.delimiter === markers.start) lines = lines.slice(1); // skip the closing line with no description
54
55
 
55
56
  const lastLine = lines[lines.length - 1];
56
- if (lastLine !== undefined && lastLine.tokens.description === '' && lastLine.tokens.end.endsWith(primitives_1.Markers.end)) lines = lines.slice(0, -1); // description starts at the last line of type definition
57
+ if (lastLine !== undefined && lastLine.tokens.description === '' && lastLine.tokens.end.endsWith(markers.end)) lines = lines.slice(0, -1); // description starts at the last line of type definition
57
58
 
58
59
  lines = lines.slice(lines.reduce(lineNo, 0));
59
60
  return lines.map(getDescription).join('\n');
@@ -1 +1 @@
1
- {"version":3,"sources":["description.js"],"names":["Object","defineProperty","exports","value","getJoiner","primitives_1","require","descriptionTokenizer","spacing","join","spec","description","source","default","compactJoiner","preserveJoiner","lines","map","tokens","trim","filter","lineNo","num","i","type","getDescription","delimiter","start","postDelimiter","slice","length","Markers","lastLine","undefined","end","endsWith","reduce"],"mappings":"AAAA;;AACAA,MAAM,CAACC,cAAP,CAAsBC,OAAtB,EAA+B,YAA/B,EAA6C;AAAEC,EAAAA,KAAK,EAAE;AAAT,CAA7C;AACAD,OAAO,CAACE,SAAR,GAAoB,KAAK,CAAzB;;AACA,MAAMC,YAAY,GAAGC,OAAH,wBAAlB;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASC,oBAAT,CAA8BC,OAAO,GAAG,SAAxC,EAAmD;AAC/C,QAAMC,IAAI,GAAGL,SAAS,CAACI,OAAD,CAAtB;AACA,SAAQE,IAAD,IAAU;AACbA,IAAAA,IAAI,CAACC,WAAL,GAAmBF,IAAI,CAACC,IAAI,CAACE,MAAN,CAAvB;AACA,WAAOF,IAAP;AACH,GAHD;AAIH;;AACDR,OAAO,CAACW,OAAR,GAAkBN,oBAAlB;;AACA,SAASH,SAAT,CAAmBI,OAAnB,EAA4B;AACxB,MAAIA,OAAO,KAAK,SAAhB,EACI,OAAOM,aAAP;AACJ,MAAIN,OAAO,KAAK,UAAhB,EACI,OAAOO,cAAP;AACJ,SAAOP,OAAP;AACH;;AACDN,OAAO,CAACE,SAAR,GAAoBA,SAApB;;AACA,SAASU,aAAT,CAAuBE,KAAvB,EAA8B;AAC1B,SAAOA,KAAK,CACPC,GADE,CACE,CAAC;AAAEC,IAAAA,MAAM,EAAE;AAAEP,MAAAA;AAAF;AAAV,GAAD,KAAiCA,WAAW,CAACQ,IAAZ,EADnC,EAEFC,MAFE,CAEMT,WAAD,IAAiBA,WAAW,KAAK,EAFtC,EAGFF,IAHE,CAGG,GAHH,CAAP;AAIH;;AACD,MAAMY,MAAM,GAAG,CAACC,GAAD,EAAM;AAAEJ,EAAAA;AAAF,CAAN,EAAkBK,CAAlB,KAAwBL,MAAM,CAACM,IAAP,KAAgB,EAAhB,GAAqBF,GAArB,GAA2BC,CAAlE;;AACA,MAAME,cAAc,GAAG,CAAC;AAAEP,EAAAA;AAAF,CAAD,KAAgB,CAACA,MAAM,CAACQ,SAAP,KAAqB,EAArB,GAA0BR,MAAM,CAACS,KAAjC,GAAyCT,MAAM,CAACU,aAAP,CAAqBC,KAArB,CAA2B,CAA3B,CAA1C,IACnCX,MAAM,CAACP,WADX;;AAEA,SAASI,cAAT,CAAwBC,KAAxB,EAA+B;AAC3B,MAAIA,KAAK,CAACc,MAAN,KAAiB,CAArB,EACI,OAAO,EAAP,CAFuB,CAG3B;;AACA,MAAId,KAAK,CAAC,CAAD,CAAL,CAASE,MAAT,CAAgBP,WAAhB,KAAgC,EAAhC,IACAK,KAAK,CAAC,CAAD,CAAL,CAASE,MAAT,CAAgBQ,SAAhB,KAA8BrB,YAAY,CAAC0B,OAAb,CAAqBJ,KADvD,EAEIX,KAAK,GAAGA,KAAK,CAACa,KAAN,CAAY,CAAZ,CAAR,CANuB,CAO3B;;AACA,QAAMG,QAAQ,GAAGhB,KAAK,CAACA,KAAK,CAACc,MAAN,GAAe,CAAhB,CAAtB;AACA,MAAIE,QAAQ,KAAKC,SAAb,IACAD,QAAQ,CAACd,MAAT,CAAgBP,WAAhB,KAAgC,EADhC,IAEAqB,QAAQ,CAACd,MAAT,CAAgBgB,GAAhB,CAAoBC,QAApB,CAA6B9B,YAAY,CAAC0B,OAAb,CAAqBG,GAAlD,CAFJ,EAGIlB,KAAK,GAAGA,KAAK,CAACa,KAAN,CAAY,CAAZ,EAAe,CAAC,CAAhB,CAAR,CAZuB,CAa3B;;AACAb,EAAAA,KAAK,GAAGA,KAAK,CAACa,KAAN,CAAYb,KAAK,CAACoB,MAAN,CAAaf,MAAb,EAAqB,CAArB,CAAZ,CAAR;AACA,SAAOL,KAAK,CAACC,GAAN,CAAUQ,cAAV,EAA0BhB,IAA1B,CAA+B,IAA/B,CAAP;AACH","sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getJoiner = void 0;\nconst primitives_1 = require(\"../../primitives\");\n/**\n * Makes no changes to `spec.lines[].tokens` but joins them into `spec.description`\n * following given spacing srtategy\n * @param {Spacing} spacing tells how to handle the whitespace\n */\nfunction descriptionTokenizer(spacing = 'compact') {\n const join = getJoiner(spacing);\n return (spec) => {\n spec.description = join(spec.source);\n return spec;\n };\n}\nexports.default = descriptionTokenizer;\nfunction getJoiner(spacing) {\n if (spacing === 'compact')\n return compactJoiner;\n if (spacing === 'preserve')\n return preserveJoiner;\n return spacing;\n}\nexports.getJoiner = getJoiner;\nfunction compactJoiner(lines) {\n return lines\n .map(({ tokens: { description } }) => description.trim())\n .filter((description) => description !== '')\n .join(' ');\n}\nconst lineNo = (num, { tokens }, i) => tokens.type === '' ? num : i;\nconst getDescription = ({ tokens }) => (tokens.delimiter === '' ? tokens.start : tokens.postDelimiter.slice(1)) +\n tokens.description;\nfunction preserveJoiner(lines) {\n if (lines.length === 0)\n return '';\n // skip the opening line with no description\n if (lines[0].tokens.description === '' &&\n lines[0].tokens.delimiter === primitives_1.Markers.start)\n lines = lines.slice(1);\n // skip the closing line with no description\n const lastLine = lines[lines.length - 1];\n if (lastLine !== undefined &&\n lastLine.tokens.description === '' &&\n lastLine.tokens.end.endsWith(primitives_1.Markers.end))\n lines = lines.slice(0, -1);\n // description starts at the last line of type definition\n lines = lines.slice(lines.reduce(lineNo, 0));\n return lines.map(getDescription).join('\\n');\n}\n"],"file":"description.cjs"}
1
+ {"version":3,"sources":["description.js"],"names":["Object","defineProperty","exports","value","getJoiner","primitives_1","require","descriptionTokenizer","spacing","markers","Markers","join","spec","description","source","default","compactJoiner","preserveJoiner","lines","map","tokens","trim","filter","lineNo","num","i","type","getDescription","delimiter","start","postDelimiter","slice","length","lastLine","undefined","end","endsWith","reduce"],"mappings":"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","sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getJoiner = void 0;\nconst primitives_1 = require(\"../../primitives\");\n/**\n * Makes no changes to `spec.lines[].tokens` but joins them into `spec.description`\n * following given spacing srtategy\n * @param {Spacing} spacing tells how to handle the whitespace\n * @param {BlockMarkers} markers tells how to handle comment block delimitation\n */\nfunction descriptionTokenizer(spacing = 'compact', markers = primitives_1.Markers) {\n const join = getJoiner(spacing);\n return (spec) => {\n spec.description = join(spec.source, markers);\n return spec;\n };\n}\nexports.default = descriptionTokenizer;\nfunction getJoiner(spacing) {\n if (spacing === 'compact')\n return compactJoiner;\n if (spacing === 'preserve')\n return preserveJoiner;\n return spacing;\n}\nexports.getJoiner = getJoiner;\nfunction compactJoiner(lines, markers = primitives_1.Markers) {\n return lines\n .map(({ tokens: { description } }) => description.trim())\n .filter((description) => description !== '')\n .join(' ');\n}\nconst lineNo = (num, { tokens }, i) => tokens.type === '' ? num : i;\nconst getDescription = ({ tokens }) => (tokens.delimiter === '' ? tokens.start : tokens.postDelimiter.slice(1)) +\n tokens.description;\nfunction preserveJoiner(lines, markers = primitives_1.Markers) {\n if (lines.length === 0)\n return '';\n // skip the opening line with no description\n if (lines[0].tokens.description === '' &&\n lines[0].tokens.delimiter === markers.start)\n lines = lines.slice(1);\n // skip the closing line with no description\n const lastLine = lines[lines.length - 1];\n if (lastLine !== undefined &&\n lastLine.tokens.description === '' &&\n lastLine.tokens.end.endsWith(markers.end))\n lines = lines.slice(0, -1);\n // description starts at the last line of type definition\n lines = lines.slice(lines.reduce(lineNo, 0));\n return lines.map(getDescription).join('\\n');\n}\n"],"file":"description.cjs"}
@@ -1,9 +1,9 @@
1
- import { Line } from '../../primitives';
1
+ import { Line, BlockMarkers, Markers } from '../../primitives';
2
2
  import { Tokenizer } from './index';
3
3
  /**
4
4
  * Walks over provided lines joining description token into a single string.
5
5
  * */
6
- export declare type Joiner = (lines: Line[]) => string;
6
+ export declare type Joiner = (lines: Line[], markers?: BlockMarkers) => string;
7
7
  /**
8
8
  * Shortcut for standard Joiners
9
9
  * compact - strip surrounding whitespace and concat lines using a single string
@@ -14,6 +14,7 @@ export declare type Spacing = 'compact' | 'preserve' | Joiner;
14
14
  * Makes no changes to `spec.lines[].tokens` but joins them into `spec.description`
15
15
  * following given spacing srtategy
16
16
  * @param {Spacing} spacing tells how to handle the whitespace
17
+ * @param {BlockMarkers} markers tells how to handle comment block delimitation
17
18
  */
18
- export default function descriptionTokenizer(spacing?: Spacing): Tokenizer;
19
+ export default function descriptionTokenizer(spacing?: Spacing, markers?: typeof Markers): Tokenizer;
19
20
  export declare function getJoiner(spacing: Spacing): Joiner;
@@ -4,6 +4,8 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.Markers = void 0;
7
+ /** @deprecated */
8
+
7
9
  var Markers;
8
10
 
9
11
  (function (Markers) {
@@ -1 +1 @@
1
- {"version":3,"sources":["primitives.js"],"names":["Object","defineProperty","exports","value","Markers"],"mappings":"AAAA;;AACAA,MAAM,CAACC,cAAP,CAAsBC,OAAtB,EAA+B,YAA/B,EAA6C;AAAEC,EAAAA,KAAK,EAAE;AAAT,CAA7C;AACAD,OAAO,CAACE,OAAR,GAAkB,KAAK,CAAvB;AACA,IAAIA,OAAJ;;AACA,CAAC,UAAUA,OAAV,EAAmB;AAChBA,EAAAA,OAAO,CAAC,OAAD,CAAP,GAAmB,KAAnB;AACAA,EAAAA,OAAO,CAAC,SAAD,CAAP,GAAqB,MAArB;AACAA,EAAAA,OAAO,CAAC,OAAD,CAAP,GAAmB,GAAnB;AACAA,EAAAA,OAAO,CAAC,KAAD,CAAP,GAAiB,IAAjB;AACH,CALD,EAKGA,OAAO,GAAGF,OAAO,CAACE,OAAR,KAAoBF,OAAO,CAACE,OAAR,GAAkB,EAAtC,CALb","sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Markers = void 0;\nvar Markers;\n(function (Markers) {\n Markers[\"start\"] = \"/**\";\n Markers[\"nostart\"] = \"/***\";\n Markers[\"delim\"] = \"*\";\n Markers[\"end\"] = \"*/\";\n})(Markers = exports.Markers || (exports.Markers = {}));\n"],"file":"primitives.cjs"}
1
+ {"version":3,"sources":["primitives.js"],"names":["Object","defineProperty","exports","value","Markers"],"mappings":"AAAA;;AACAA,MAAM,CAACC,cAAP,CAAsBC,OAAtB,EAA+B,YAA/B,EAA6C;AAAEC,EAAAA,KAAK,EAAE;AAAT,CAA7C;AACAD,OAAO,CAACE,OAAR,GAAkB,KAAK,CAAvB;AACA;;AACA,IAAIA,OAAJ;;AACA,CAAC,UAAUA,OAAV,EAAmB;AAChBA,EAAAA,OAAO,CAAC,OAAD,CAAP,GAAmB,KAAnB;AACAA,EAAAA,OAAO,CAAC,SAAD,CAAP,GAAqB,MAArB;AACAA,EAAAA,OAAO,CAAC,OAAD,CAAP,GAAmB,GAAnB;AACAA,EAAAA,OAAO,CAAC,KAAD,CAAP,GAAiB,IAAjB;AACH,CALD,EAKGA,OAAO,GAAGF,OAAO,CAACE,OAAR,KAAoBF,OAAO,CAACE,OAAR,GAAkB,EAAtC,CALb","sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Markers = void 0;\n/** @deprecated */\nvar Markers;\n(function (Markers) {\n Markers[\"start\"] = \"/**\";\n Markers[\"nostart\"] = \"/***\";\n Markers[\"delim\"] = \"*\";\n Markers[\"end\"] = \"*/\";\n})(Markers = exports.Markers || (exports.Markers = {}));\n"],"file":"primitives.cjs"}
@@ -1,9 +1,16 @@
1
+ /** @deprecated */
1
2
  export declare enum Markers {
2
3
  start = "/**",
3
4
  nostart = "/***",
4
5
  delim = "*",
5
6
  end = "*/"
6
7
  }
8
+ export interface BlockMarkers {
9
+ start: string;
10
+ nostart: string;
11
+ delim: string;
12
+ end: string;
13
+ }
7
14
  export interface Block {
8
15
  description: string;
9
16
  tags: Spec[];
@@ -26,10 +26,10 @@ const zeroWidth = {
26
26
  name: 0
27
27
  };
28
28
 
29
- const getWidth = (w, {
29
+ const getWidth = (markers = primitives_1.Markers) => (w, {
30
30
  tokens: t
31
31
  }) => ({
32
- start: t.delimiter === primitives_1.Markers.start ? t.start.length : w.start,
32
+ start: t.delimiter === markers.start ? t.start.length : w.start,
33
33
  tag: Math.max(w.tag, t.tag.length),
34
34
  type: Math.max(w.type, t.type.length),
35
35
  name: Math.max(w.name, t.name.length)
@@ -37,7 +37,7 @@ const getWidth = (w, {
37
37
 
38
38
  const space = len => ''.padStart(len, ' ');
39
39
 
40
- function align() {
40
+ function align(markers = primitives_1.Markers) {
41
41
  let intoTags = false;
42
42
  let w;
43
43
 
@@ -46,7 +46,7 @@ function align() {
46
46
  if (tokens.tag !== '') intoTags = true;
47
47
  const isEmpty = tokens.tag === '' && tokens.name === '' && tokens.type === '' && tokens.description === ''; // dangling '*/'
48
48
 
49
- if (tokens.end === primitives_1.Markers.end && isEmpty) {
49
+ if (tokens.end === markers.end && isEmpty) {
50
50
  tokens.start = space(w.start + 1);
51
51
  return Object.assign(Object.assign({}, line), {
52
52
  tokens
@@ -54,11 +54,11 @@ function align() {
54
54
  }
55
55
 
56
56
  switch (tokens.delimiter) {
57
- case primitives_1.Markers.start:
57
+ case markers.start:
58
58
  tokens.start = space(w.start);
59
59
  break;
60
60
 
61
- case primitives_1.Markers.delim:
61
+ case markers.delim:
62
62
  tokens.start = space(w.start + 1);
63
63
  break;
64
64
 
@@ -116,7 +116,7 @@ function align() {
116
116
  } = _a,
117
117
  fields = __rest(_a, ["source"]);
118
118
 
119
- w = source.reduce(getWidth, Object.assign({}, zeroWidth));
119
+ w = source.reduce(getWidth(markers), Object.assign({}, zeroWidth));
120
120
  return util_1.rewireSource(Object.assign(Object.assign({}, fields), {
121
121
  source: source.map(update)
122
122
  }));
@@ -1 +1 @@
1
- {"version":3,"sources":["align.js"],"names":["__rest","s","e","t","p","Object","prototype","hasOwnProperty","call","indexOf","getOwnPropertySymbols","i","length","propertyIsEnumerable","defineProperty","exports","value","primitives_1","require","util_1","zeroWidth","start","tag","type","name","getWidth","w","tokens","delimiter","Markers","Math","max","space","len","padStart","align","intoTags","update","line","assign","isEmpty","description","end","delim","postDelimiter","nothingAfter","postName","postType","postTag","_a","source","fields","reduce","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 primitives_1 = require(\"../primitives\");\nconst util_1 = require(\"../util\");\nconst zeroWidth = {\n start: 0,\n tag: 0,\n type: 0,\n name: 0,\n};\nconst getWidth = (w, { tokens: t }) => ({\n start: t.delimiter === primitives_1.Markers.start ? t.start.length : w.start,\n tag: Math.max(w.tag, t.tag.length),\n type: Math.max(w.type, t.type.length),\n name: Math.max(w.name, t.name.length),\n});\nconst space = (len) => ''.padStart(len, ' ');\nfunction align() {\n let intoTags = false;\n let w;\n function update(line) {\n const tokens = Object.assign({}, line.tokens);\n if (tokens.tag !== '')\n intoTags = true;\n const isEmpty = tokens.tag === '' &&\n tokens.name === '' &&\n tokens.type === '' &&\n tokens.description === '';\n // dangling '*/'\n if (tokens.end === primitives_1.Markers.end && isEmpty) {\n tokens.start = space(w.start + 1);\n return Object.assign(Object.assign({}, line), { tokens });\n }\n switch (tokens.delimiter) {\n case primitives_1.Markers.start:\n tokens.start = space(w.start);\n break;\n case primitives_1.Markers.delim:\n tokens.start = space(w.start + 1);\n break;\n default:\n tokens.delimiter = '';\n tokens.start = space(w.start + 2); // compensate delimiter\n }\n if (!intoTags) {\n tokens.postDelimiter = tokens.description === '' ? '' : ' ';\n return Object.assign(Object.assign({}, line), { tokens });\n }\n const nothingAfter = {\n delim: false,\n tag: false,\n type: false,\n name: false,\n };\n if (tokens.description === '') {\n nothingAfter.name = true;\n tokens.postName = '';\n if (tokens.name === '') {\n nothingAfter.type = true;\n tokens.postType = '';\n if (tokens.type === '') {\n nothingAfter.tag = true;\n tokens.postTag = '';\n if (tokens.tag === '') {\n nothingAfter.delim = true;\n }\n }\n }\n }\n tokens.postDelimiter = nothingAfter.delim ? '' : ' ';\n if (!nothingAfter.tag)\n tokens.postTag = space(w.tag - tokens.tag.length + 1);\n if (!nothingAfter.type)\n tokens.postType = space(w.type - tokens.type.length + 1);\n if (!nothingAfter.name)\n tokens.postName = space(w.name - tokens.name.length + 1);\n return Object.assign(Object.assign({}, line), { tokens });\n }\n return (_a) => {\n var { source } = _a, fields = __rest(_a, [\"source\"]);\n w = source.reduce(getWidth, Object.assign({}, zeroWidth));\n return util_1.rewireSource(Object.assign(Object.assign({}, fields), { source: source.map(update) }));\n };\n}\nexports.default = align;\n"],"file":"align.cjs"}
1
+ {"version":3,"sources":["align.js"],"names":["__rest","s","e","t","p","Object","prototype","hasOwnProperty","call","indexOf","getOwnPropertySymbols","i","length","propertyIsEnumerable","defineProperty","exports","value","primitives_1","require","util_1","zeroWidth","start","tag","type","name","getWidth","markers","Markers","w","tokens","delimiter","Math","max","space","len","padStart","align","intoTags","update","line","assign","isEmpty","description","end","delim","postDelimiter","nothingAfter","postName","postType","postTag","_a","source","fields","reduce","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 primitives_1 = require(\"../primitives\");\nconst util_1 = require(\"../util\");\nconst zeroWidth = {\n start: 0,\n tag: 0,\n type: 0,\n name: 0,\n};\nconst getWidth = (markers = primitives_1.Markers) => (w, { tokens: t }) => ({\n start: t.delimiter === markers.start ? t.start.length : w.start,\n tag: Math.max(w.tag, t.tag.length),\n type: Math.max(w.type, t.type.length),\n name: Math.max(w.name, t.name.length),\n});\nconst space = (len) => ''.padStart(len, ' ');\nfunction align(markers = primitives_1.Markers) {\n let intoTags = false;\n let w;\n function update(line) {\n const tokens = Object.assign({}, line.tokens);\n if (tokens.tag !== '')\n intoTags = true;\n const isEmpty = tokens.tag === '' &&\n tokens.name === '' &&\n tokens.type === '' &&\n tokens.description === '';\n // dangling '*/'\n if (tokens.end === markers.end && isEmpty) {\n tokens.start = space(w.start + 1);\n return Object.assign(Object.assign({}, line), { tokens });\n }\n switch (tokens.delimiter) {\n case markers.start:\n tokens.start = space(w.start);\n break;\n case markers.delim:\n tokens.start = space(w.start + 1);\n break;\n default:\n tokens.delimiter = '';\n tokens.start = space(w.start + 2); // compensate delimiter\n }\n if (!intoTags) {\n tokens.postDelimiter = tokens.description === '' ? '' : ' ';\n return Object.assign(Object.assign({}, line), { tokens });\n }\n const nothingAfter = {\n delim: false,\n tag: false,\n type: false,\n name: false,\n };\n if (tokens.description === '') {\n nothingAfter.name = true;\n tokens.postName = '';\n if (tokens.name === '') {\n nothingAfter.type = true;\n tokens.postType = '';\n if (tokens.type === '') {\n nothingAfter.tag = true;\n tokens.postTag = '';\n if (tokens.tag === '') {\n nothingAfter.delim = true;\n }\n }\n }\n }\n tokens.postDelimiter = nothingAfter.delim ? '' : ' ';\n if (!nothingAfter.tag)\n tokens.postTag = space(w.tag - tokens.tag.length + 1);\n if (!nothingAfter.type)\n tokens.postType = space(w.type - tokens.type.length + 1);\n if (!nothingAfter.name)\n tokens.postName = space(w.name - tokens.name.length + 1);\n return Object.assign(Object.assign({}, line), { tokens });\n }\n return (_a) => {\n var { source } = _a, fields = __rest(_a, [\"source\"]);\n w = source.reduce(getWidth(markers), Object.assign({}, zeroWidth));\n return util_1.rewireSource(Object.assign(Object.assign({}, fields), { source: source.map(update) }));\n };\n}\nexports.default = align;\n"],"file":"align.cjs"}
@@ -1,2 +1,3 @@
1
1
  import { Transform } from './index';
2
- export default function align(): Transform;
2
+ import { Markers } from '../primitives';
3
+ export default function align(markers?: typeof Markers): Transform;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "comment-parser",
3
- "version": "1.2.4",
3
+ "version": "1.3.0",
4
4
  "description": "Generic JSDoc-like comment parser",
5
5
  "type": "module",
6
6
  "main": "lib/index.cjs",
@@ -66,15 +66,16 @@
66
66
  ],
67
67
  "author": "Sergiy Yavorsky <sergiy@yavorsky.me> (https://github.com/syavorsky)",
68
68
  "contributors": [
69
+ "Alex Grozav (https://github.com/alexgrozav)",
69
70
  "Alexej Yaroshevich (https://github.com/zxqfox)",
70
71
  "Andre Wachsmuth (https://github.com/blutorange)",
71
72
  "Brett Zamir (https://github.com/brettz9)",
72
73
  "Dieter Oberkofler (https://github.com/doberkofler)",
73
74
  "Evgeny Reznichenko (https://github.com/zxcabs)",
74
75
  "Javier \"Ciberma\" Mora (https://github.com/jhm-ciberman)",
76
+ "Jayden Seric (https://github.com/jaydenseric)",
75
77
  "Jordan Harband (https://github.com/ljharb)",
76
- "tengattack (https://github.com/tengattack)",
77
- "Jayden Seric (https://github.com/jaydenseric)"
78
+ "tengattack (https://github.com/tengattack)"
78
79
  ],
79
80
  "license": "MIT",
80
81
  "bugs": {
@@ -1,4 +1,4 @@
1
- import { Block, Line, Problem } from '../primitives';
1
+ import { Block, Line, Problem, BlockMarkers, Markers } from '../primitives';
2
2
  import { splitLines } from '../util';
3
3
  import blockParser from './block-parser';
4
4
  import sourceParser from './source-parser';
@@ -18,6 +18,8 @@ export interface Options {
18
18
  fence: string;
19
19
  // block and comment description compaction strategy
20
20
  spacing: 'compact' | 'preserve';
21
+ // comment description markers
22
+ markers: BlockMarkers;
21
23
  // tokenizer functions extracting name, type, and description out of tag, see Tokenizer
22
24
  tokenizers: Tokenizer[];
23
25
  }
@@ -28,6 +30,7 @@ export default function getParser({
28
30
  startLine = 0,
29
31
  fence = '```',
30
32
  spacing = 'compact',
33
+ markers = Markers,
31
34
  tokenizers = [
32
35
  tokenizeTag(),
33
36
  tokenizeType(spacing),
@@ -37,7 +40,7 @@ export default function getParser({
37
40
  }: Partial<Options> = {}): Parser {
38
41
  if (startLine < 0 || startLine % 1 > 0) throw new Error('Invalid startLine');
39
42
 
40
- const parseSource = sourceParser({ startLine });
43
+ const parseSource = sourceParser({ startLine, markers });
41
44
  const parseBlock = blockParser({ fence });
42
45
  const parseSpec = specParser({ tokenizers });
43
46
  const joinDescription = getDescriptionJoiner(spacing);
@@ -57,7 +60,7 @@ export default function getParser({
57
60
  const specs = sections.slice(1).map(parseSpec);
58
61
 
59
62
  blocks.push({
60
- description: joinDescription(sections[0]),
63
+ description: joinDescription(sections[0], markers),
61
64
  tags: specs,
62
65
  source: lines,
63
66
  problems: specs.reduce(
@@ -1,14 +1,16 @@
1
- import { Line, Markers, Tokens } from '../primitives';
1
+ import { Line, Tokens, BlockMarkers, Markers } from '../primitives';
2
2
  import { seedTokens, splitSpace, splitCR } from '../util';
3
3
 
4
4
  export interface Options {
5
5
  startLine: number;
6
+ markers: BlockMarkers;
6
7
  }
7
8
 
8
9
  export type Parser = (source: string) => Line[] | null;
9
10
 
10
11
  export default function getParser({
11
12
  startLine = 0,
13
+ markers = Markers,
12
14
  }: Partial<Options> = {}): Parser {
13
15
  let block: Line[] | null = null;
14
16
  let num = startLine;
@@ -22,12 +24,12 @@ export default function getParser({
22
24
 
23
25
  if (
24
26
  block === null &&
25
- rest.startsWith(Markers.start) &&
26
- !rest.startsWith(Markers.nostart)
27
+ rest.startsWith(markers.start) &&
28
+ !rest.startsWith(markers.nostart)
27
29
  ) {
28
30
  block = [];
29
- tokens.delimiter = rest.slice(0, Markers.start.length);
30
- rest = rest.slice(Markers.start.length);
31
+ tokens.delimiter = rest.slice(0, markers.start.length);
32
+ rest = rest.slice(markers.start.length);
31
33
  [tokens.postDelimiter, rest] = splitSpace(rest);
32
34
  }
33
35
 
@@ -36,22 +38,22 @@ export default function getParser({
36
38
  return null;
37
39
  }
38
40
 
39
- const isClosed = rest.trimRight().endsWith(Markers.end);
41
+ const isClosed = rest.trimRight().endsWith(markers.end);
40
42
 
41
43
  if (
42
44
  tokens.delimiter === '' &&
43
- rest.startsWith(Markers.delim) &&
44
- !rest.startsWith(Markers.end)
45
+ rest.startsWith(markers.delim) &&
46
+ !rest.startsWith(markers.end)
45
47
  ) {
46
- tokens.delimiter = Markers.delim;
47
- rest = rest.slice(Markers.delim.length);
48
+ tokens.delimiter = markers.delim;
49
+ rest = rest.slice(markers.delim.length);
48
50
  [tokens.postDelimiter, rest] = splitSpace(rest);
49
51
  }
50
52
 
51
53
  if (isClosed) {
52
54
  const trimmed = rest.trimRight();
53
- tokens.end = rest.slice(trimmed.length - Markers.end.length);
54
- rest = trimmed.slice(0, -Markers.end.length);
55
+ tokens.end = rest.slice(trimmed.length - markers.end.length);
56
+ rest = trimmed.slice(0, -markers.end.length);
55
57
  }
56
58
 
57
59
  tokens.description = rest;
@@ -1,10 +1,10 @@
1
- import { Spec, Line, Markers } from '../../primitives';
1
+ import { Spec, Line, BlockMarkers, Markers } from '../../primitives';
2
2
  import { Tokenizer } from './index';
3
3
 
4
4
  /**
5
5
  * Walks over provided lines joining description token into a single string.
6
6
  * */
7
- export type Joiner = (lines: Line[]) => string;
7
+ export type Joiner = (lines: Line[], markers?: BlockMarkers) => string;
8
8
 
9
9
  /**
10
10
  * Shortcut for standard Joiners
@@ -17,13 +17,15 @@ export type Spacing = 'compact' | 'preserve' | Joiner;
17
17
  * Makes no changes to `spec.lines[].tokens` but joins them into `spec.description`
18
18
  * following given spacing srtategy
19
19
  * @param {Spacing} spacing tells how to handle the whitespace
20
+ * @param {BlockMarkers} markers tells how to handle comment block delimitation
20
21
  */
21
22
  export default function descriptionTokenizer(
22
- spacing: Spacing = 'compact'
23
+ spacing: Spacing = 'compact',
24
+ markers = Markers
23
25
  ): Tokenizer {
24
26
  const join = getJoiner(spacing);
25
27
  return (spec: Spec): Spec => {
26
- spec.description = join(spec.source);
28
+ spec.description = join(spec.source, markers);
27
29
  return spec;
28
30
  };
29
31
  }
@@ -31,10 +33,11 @@ export default function descriptionTokenizer(
31
33
  export function getJoiner(spacing: Spacing): Joiner {
32
34
  if (spacing === 'compact') return compactJoiner;
33
35
  if (spacing === 'preserve') return preserveJoiner;
36
+
34
37
  return spacing;
35
38
  }
36
39
 
37
- function compactJoiner(lines: Line[]): string {
40
+ function compactJoiner(lines: Line[], markers = Markers): string {
38
41
  return lines
39
42
  .map(({ tokens: { description } }: Line) => description.trim())
40
43
  .filter((description) => description !== '')
@@ -48,13 +51,13 @@ const getDescription = ({ tokens }: Line) =>
48
51
  (tokens.delimiter === '' ? tokens.start : tokens.postDelimiter.slice(1)) +
49
52
  tokens.description;
50
53
 
51
- function preserveJoiner(lines: Line[]): string {
54
+ function preserveJoiner(lines: Line[], markers = Markers): string {
52
55
  if (lines.length === 0) return '';
53
56
 
54
57
  // skip the opening line with no description
55
58
  if (
56
59
  lines[0].tokens.description === '' &&
57
- lines[0].tokens.delimiter === Markers.start
60
+ lines[0].tokens.delimiter === markers.start
58
61
  )
59
62
  lines = lines.slice(1);
60
63
 
@@ -64,7 +67,7 @@ function preserveJoiner(lines: Line[]): string {
64
67
  if (
65
68
  lastLine !== undefined &&
66
69
  lastLine.tokens.description === '' &&
67
- lastLine.tokens.end.endsWith(Markers.end)
70
+ lastLine.tokens.end.endsWith(markers.end)
68
71
  )
69
72
  lines = lines.slice(0, -1);
70
73
 
package/src/primitives.ts CHANGED
@@ -1,3 +1,4 @@
1
+ /** @deprecated */
1
2
  export enum Markers {
2
3
  start = '/**',
3
4
  nostart = '/***',
@@ -5,6 +6,13 @@ export enum Markers {
5
6
  end = '*/',
6
7
  }
7
8
 
9
+ export interface BlockMarkers {
10
+ start: string;
11
+ nostart: string;
12
+ delim: string;
13
+ end: string;
14
+ }
15
+
8
16
  export interface Block {
9
17
  description: string;
10
18
  tags: Spec[];
@@ -1,5 +1,5 @@
1
1
  import { Transform } from './index';
2
- import { Markers, Block, Line } from '../primitives';
2
+ import { BlockMarkers, Block, Line, Markers } from '../primitives';
3
3
  import { rewireSource } from '../util';
4
4
 
5
5
  interface Width {
@@ -16,16 +16,18 @@ const zeroWidth = {
16
16
  name: 0,
17
17
  };
18
18
 
19
- const getWidth = (w: Width, { tokens: t }: Line) => ({
20
- start: t.delimiter === Markers.start ? t.start.length : w.start,
21
- tag: Math.max(w.tag, t.tag.length),
22
- type: Math.max(w.type, t.type.length),
23
- name: Math.max(w.name, t.name.length),
24
- });
19
+ const getWidth =
20
+ (markers = Markers) =>
21
+ (w: Width, { tokens: t }: Line) => ({
22
+ start: t.delimiter === markers.start ? t.start.length : w.start,
23
+ tag: Math.max(w.tag, t.tag.length),
24
+ type: Math.max(w.type, t.type.length),
25
+ name: Math.max(w.name, t.name.length),
26
+ });
25
27
 
26
28
  const space = (len: number) => ''.padStart(len, ' ');
27
29
 
28
- export default function align(): Transform {
30
+ export default function align(markers = Markers): Transform {
29
31
  let intoTags = false;
30
32
  let w: Width;
31
33
 
@@ -40,16 +42,16 @@ export default function align(): Transform {
40
42
  tokens.description === '';
41
43
 
42
44
  // dangling '*/'
43
- if (tokens.end === Markers.end && isEmpty) {
45
+ if (tokens.end === markers.end && isEmpty) {
44
46
  tokens.start = space(w.start + 1);
45
47
  return { ...line, tokens };
46
48
  }
47
49
 
48
50
  switch (tokens.delimiter) {
49
- case Markers.start:
51
+ case markers.start:
50
52
  tokens.start = space(w.start);
51
53
  break;
52
- case Markers.delim:
54
+ case markers.delim:
53
55
  tokens.start = space(w.start + 1);
54
56
  break;
55
57
  default:
@@ -101,7 +103,7 @@ export default function align(): Transform {
101
103
  }
102
104
 
103
105
  return ({ source, ...fields }: Block): Block => {
104
- w = source.reduce(getWidth, { ...zeroWidth });
106
+ w = source.reduce(getWidth(markers), { ...zeroWidth });
105
107
  return rewireSource({ ...fields, source: source.map(update) });
106
108
  };
107
109
  }
@@ -80,7 +80,7 @@ function parse_escaping(source, parse, stringify, transforms) {
80
80
  // parse(source, {fence: '###'}) -- update source correspondingly
81
81
 
82
82
  /**
83
- * @example "some code"
83
+ * @example "some code"
84
84
  ###
85
85
  @decorator
86
86
  function hello() {