@yozora/tokenizer-delete 1.2.2 → 2.0.0-alpha.2

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/README.md CHANGED
@@ -84,14 +84,14 @@ so you can use `YozoraParser` / `GfmExParser` directly.
84
84
  registered in *YastParser* as a plugin-in before it can be used.
85
85
 
86
86
  ```typescript {4,9}
87
- import { DefaultYastParser } from '@yozora/core-parser'
87
+ import { DefaultParser } from '@yozora/core-parser'
88
88
  import ParagraphTokenizer from '@yozora/tokenizer-paragraph'
89
89
  import TextTokenizer from '@yozora/tokenizer-text'
90
90
  import DeleteTokenizer from '@yozora/tokenizer-delete'
91
91
 
92
- const parser = new DefaultYastParser()
93
- .useBlockFallbackTokenizer(new ParagraphTokenizer())
94
- .useInlineFallbackTokenizer(new TextTokenizer())
92
+ const parser = new DefaultParser()
93
+ .useFallbackTokenizer(new ParagraphTokenizer())
94
+ .useFallbackTokenizer(new TextTokenizer())
95
95
  .useTokenizer(new DeleteTokenizer())
96
96
 
97
97
  // parse source markdown content
@@ -232,7 +232,6 @@ Name | Type | Required | Default
232
232
  [@yozora/tokenizer-link]: https://github.com/yozorajs/yozora/tree/main/tokenizers/link#readme
233
233
  [@yozora/tokenizer-link-reference]: https://github.com/yozorajs/yozora/tree/main/tokenizers/link-reference#readme
234
234
  [@yozora/tokenizer-list]: https://github.com/yozorajs/yozora/tree/main/tokenizers/list#readme
235
- [@yozora/tokenizer-list-item]: https://github.com/yozorajs/yozora/tree/main/tokenizers/list-item#readme
236
235
  [@yozora/tokenizer-math]: https://github.com/yozorajs/yozora/tree/main/tokenizers/math#readme
237
236
  [@yozora/tokenizer-paragraph]: https://github.com/yozorajs/yozora/tree/main/tokenizers/paragraph#readme
238
237
  [@yozora/tokenizer-setext-heading]: https://github.com/yozorajs/yozora/tree/main/tokenizers/setext-heading#readme
@@ -292,7 +291,6 @@ Name | Type | Required | Default
292
291
  [doc-@yozora/tokenizer-definition]: https://yozora.guanghechen.com/docs/package/tokenizer-definition
293
292
  [doc-@yozora/tokenizer-link-reference]: https://yozora.guanghechen.com/docs/package/tokenizer-link-reference
294
293
  [doc-@yozora/tokenizer-list]: https://yozora.guanghechen.com/docs/package/tokenizer-list
295
- [doc-@yozora/tokenizer-list-item]: https://yozora.guanghechen.com/docs/package/tokenizer-list-item
296
294
  [doc-@yozora/tokenizer-math]: https://yozora.guanghechen.com/docs/package/tokenizer-math
297
295
  [doc-@yozora/tokenizer-paragraph]: https://yozora.guanghechen.com/docs/package/tokenizer-paragraph
298
296
  [doc-@yozora/tokenizer-setext-heading]: https://yozora.guanghechen.com/docs/package/tokenizer-setext-heading
package/lib/cjs/index.js CHANGED
@@ -6,17 +6,13 @@ var ast = require('@yozora/ast');
6
6
  var character = require('@yozora/character');
7
7
  var coreTokenizer = require('@yozora/core-tokenizer');
8
8
 
9
- const uniqueName = '@yozora/tokenizer-delete';
10
-
11
- class DeleteTokenizer extends coreTokenizer.BaseInlineTokenizer {
12
- constructor(props = {}) {
13
- var _a, _b;
14
- super({
15
- name: (_a = props.name) !== null && _a !== void 0 ? _a : uniqueName,
16
- priority: (_b = props.priority) !== null && _b !== void 0 ? _b : coreTokenizer.TokenizerPriority.CONTAINING_INLINE,
17
- });
18
- }
19
- _findDelimiter(startIndex, endIndex, nodePoints) {
9
+ const match = function (api) {
10
+ return {
11
+ findDelimiter: () => coreTokenizer.genFindDelimiter(_findDelimiter),
12
+ processDelimiterPair,
13
+ };
14
+ function _findDelimiter(startIndex, endIndex) {
15
+ const nodePoints = api.getNodePoints();
20
16
  for (let i = startIndex; i < endIndex; ++i) {
21
17
  const c = nodePoints[i].codePoint;
22
18
  switch (c) {
@@ -49,8 +45,8 @@ class DeleteTokenizer extends coreTokenizer.BaseInlineTokenizer {
49
45
  }
50
46
  return null;
51
47
  }
52
- processDelimiterPair(openerDelimiter, closerDelimiter, internalTokens, nodePoints, api) {
53
- internalTokens = api.resolveInternalTokens(internalTokens, openerDelimiter.endIndex, closerDelimiter.startIndex, nodePoints);
48
+ function processDelimiterPair(openerDelimiter, closerDelimiter, internalTokens) {
49
+ internalTokens = api.resolveInternalTokens(internalTokens, openerDelimiter.endIndex, closerDelimiter.startIndex);
54
50
  const token = {
55
51
  nodeType: ast.DeleteType,
56
52
  startIndex: openerDelimiter.startIndex,
@@ -59,15 +55,36 @@ class DeleteTokenizer extends coreTokenizer.BaseInlineTokenizer {
59
55
  };
60
56
  return { tokens: [token] };
61
57
  }
62
- processToken(token, children) {
63
- const result = {
64
- type: ast.DeleteType,
65
- children: children !== null && children !== void 0 ? children : [],
66
- };
67
- return result;
58
+ };
59
+
60
+ const parse = function (api) {
61
+ return {
62
+ parse: tokens => tokens.map(token => {
63
+ const children = api.parseInlineTokens(token.children);
64
+ const node = api.shouldReservePosition
65
+ ? { type: ast.DeleteType, position: api.calcPosition(token), children }
66
+ : { type: ast.DeleteType, children };
67
+ return node;
68
+ }),
69
+ };
70
+ };
71
+
72
+ const uniqueName = '@yozora/tokenizer-delete';
73
+
74
+ class DeleteTokenizer extends coreTokenizer.BaseInlineTokenizer {
75
+ constructor(props = {}) {
76
+ var _a, _b;
77
+ super({
78
+ name: (_a = props.name) !== null && _a !== void 0 ? _a : uniqueName,
79
+ priority: (_b = props.priority) !== null && _b !== void 0 ? _b : coreTokenizer.TokenizerPriority.CONTAINING_INLINE,
80
+ });
81
+ this.match = match;
82
+ this.parse = parse;
68
83
  }
69
84
  }
70
85
 
71
86
  exports.DeleteTokenizer = DeleteTokenizer;
72
87
  exports.DeleteTokenizerName = uniqueName;
73
- exports['default'] = DeleteTokenizer;
88
+ exports["default"] = DeleteTokenizer;
89
+ exports.deleteMatch = match;
90
+ exports.deleteParse = parse;
package/lib/esm/index.js CHANGED
@@ -1,18 +1,14 @@
1
1
  import { DeleteType } from '@yozora/ast';
2
2
  import { AsciiCodePoint, isWhitespaceCharacter } from '@yozora/character';
3
- import { BaseInlineTokenizer, TokenizerPriority, eatOptionalCharacters } from '@yozora/core-tokenizer';
3
+ import { genFindDelimiter, eatOptionalCharacters, BaseInlineTokenizer, TokenizerPriority } from '@yozora/core-tokenizer';
4
4
 
5
- const uniqueName = '@yozora/tokenizer-delete';
6
-
7
- class DeleteTokenizer extends BaseInlineTokenizer {
8
- constructor(props = {}) {
9
- var _a, _b;
10
- super({
11
- name: (_a = props.name) !== null && _a !== void 0 ? _a : uniqueName,
12
- priority: (_b = props.priority) !== null && _b !== void 0 ? _b : TokenizerPriority.CONTAINING_INLINE,
13
- });
14
- }
15
- _findDelimiter(startIndex, endIndex, nodePoints) {
5
+ const match = function (api) {
6
+ return {
7
+ findDelimiter: () => genFindDelimiter(_findDelimiter),
8
+ processDelimiterPair,
9
+ };
10
+ function _findDelimiter(startIndex, endIndex) {
11
+ const nodePoints = api.getNodePoints();
16
12
  for (let i = startIndex; i < endIndex; ++i) {
17
13
  const c = nodePoints[i].codePoint;
18
14
  switch (c) {
@@ -45,8 +41,8 @@ class DeleteTokenizer extends BaseInlineTokenizer {
45
41
  }
46
42
  return null;
47
43
  }
48
- processDelimiterPair(openerDelimiter, closerDelimiter, internalTokens, nodePoints, api) {
49
- internalTokens = api.resolveInternalTokens(internalTokens, openerDelimiter.endIndex, closerDelimiter.startIndex, nodePoints);
44
+ function processDelimiterPair(openerDelimiter, closerDelimiter, internalTokens) {
45
+ internalTokens = api.resolveInternalTokens(internalTokens, openerDelimiter.endIndex, closerDelimiter.startIndex);
50
46
  const token = {
51
47
  nodeType: DeleteType,
52
48
  startIndex: openerDelimiter.startIndex,
@@ -55,13 +51,32 @@ class DeleteTokenizer extends BaseInlineTokenizer {
55
51
  };
56
52
  return { tokens: [token] };
57
53
  }
58
- processToken(token, children) {
59
- const result = {
60
- type: DeleteType,
61
- children: children !== null && children !== void 0 ? children : [],
62
- };
63
- return result;
54
+ };
55
+
56
+ const parse = function (api) {
57
+ return {
58
+ parse: tokens => tokens.map(token => {
59
+ const children = api.parseInlineTokens(token.children);
60
+ const node = api.shouldReservePosition
61
+ ? { type: DeleteType, position: api.calcPosition(token), children }
62
+ : { type: DeleteType, children };
63
+ return node;
64
+ }),
65
+ };
66
+ };
67
+
68
+ const uniqueName = '@yozora/tokenizer-delete';
69
+
70
+ class DeleteTokenizer extends BaseInlineTokenizer {
71
+ constructor(props = {}) {
72
+ var _a, _b;
73
+ super({
74
+ name: (_a = props.name) !== null && _a !== void 0 ? _a : uniqueName,
75
+ priority: (_b = props.priority) !== null && _b !== void 0 ? _b : TokenizerPriority.CONTAINING_INLINE,
76
+ });
77
+ this.match = match;
78
+ this.parse = parse;
64
79
  }
65
80
  }
66
81
 
67
- export { DeleteTokenizer, uniqueName as DeleteTokenizerName, DeleteTokenizer as default };
82
+ export { DeleteTokenizer, uniqueName as DeleteTokenizerName, DeleteTokenizer as default, match as deleteMatch, parse as deleteParse };
@@ -1,5 +1,5 @@
1
- import { DeleteTokenizer } from './tokenizer';
2
- export { DeleteTokenizer } from './tokenizer';
1
+ export { match as deleteMatch } from './match';
2
+ export { parse as deleteParse } from './parse';
3
+ export { DeleteTokenizer, DeleteTokenizer as default } from './tokenizer';
3
4
  export { uniqueName as DeleteTokenizerName } from './types';
4
- export type { Token as DeleteToken, TokenizerProps as DeleteTokenizerProps, } from './types';
5
- export default DeleteTokenizer;
5
+ export type { IThis as IDeleteHookContext, IToken as IDeleteToken, ITokenizerProps as IDeleteTokenizerProps, } from './types';
@@ -0,0 +1,9 @@
1
+ import type { IMatchInlineHookCreator } from '@yozora/core-tokenizer';
2
+ import type { IDelimiter, IThis, IToken, T } from './types';
3
+ /**
4
+ * Strikethrough text is any text wrapped in two tildes (~).
5
+ *
6
+ * @see https://github.com/syntax-tree/mdast#delete
7
+ * @see https://github.github.com/gfm/#strikethrough-extension-
8
+ */
9
+ export declare const match: IMatchInlineHookCreator<T, IDelimiter, IToken, IThis>;
@@ -0,0 +1,3 @@
1
+ import type { IParseInlineHookCreator } from '@yozora/core-tokenizer';
2
+ import type { INode, IThis, IToken, T } from './types';
3
+ export declare const parse: IParseInlineHookCreator<T, IToken, INode, IThis>;
@@ -1,31 +1,13 @@
1
- import type { YastNode } from '@yozora/ast';
2
- import type { NodePoint } from '@yozora/character';
3
- import type { MatchInlinePhaseApi, ResultOfProcessDelimiterPair, Tokenizer, TokenizerMatchInlineHook, TokenizerParseInlineHook, YastInlineToken } from '@yozora/core-tokenizer';
1
+ import type { IInlineTokenizer, IMatchInlineHookCreator, IParseInlineHookCreator } from '@yozora/core-tokenizer';
4
2
  import { BaseInlineTokenizer } from '@yozora/core-tokenizer';
5
- import type { Delimiter, Node, T, Token, TokenizerProps } from './types';
3
+ import type { IDelimiter, INode, IThis, IToken, ITokenizerProps, T } from './types';
6
4
  /**
7
5
  * Lexical Analyzer for Delete.
8
- *
9
- * Strikethrough text is any text wrapped in two tildes (~).
10
- *
11
6
  * @see https://github.com/syntax-tree/mdast#delete
12
7
  * @see https://github.github.com/gfm/#strikethrough-extension-
13
8
  */
14
- export declare class DeleteTokenizer extends BaseInlineTokenizer<Delimiter> implements Tokenizer, TokenizerMatchInlineHook<T, Delimiter, Token>, TokenizerParseInlineHook<T, Token, Node> {
15
- constructor(props?: TokenizerProps);
16
- /**
17
- * @override
18
- * @see BaseInlineTokenizer
19
- */
20
- protected _findDelimiter(startIndex: number, endIndex: number, nodePoints: ReadonlyArray<NodePoint>): Delimiter | null;
21
- /**
22
- * @override
23
- * @see TokenizerMatchInlineHook
24
- */
25
- processDelimiterPair(openerDelimiter: Delimiter, closerDelimiter: Delimiter, internalTokens: ReadonlyArray<YastInlineToken>, nodePoints: ReadonlyArray<NodePoint>, api: Readonly<MatchInlinePhaseApi>): ResultOfProcessDelimiterPair<T, Token, Delimiter>;
26
- /**
27
- * @override
28
- * @see TokenizerParseInlineHook
29
- */
30
- processToken(token: Token, children?: YastNode[]): Node;
9
+ export declare class DeleteTokenizer extends BaseInlineTokenizer<T, IDelimiter, IToken, INode, IThis> implements IInlineTokenizer<T, IDelimiter, IToken, INode, IThis> {
10
+ constructor(props?: ITokenizerProps);
11
+ readonly match: IMatchInlineHookCreator<T, IDelimiter, IToken, IThis>;
12
+ readonly parse: IParseInlineHookCreator<T, IToken, INode, IThis>;
31
13
  }
@@ -1,8 +1,9 @@
1
- import type { Delete, DeleteType } from '@yozora/ast';
2
- import type { BaseInlineTokenizerProps, PartialYastInlineToken, YastTokenDelimiter } from '@yozora/core-tokenizer';
1
+ import type { DeleteType, IDelete } from '@yozora/ast';
2
+ import type { IBaseInlineTokenizerProps, IPartialYastInlineToken, ITokenizer, IYastTokenDelimiter } from '@yozora/core-tokenizer';
3
3
  export declare type T = DeleteType;
4
- export declare type Node = Delete;
4
+ export declare type INode = IDelete;
5
5
  export declare const uniqueName = "@yozora/tokenizer-delete";
6
- export declare type Token = PartialYastInlineToken<T>;
7
- export declare type Delimiter = YastTokenDelimiter;
8
- export declare type TokenizerProps = Partial<BaseInlineTokenizerProps>;
6
+ export declare type IToken = IPartialYastInlineToken<T>;
7
+ export declare type IDelimiter = IYastTokenDelimiter;
8
+ export declare type IThis = ITokenizer;
9
+ export declare type ITokenizerProps = Partial<IBaseInlineTokenizerProps>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yozora/tokenizer-delete",
3
- "version": "1.2.2",
3
+ "version": "2.0.0-alpha.2",
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.2",
39
- "@yozora/character": "^1.2.2",
40
- "@yozora/core-tokenizer": "^1.2.2"
38
+ "@yozora/ast": "^2.0.0-alpha.2",
39
+ "@yozora/character": "^2.0.0-alpha.2",
40
+ "@yozora/core-tokenizer": "^2.0.0-alpha.2"
41
41
  },
42
- "gitHead": "fb4b804548592c09259aabcf9cc4dd96176bd024"
42
+ "gitHead": "da59d85520455c59a117a35032ef1a035c10ea21"
43
43
  }