@yozora/tokenizer-break 1.2.0 → 2.0.0-alpha.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/lib/cjs/index.js CHANGED
@@ -20,65 +20,71 @@ class BreakTokenizer extends coreTokenizer.BaseInlineTokenizer {
20
20
  name: (_a = props.name) !== null && _a !== void 0 ? _a : uniqueName,
21
21
  priority: (_b = props.priority) !== null && _b !== void 0 ? _b : coreTokenizer.TokenizerPriority.SOFT_INLINE,
22
22
  });
23
- }
24
- _findDelimiter(startIndex, endIndex, nodePoints) {
25
- for (let i = startIndex + 1; i < endIndex; ++i) {
26
- if (nodePoints[i].codePoint !== character.VirtualCodePoint.LINE_END)
27
- continue;
28
- const c = nodePoints[i - 1].codePoint;
29
- let _start = null;
30
- let markerType = null;
31
- switch (c) {
32
- case character.AsciiCodePoint.BACKSLASH: {
33
- let x = i - 2;
34
- for (; x >= startIndex; x -= 1) {
35
- if (nodePoints[x].codePoint !== character.AsciiCodePoint.BACKSLASH)
23
+ this.match = api => {
24
+ return {
25
+ findDelimiter: () => coreTokenizer.genFindDelimiter(_findDelimiter),
26
+ processSingleDelimiter,
27
+ };
28
+ function _findDelimiter(startIndex, endIndex) {
29
+ const nodePoints = api.getNodePoints();
30
+ for (let i = startIndex + 1; i < endIndex; ++i) {
31
+ if (nodePoints[i].codePoint !== character.VirtualCodePoint.LINE_END)
32
+ continue;
33
+ const c = nodePoints[i - 1].codePoint;
34
+ let _start = null;
35
+ let markerType = null;
36
+ switch (c) {
37
+ case character.AsciiCodePoint.BACKSLASH: {
38
+ let x = i - 2;
39
+ for (; x >= startIndex; x -= 1) {
40
+ if (nodePoints[x].codePoint !== character.AsciiCodePoint.BACKSLASH)
41
+ break;
42
+ }
43
+ if (((i - x) & 1) === 0) {
44
+ _start = i - 1;
45
+ markerType = BreakTokenMarkerType.BACKSLASH;
46
+ }
36
47
  break;
37
- }
38
- if (((i - x) & 1) === 0) {
39
- _start = i - 1;
40
- markerType = BreakTokenMarkerType.BACKSLASH;
41
- }
42
- break;
43
- }
44
- case character.AsciiCodePoint.SPACE: {
45
- let x = i - 2;
46
- for (; x >= startIndex; x -= 1) {
47
- if (nodePoints[x].codePoint !== character.AsciiCodePoint.SPACE)
48
+ }
49
+ case character.AsciiCodePoint.SPACE: {
50
+ let x = i - 2;
51
+ for (; x >= startIndex; x -= 1) {
52
+ if (nodePoints[x].codePoint !== character.AsciiCodePoint.SPACE)
53
+ break;
54
+ }
55
+ if (i - x > 2) {
56
+ _start = x + 1;
57
+ markerType = BreakTokenMarkerType.MORE_THAN_TWO_SPACES;
58
+ }
48
59
  break;
60
+ }
49
61
  }
50
- if (i - x > 2) {
51
- _start = x + 1;
52
- markerType = BreakTokenMarkerType.MORE_THAN_TWO_SPACES;
53
- }
54
- break;
62
+ if (_start == null || markerType == null)
63
+ continue;
64
+ return {
65
+ type: 'full',
66
+ markerType,
67
+ startIndex: _start,
68
+ endIndex: i,
69
+ };
55
70
  }
71
+ return null;
72
+ }
73
+ function processSingleDelimiter(delimiter) {
74
+ const token = {
75
+ nodeType: ast.BreakType,
76
+ startIndex: delimiter.startIndex,
77
+ endIndex: delimiter.endIndex,
78
+ };
79
+ return [token];
56
80
  }
57
- if (_start == null || markerType == null)
58
- continue;
59
- return {
60
- type: 'full',
61
- markerType,
62
- startIndex: _start,
63
- endIndex: i,
64
- };
65
- }
66
- return null;
67
- }
68
- processSingleDelimiter(delimiter) {
69
- const token = {
70
- nodeType: ast.BreakType,
71
- startIndex: delimiter.startIndex,
72
- endIndex: delimiter.endIndex,
73
81
  };
74
- return [token];
75
- }
76
- processToken() {
77
- const result = { type: ast.BreakType };
78
- return result;
82
+ this.parse = () => ({
83
+ parse: () => ({ type: ast.BreakType }),
84
+ });
79
85
  }
80
86
  }
81
87
 
82
88
  exports.BreakTokenizer = BreakTokenizer;
83
89
  exports.BreakTokenizerName = uniqueName;
84
- exports['default'] = BreakTokenizer;
90
+ exports["default"] = BreakTokenizer;
package/lib/esm/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { BreakType } from '@yozora/ast';
2
2
  import { VirtualCodePoint, AsciiCodePoint } from '@yozora/character';
3
- import { BaseInlineTokenizer, TokenizerPriority } from '@yozora/core-tokenizer';
3
+ import { BaseInlineTokenizer, TokenizerPriority, genFindDelimiter } from '@yozora/core-tokenizer';
4
4
 
5
5
  const uniqueName = '@yozora/tokenizer-break';
6
6
  var BreakTokenMarkerType;
@@ -16,62 +16,68 @@ class BreakTokenizer extends BaseInlineTokenizer {
16
16
  name: (_a = props.name) !== null && _a !== void 0 ? _a : uniqueName,
17
17
  priority: (_b = props.priority) !== null && _b !== void 0 ? _b : TokenizerPriority.SOFT_INLINE,
18
18
  });
19
- }
20
- _findDelimiter(startIndex, endIndex, nodePoints) {
21
- for (let i = startIndex + 1; i < endIndex; ++i) {
22
- if (nodePoints[i].codePoint !== VirtualCodePoint.LINE_END)
23
- continue;
24
- const c = nodePoints[i - 1].codePoint;
25
- let _start = null;
26
- let markerType = null;
27
- switch (c) {
28
- case AsciiCodePoint.BACKSLASH: {
29
- let x = i - 2;
30
- for (; x >= startIndex; x -= 1) {
31
- if (nodePoints[x].codePoint !== AsciiCodePoint.BACKSLASH)
19
+ this.match = api => {
20
+ return {
21
+ findDelimiter: () => genFindDelimiter(_findDelimiter),
22
+ processSingleDelimiter,
23
+ };
24
+ function _findDelimiter(startIndex, endIndex) {
25
+ const nodePoints = api.getNodePoints();
26
+ for (let i = startIndex + 1; i < endIndex; ++i) {
27
+ if (nodePoints[i].codePoint !== VirtualCodePoint.LINE_END)
28
+ continue;
29
+ const c = nodePoints[i - 1].codePoint;
30
+ let _start = null;
31
+ let markerType = null;
32
+ switch (c) {
33
+ case AsciiCodePoint.BACKSLASH: {
34
+ let x = i - 2;
35
+ for (; x >= startIndex; x -= 1) {
36
+ if (nodePoints[x].codePoint !== AsciiCodePoint.BACKSLASH)
37
+ break;
38
+ }
39
+ if (((i - x) & 1) === 0) {
40
+ _start = i - 1;
41
+ markerType = BreakTokenMarkerType.BACKSLASH;
42
+ }
32
43
  break;
33
- }
34
- if (((i - x) & 1) === 0) {
35
- _start = i - 1;
36
- markerType = BreakTokenMarkerType.BACKSLASH;
37
- }
38
- break;
39
- }
40
- case AsciiCodePoint.SPACE: {
41
- let x = i - 2;
42
- for (; x >= startIndex; x -= 1) {
43
- if (nodePoints[x].codePoint !== AsciiCodePoint.SPACE)
44
+ }
45
+ case AsciiCodePoint.SPACE: {
46
+ let x = i - 2;
47
+ for (; x >= startIndex; x -= 1) {
48
+ if (nodePoints[x].codePoint !== AsciiCodePoint.SPACE)
49
+ break;
50
+ }
51
+ if (i - x > 2) {
52
+ _start = x + 1;
53
+ markerType = BreakTokenMarkerType.MORE_THAN_TWO_SPACES;
54
+ }
44
55
  break;
56
+ }
45
57
  }
46
- if (i - x > 2) {
47
- _start = x + 1;
48
- markerType = BreakTokenMarkerType.MORE_THAN_TWO_SPACES;
49
- }
50
- break;
58
+ if (_start == null || markerType == null)
59
+ continue;
60
+ return {
61
+ type: 'full',
62
+ markerType,
63
+ startIndex: _start,
64
+ endIndex: i,
65
+ };
51
66
  }
67
+ return null;
68
+ }
69
+ function processSingleDelimiter(delimiter) {
70
+ const token = {
71
+ nodeType: BreakType,
72
+ startIndex: delimiter.startIndex,
73
+ endIndex: delimiter.endIndex,
74
+ };
75
+ return [token];
52
76
  }
53
- if (_start == null || markerType == null)
54
- continue;
55
- return {
56
- type: 'full',
57
- markerType,
58
- startIndex: _start,
59
- endIndex: i,
60
- };
61
- }
62
- return null;
63
- }
64
- processSingleDelimiter(delimiter) {
65
- const token = {
66
- nodeType: BreakType,
67
- startIndex: delimiter.startIndex,
68
- endIndex: delimiter.endIndex,
69
77
  };
70
- return [token];
71
- }
72
- processToken() {
73
- const result = { type: BreakType };
74
- return result;
78
+ this.parse = () => ({
79
+ parse: () => ({ type: BreakType }),
80
+ });
75
81
  }
76
82
  }
77
83
 
@@ -1,5 +1,3 @@
1
- import { BreakTokenizer } from './tokenizer';
2
- export { BreakTokenizer } from './tokenizer';
1
+ export { BreakTokenizer, BreakTokenizer as default } from './tokenizer';
3
2
  export { uniqueName as BreakTokenizerName } from './types';
4
- export type { Token as BreakToken, TokenizerProps as BreakTokenizerProps, } from './types';
5
- export default BreakTokenizer;
3
+ export type { IToken as IBreakToken, ITokenizerProps as IBreakTokenizerProps } from './types';
@@ -1,7 +1,6 @@
1
- import type { NodePoint } from '@yozora/character';
2
- import type { ResultOfProcessSingleDelimiter, Tokenizer, TokenizerMatchInlineHook, TokenizerParseInlineHook } from '@yozora/core-tokenizer';
1
+ import type { IInlineTokenizer, IMatchInlineHookCreator, IParseInlineHookCreator } from '@yozora/core-tokenizer';
3
2
  import { BaseInlineTokenizer } from '@yozora/core-tokenizer';
4
- import type { Delimiter, Node, T, Token, TokenizerProps } from './types';
3
+ import type { IDelimiter, INode, IToken, ITokenizerProps, T } from './types';
5
4
  /**
6
5
  * Lexical Analyzer for a line break.
7
6
  *
@@ -18,21 +17,8 @@ import type { Delimiter, Node, T, Token, TokenizerProps } from './types';
18
17
  *
19
18
  * @see https://github.com/syntax-tree/mdast#break
20
19
  */
21
- export declare class BreakTokenizer extends BaseInlineTokenizer<Delimiter> implements Tokenizer, TokenizerMatchInlineHook<T, Delimiter, Token>, TokenizerParseInlineHook<T, Token, Node> {
22
- constructor(props?: TokenizerProps);
23
- /**
24
- * @override
25
- * @see BaseInlineTokenizer
26
- */
27
- protected _findDelimiter(startIndex: number, endIndex: number, nodePoints: ReadonlyArray<NodePoint>): Delimiter | null;
28
- /**
29
- * @override
30
- * @see TokenizerMatchInlineHook
31
- */
32
- processSingleDelimiter(delimiter: Delimiter): ResultOfProcessSingleDelimiter<T, Token>;
33
- /**
34
- * @override
35
- * @see TokenizerParseInlineHook
36
- */
37
- processToken(): Node;
20
+ export declare class BreakTokenizer extends BaseInlineTokenizer<T, IDelimiter, IToken, INode> implements IInlineTokenizer<T, IDelimiter, IToken, INode> {
21
+ constructor(props?: ITokenizerProps);
22
+ readonly match: IMatchInlineHookCreator<T, IDelimiter, IToken>;
23
+ readonly parse: IParseInlineHookCreator<T, IToken, INode>;
38
24
  }
@@ -1,17 +1,17 @@
1
- import type { Break, BreakType } from '@yozora/ast';
2
- import type { BaseInlineTokenizerProps, PartialYastInlineToken, YastTokenDelimiter } from '@yozora/core-tokenizer';
1
+ import type { BreakType, IBreak } from '@yozora/ast';
2
+ import type { IBaseInlineTokenizerProps, IPartialYastInlineToken, IYastTokenDelimiter } from '@yozora/core-tokenizer';
3
3
  export declare type T = BreakType;
4
- export declare type Node = Break;
4
+ export declare type INode = IBreak;
5
5
  export declare const uniqueName = "@yozora/tokenizer-break";
6
- export declare type Token = PartialYastInlineToken<T>;
7
- export interface Delimiter extends YastTokenDelimiter {
6
+ export declare type IToken = IPartialYastInlineToken<T>;
7
+ export interface IDelimiter extends IYastTokenDelimiter {
8
8
  type: 'full';
9
9
  /**
10
10
  * Line break marker type.
11
11
  */
12
12
  markerType: BreakTokenMarkerType;
13
13
  }
14
- export declare type TokenizerProps = Partial<BaseInlineTokenizerProps>;
14
+ export declare type ITokenizerProps = Partial<IBaseInlineTokenizerProps>;
15
15
  /**
16
16
  * Line break marker type.
17
17
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yozora/tokenizer-break",
3
- "version": "1.2.0",
3
+ "version": "2.0.0-alpha.0",
4
4
  "author": {
5
5
  "name": "guanghechen",
6
6
  "url": "https://github.com/guanghechen/"
@@ -35,9 +35,9 @@
35
35
  "test": "cross-env TS_NODE_FILES=true jest --config ../../jest.config.js --rootDir ."
36
36
  },
37
37
  "dependencies": {
38
- "@yozora/ast": "^1.2.0",
39
- "@yozora/character": "^1.2.0",
40
- "@yozora/core-tokenizer": "^1.2.0"
38
+ "@yozora/ast": "^2.0.0-alpha.0",
39
+ "@yozora/character": "^2.0.0-alpha.0",
40
+ "@yozora/core-tokenizer": "^2.0.0-alpha.0"
41
41
  },
42
- "gitHead": "86da40e50d2fe9acace68695288e15e012e6cd0d"
42
+ "gitHead": "0171501339c49ffd02ed16a63447fa20a47a29a7"
43
43
  }