@diplodoc/transform 4.18.0 → 4.19.1

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/transform/plugins/table/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/transform/plugins/table/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Parse the markdown-attrs format to retrieve a class name
3
+ * Putting all the requirements in regex was more complicated than parsing a string char by char.
4
+ *
5
+ * @param {string} inputString - The string to parse.
6
+ * @returns {string|null} - The extracted class or null if there is none
7
+ */
8
+ export declare function parseAttrsClass(inputString: string): string | null;
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ /**
3
+ * Parse the markdown-attrs format to retrieve a class name
4
+ * Putting all the requirements in regex was more complicated than parsing a string char by char.
5
+ *
6
+ * @param {string} inputString - The string to parse.
7
+ * @returns {string|null} - The extracted class or null if there is none
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.parseAttrsClass = void 0;
11
+ function parseAttrsClass(inputString) {
12
+ const validChars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ .=-_';
13
+ if (!inputString.startsWith('{')) {
14
+ return null;
15
+ }
16
+ for (let i = 1; i < inputString.length; i++) {
17
+ const char = inputString[i];
18
+ if (char === '}') {
19
+ const contentInside = inputString.slice(1, i).trim(); // content excluding { and }
20
+ if (!contentInside) {
21
+ return null;
22
+ }
23
+ const parts = contentInside.split('.');
24
+ if (parts.length !== 2 || !parts[1]) {
25
+ return null;
26
+ }
27
+ //There should be a preceding whitespace
28
+ if (!parts[0].endsWith(' ') && parts[0] !== '') {
29
+ return null;
30
+ }
31
+ return parts[1];
32
+ }
33
+ if (!validChars.includes(char)) {
34
+ return null;
35
+ }
36
+ }
37
+ return null;
38
+ }
39
+ exports.parseAttrsClass = parseAttrsClass;
40
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/transform/plugins/table/utils.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAEH,SAAgB,eAAe,CAAC,WAAmB;IAC/C,MAAM,UAAU,GAAG,2DAA2D,CAAC;IAE/E,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;QAC9B,OAAO,IAAI,CAAC;KACf;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACzC,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QAE5B,IAAI,IAAI,KAAK,GAAG,EAAE;YACd,MAAM,aAAa,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,4BAA4B;YAElF,IAAI,CAAC,aAAa,EAAE;gBAChB,OAAO,IAAI,CAAC;aACf;YAED,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACvC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;gBACjC,OAAO,IAAI,CAAC;aACf;YACD,wCAAwC;YACxC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE;gBAC5C,OAAO,IAAI,CAAC;aACf;YAED,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;SACnB;QAED,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;YAC5B,OAAO,IAAI,CAAC;SACf;KACJ;IAED,OAAO,IAAI,CAAC;AAChB,CAAC;AAnCD,0CAmCC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@diplodoc/transform",
3
- "version": "4.18.0",
3
+ "version": "4.19.1",
4
4
  "description": "A simple transformer of text in YFM (Yandex Flavored Markdown) to HTML",
5
5
  "keywords": [
6
6
  "markdown",
@@ -40,7 +40,7 @@
40
40
  "typecheck": "tsc -p tsconfig.json --noEmit"
41
41
  },
42
42
  "dependencies": {
43
- "@diplodoc/tabs-extension": "^2.1.0",
43
+ "@diplodoc/tabs-extension": "^2.2.0",
44
44
  "chalk": "^4.1.2",
45
45
  "cheerio": "^1.0.0-rc.12",
46
46
  "css": "^3.0.0",
@@ -0,0 +1,32 @@
1
+ .yfm table td {
2
+ &.cell-align-top-left,
3
+ &.cell-align-bottom-left {
4
+ text-align: start;
5
+ }
6
+
7
+ &.cell-align-top-center,
8
+ &.cell-align-center {
9
+ text-align: center;
10
+ }
11
+
12
+ &.cell-align-top-right,
13
+ &.cell-align-bottom-right {
14
+ text-align: end;
15
+ }
16
+
17
+ &.cell-align-top-left,
18
+ &.cell-align-top-center,
19
+ &.cell-align-top-right {
20
+ vertical-align: top;
21
+ }
22
+
23
+ &.cell-align-center {
24
+ vertical-align: middle;
25
+ }
26
+
27
+ &.cell-align-bottom-left,
28
+ &.cell-align-bottom-right {
29
+ vertical-align: bottom;
30
+ }
31
+ }
32
+
package/src/scss/yfm.scss CHANGED
@@ -6,5 +6,6 @@
6
6
  @import 'cut';
7
7
  @import 'file';
8
8
  @import 'term';
9
+ @import 'table';
9
10
 
10
11
  @import '@diplodoc/tabs-extension/runtime';
@@ -205,7 +205,7 @@ function inlineConditions(
205
205
 
206
206
  return {
207
207
  result: start + result + end,
208
- lastIndex: start.length + result.length,
208
+ lastIndex: start.length + result.length - tailLinebreak(ifTag.rawEnd).length,
209
209
  ifCon,
210
210
  };
211
211
  }
@@ -1,9 +1,19 @@
1
1
  import type MarkdownIt from 'markdown-it';
2
+ import type Core from 'markdown-it/lib/parser_core';
2
3
  import type StateCore from 'markdown-it/lib/rules_core/state_core';
3
4
  import type Token from 'markdown-it/lib/token';
4
5
 
5
6
  // eslint-disable-next-line no-useless-escape
6
- const pattern = /^\[(X|\s|\_|\-)\]\s(.*)/i;
7
+ export const pattern = /^\[(X|\s|\_|\-)\]\s(.*)/i;
8
+ export const CheckboxTokenType = {
9
+ Checkbox: 'checkbox',
10
+ CheckboxOpen: 'checkbox_open',
11
+ CheckboxClose: 'checkbox_close',
12
+ CheckboxInput: 'checkbox_input',
13
+ CheckboxLabel: 'checkbox_label',
14
+ CheckboxLabelOpen: 'checkbox_label_open',
15
+ CheckboxLabelClose: 'checkbox_label_close',
16
+ } as const;
7
17
 
8
18
  function matchOpenToken(tokens: Token[], i: number) {
9
19
  return (
@@ -16,13 +26,16 @@ function matchOpenToken(tokens: Token[], i: number) {
16
26
  export type CheckboxOptions = {
17
27
  idPrefix?: string;
18
28
  divClass?: string;
29
+ /** @default true */
30
+ disabled?: boolean;
19
31
  };
20
32
 
21
- export const checkboxReplace = function (_md: MarkdownIt, opts: CheckboxOptions) {
33
+ export const checkboxReplace = function (_md: MarkdownIt, opts?: CheckboxOptions): Core.RuleCore {
22
34
  let lastId = 0;
23
- const defaults = {
35
+ const defaults: Required<CheckboxOptions> = {
24
36
  divClass: 'checkbox',
25
37
  idPrefix: 'checkbox',
38
+ disabled: true,
26
39
  };
27
40
  const options = Object.assign(defaults, opts);
28
41
 
@@ -33,7 +46,7 @@ export const checkboxReplace = function (_md: MarkdownIt, opts: CheckboxOptions)
33
46
  /**
34
47
  * <div class="checkbox">
35
48
  */
36
- token = new state.Token('checkbox_open', 'div', 1);
49
+ token = new state.Token(CheckboxTokenType.CheckboxOpen, 'div', 1);
37
50
  token.block = true;
38
51
  token.map = state.tokens[i].map;
39
52
  token.attrs = [['class', options.divClass]];
@@ -44,23 +57,25 @@ export const checkboxReplace = function (_md: MarkdownIt, opts: CheckboxOptions)
44
57
  */
45
58
  const id = options.idPrefix + lastId;
46
59
  lastId += 1;
47
- token = new state.Token('checkbox_input', 'input', 0);
60
+ token = new state.Token(CheckboxTokenType.CheckboxInput, 'input', 0);
48
61
  token.block = true;
49
62
  token.map = state.tokens[i].map;
50
63
  token.attrs = [
51
64
  ['type', 'checkbox'],
52
65
  ['id', id],
53
- ['disabled', ''],
54
66
  ];
67
+ if (options.disabled) {
68
+ token.attrSet('disabled', '');
69
+ }
55
70
  if (checked === true) {
56
- token.attrs.push(['checked', 'true']);
71
+ token.attrSet('checked', 'true');
57
72
  }
58
73
  nodes.push(token);
59
74
 
60
75
  /**
61
76
  * <label for="checkbox{n}">
62
77
  */
63
- token = new state.Token('checkbox_label_open', 'label', 1);
78
+ token = new state.Token(CheckboxTokenType.CheckboxLabelOpen, 'label', 1);
64
79
  token.attrs = [['for', id]];
65
80
  nodes.push(token);
66
81
 
@@ -73,11 +88,11 @@ export const checkboxReplace = function (_md: MarkdownIt, opts: CheckboxOptions)
73
88
  /**
74
89
  * closing tags
75
90
  */
76
- token = new state.Token('checkbox_label_close', 'label', -1);
91
+ token = new state.Token(CheckboxTokenType.CheckboxLabelClose, 'label', -1);
77
92
  token.block = true;
78
93
  token.map = state.tokens[i].map;
79
94
  nodes.push(token);
80
- token = new state.Token('checkbox_close', 'div', -1);
95
+ token = new state.Token(CheckboxTokenType.CheckboxClose, 'div', -1);
81
96
  token.block = true;
82
97
  token.map = state.tokens[i].map;
83
98
  nodes.push(token);
@@ -93,7 +108,7 @@ export const checkboxReplace = function (_md: MarkdownIt, opts: CheckboxOptions)
93
108
  }
94
109
  return createTokens(state, checked, label, i);
95
110
  };
96
- return function (state: StateCore) {
111
+ return function (state) {
97
112
  const blockTokens = state.tokens;
98
113
  for (let i = 0; i < blockTokens.length; i++) {
99
114
  const match = matchOpenToken(blockTokens, i);
@@ -1,4 +1,4 @@
1
- import MarkdownIt from 'markdown-it';
1
+ import type {PluginWithOptions} from 'markdown-it';
2
2
  import {CheckboxOptions, checkboxReplace} from './checkbox';
3
3
 
4
4
  /**
@@ -6,7 +6,7 @@ import {CheckboxOptions, checkboxReplace} from './checkbox';
6
6
  * Forked from https://github.com/mcecot/markdown-it-checkbox
7
7
  */
8
8
 
9
- const checkbox = (md: MarkdownIt, options: CheckboxOptions) => {
9
+ const checkbox: PluginWithOptions<CheckboxOptions> = (md, options) => {
10
10
  md.core.ruler.push('checkbox', checkboxReplace(md, options));
11
11
 
12
12
  return md;
@@ -1,5 +1,7 @@
1
1
  import StateBlock from 'markdown-it/lib/rules_block/state_block';
2
2
  import {MarkdownItPluginCb} from '../typings';
3
+ import Token from 'markdown-it/lib/token';
4
+ import {parseAttrsClass} from './utils';
3
5
 
4
6
  const pluginName = 'yfm_table';
5
7
  const pipeChar = 0x7c; // |
@@ -91,12 +93,17 @@ class StateIterator {
91
93
  }
92
94
  }
93
95
 
94
- function getTableRows(
96
+ interface RowPositions {
97
+ rows: [number, number, [Stats, Stats][]][];
98
+ endOfTable: number | null;
99
+ }
100
+
101
+ function getTableRowPositions(
95
102
  state: StateBlock,
96
103
  startPosition: number,
97
104
  endPosition: number,
98
105
  startLine: number,
99
- ) {
106
+ ): RowPositions {
100
107
  let endOfTable = null;
101
108
  let tableLevel = 0;
102
109
  let currentRow: [Stats, Stats][] = [];
@@ -210,6 +217,130 @@ function getTableRows(
210
217
  return {rows, endOfTable};
211
218
  }
212
219
 
220
+ /**
221
+ * Extracts the class attribute from the given content token and applies it to the tdOpenToken.
222
+ * Preserves other attributes.
223
+ *
224
+ * @param {Token} contentToken - Search the content of this token for the class.
225
+ * @param {Token} tdOpenToken - Parent td_open token. Extracted class is applied to this token.
226
+ * @returns {void}
227
+ */
228
+ function extractAndApplyClassFromToken(contentToken: Token, tdOpenToken: Token): void {
229
+ // Regex to find class attribute in any position within brackets
230
+ const blockRegex = /\s*\{[^}]*}$/;
231
+ const allAttrs = contentToken.content.match(blockRegex);
232
+ if (!allAttrs) {
233
+ return;
234
+ }
235
+ const attrsClass = parseAttrsClass(allAttrs[0].trim());
236
+ if (attrsClass) {
237
+ tdOpenToken.attrSet('class', attrsClass);
238
+ // remove the class from the token so that it's not propagated to tr or table level
239
+ let replacedContent = allAttrs[0].replace(`.${attrsClass}`, '');
240
+ if (replacedContent.trim() === '{}') {
241
+ replacedContent = '';
242
+ }
243
+ contentToken.content = contentToken.content.replace(allAttrs[0], replacedContent);
244
+ }
245
+ }
246
+
247
+ const COLSPAN_SYMBOL = '>';
248
+ const ROWSPAN_SYMBOL = '^';
249
+
250
+ /**
251
+ * Traverses through the content map, applying row/colspan attributes and marking the special cells for deletion.
252
+ * Upon encountering a symbol denoting a row span or a column span, proceed backwards in row or column
253
+ * until text cell is found. Upon finding the text cell, store the colspan or rowspan value.
254
+ * During the backward traversal, if the same symbol is encountered, increment the value of rowspan/colspan.
255
+ * Colspan symbol is ignored for the first column. Rowspan symbol is ignored for the first row
256
+ *
257
+ * @param contentMap string[][]
258
+ * @param tokenMap Token[][]
259
+ * @return {void}
260
+ */
261
+ const applySpans = (contentMap: string[][], tokenMap: Token[][]): void => {
262
+ for (let i = 0; i < contentMap.length; i++) {
263
+ for (let j = 0; j < contentMap[0].length; j++) {
264
+ if (contentMap[i][j] === COLSPAN_SYMBOL) {
265
+ // skip the first column
266
+ if (j === 0) {
267
+ continue;
268
+ }
269
+ tokenMap[i][j].meta = {markForDeletion: true};
270
+ let colspanFactor = 2;
271
+ // traverse columns backwards
272
+ for (let col = j - 1; col >= 0; col--) {
273
+ if (contentMap[i][col] === COLSPAN_SYMBOL) {
274
+ colspanFactor++;
275
+ tokenMap[i][col].meta = {markForDeletion: true};
276
+ } else if (contentMap[i][col] === ROWSPAN_SYMBOL) {
277
+ // Do nothing, this should be applied on the row that's being extended
278
+ break;
279
+ } else {
280
+ tokenMap[i][col].attrSet('colspan', colspanFactor.toString());
281
+ break;
282
+ }
283
+ }
284
+ }
285
+
286
+ if (contentMap[i][j] === ROWSPAN_SYMBOL) {
287
+ // skip the first row
288
+ if (i === 0) {
289
+ continue;
290
+ }
291
+ tokenMap[i][j].meta = {markForDeletion: true};
292
+ let rowSpanFactor = 2;
293
+ // traverse rows upward
294
+ for (let row = i - 1; row >= 0; row--) {
295
+ if (contentMap[row][j] === ROWSPAN_SYMBOL) {
296
+ rowSpanFactor++;
297
+ tokenMap[row][j].meta = {markForDeletion: true};
298
+ } else if (contentMap[row][j] === COLSPAN_SYMBOL) {
299
+ break;
300
+ } else {
301
+ tokenMap[row][j].attrSet('rowspan', rowSpanFactor.toString());
302
+ break;
303
+ }
304
+ }
305
+ }
306
+ }
307
+ }
308
+ };
309
+
310
+ /**
311
+ * Removes td_open and matching td_close tokens and the content within them
312
+ *
313
+ * @param {number} tableStart - The index of the start of the table in the state tokens array.
314
+ * @param {Token[]} tokens - The array of tokens from state.
315
+ * @returns {void}
316
+ */
317
+ const clearTokens = (tableStart: number, tokens: Token[]): void => {
318
+ // use splices array to avoid modifying the tokens array during iteration
319
+ const splices: number[][] = [];
320
+ for (let i = tableStart; i < tokens.length; i++) {
321
+ if (tokens[i].meta?.markForDeletion) {
322
+ // Use unshift instead of push so that the splices indexes are in reverse order.
323
+ // Reverse order guarantees that we don't mess up the indexes while removing the items.
324
+ splices.unshift([i]);
325
+ const level = tokens[i].level;
326
+ // find matching td_close with the same level
327
+ for (let j = i + 1; j < tokens.length; j++) {
328
+ if (tokens[j].type === 'yfm_td_close' && tokens[j].level === level) {
329
+ splices[0].push(j);
330
+ break;
331
+ }
332
+ }
333
+ }
334
+ }
335
+ splices.forEach(([start, end]) => {
336
+ // check that we have both start and end defined
337
+ // it's possible we didn't find td_close index
338
+ if (start && end) {
339
+ tokens.splice(start, end - start + 1);
340
+ }
341
+ });
342
+ };
343
+
213
344
  const yfmTable: MarkdownItPluginCb = (md) => {
214
345
  md.block.ruler.before(
215
346
  'code',
@@ -232,7 +363,12 @@ const yfmTable: MarkdownItPluginCb = (md) => {
232
363
  return true;
233
364
  }
234
365
 
235
- const {rows, endOfTable} = getTableRows(state, startPosition, endPosition, startLine);
366
+ const {rows, endOfTable} = getTableRowPositions(
367
+ state,
368
+ startPosition,
369
+ endPosition,
370
+ startLine,
371
+ );
236
372
 
237
373
  if (!endOfTable) {
238
374
  token = state.push('__yfm_lint', '', 0);
@@ -247,6 +383,7 @@ const yfmTable: MarkdownItPluginCb = (md) => {
247
383
  state.lineMax = endOfTable;
248
384
  state.line = startLine;
249
385
 
386
+ const tableStart = state.tokens.length;
250
387
  token = state.push('yfm_table_open', 'table', 1);
251
388
  token.map = [startLine, endOfTable];
252
389
 
@@ -255,9 +392,18 @@ const yfmTable: MarkdownItPluginCb = (md) => {
255
392
 
256
393
  const maxRowLength = Math.max(...rows.map(([, , cols]) => cols.length));
257
394
 
395
+ // cellsMaps is a 2-D map of all td_open tokens in the table.
396
+ // cellsMap is used to access the table cells by [row][column] coordinates
397
+ const cellsMap: Token[][] = [];
398
+
399
+ // contentMap is a 2-D map of the text content within cells in the table.
400
+ // To apply spans, traverse the contentMap and modify the cells from cellsMap
401
+ const contentMap: string[][] = [];
402
+
258
403
  for (let i = 0; i < rows.length; i++) {
259
404
  const [rowLineStarts, rowLineEnds, cols] = rows[i];
260
-
405
+ cellsMap.push([]);
406
+ contentMap.push([]);
261
407
  const rowLength = cols.length;
262
408
 
263
409
  token = state.push('yfm_tr_open', 'tr', 1);
@@ -266,6 +412,7 @@ const yfmTable: MarkdownItPluginCb = (md) => {
266
412
  for (let j = 0; j < cols.length; j++) {
267
413
  const [begin, end] = cols[j];
268
414
  token = state.push('yfm_td_open', 'td', 1);
415
+ cellsMap[i].push(token);
269
416
  token.map = [begin.line, end.line];
270
417
 
271
418
  const oldTshift = state.tShift[begin.line];
@@ -279,14 +426,23 @@ const yfmTable: MarkdownItPluginCb = (md) => {
279
426
  state.lineMax = end.line + 1;
280
427
 
281
428
  state.md.block.tokenize(state, begin.line, end.line + 1);
429
+ const contentToken = state.tokens[state.tokens.length - 2];
430
+
431
+ // In case of ">" within a cell without whitespace it gets consumed as a blockquote.
432
+ // To handle that, check markup as well
433
+ const content = contentToken.content.trim() || contentToken.markup.trim();
434
+ contentMap[i].push(content);
435
+
436
+ token = state.push('yfm_td_close', 'td', -1);
437
+ state.tokens[state.tokens.length - 1].map = [end.line, end.line + 1];
282
438
 
283
439
  state.lineMax = oldLineMax;
284
440
  state.tShift[begin.line] = oldTshift;
285
441
  state.bMarks[begin.line] = oldBMark;
286
442
  state.eMarks[end.line] = oldEMark;
287
443
 
288
- token = state.push('yfm_td_close', 'td', -1);
289
- state.tokens[state.tokens.length - 1].map = [end.line, end.line + 1];
444
+ const rowTokens = cellsMap[cellsMap.length - 1];
445
+ extractAndApplyClassFromToken(contentToken, rowTokens[rowTokens.length - 1]);
290
446
  }
291
447
 
292
448
  if (rowLength < maxRowLength) {
@@ -300,6 +456,9 @@ const yfmTable: MarkdownItPluginCb = (md) => {
300
456
  token = state.push('yfm_tr_close', 'tr', -1);
301
457
  }
302
458
 
459
+ applySpans(contentMap, cellsMap);
460
+ clearTokens(tableStart, state.tokens);
461
+
303
462
  token = state.push('yfm_tbody_close', 'tbody', -1);
304
463
 
305
464
  token = state.push('yfm_table_close', 'table', -1);
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Parse the markdown-attrs format to retrieve a class name
3
+ * Putting all the requirements in regex was more complicated than parsing a string char by char.
4
+ *
5
+ * @param {string} inputString - The string to parse.
6
+ * @returns {string|null} - The extracted class or null if there is none
7
+ */
8
+
9
+ export function parseAttrsClass(inputString: string): string | null {
10
+ const validChars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ .=-_';
11
+
12
+ if (!inputString.startsWith('{')) {
13
+ return null;
14
+ }
15
+
16
+ for (let i = 1; i < inputString.length; i++) {
17
+ const char = inputString[i];
18
+
19
+ if (char === '}') {
20
+ const contentInside = inputString.slice(1, i).trim(); // content excluding { and }
21
+
22
+ if (!contentInside) {
23
+ return null;
24
+ }
25
+
26
+ const parts = contentInside.split('.');
27
+ if (parts.length !== 2 || !parts[1]) {
28
+ return null;
29
+ }
30
+ //There should be a preceding whitespace
31
+ if (!parts[0].endsWith(' ') && parts[0] !== '') {
32
+ return null;
33
+ }
34
+
35
+ return parts[1];
36
+ }
37
+
38
+ if (!validChars.includes(char)) {
39
+ return null;
40
+ }
41
+ }
42
+
43
+ return null;
44
+ }