@yozora/tokenizer-footnote-reference 1.3.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 +54 -46
- package/lib/esm/index.js +54 -46
- package/lib/types/index.d.ts +2 -4
- package/lib/types/tokenizer.d.ts +6 -19
- package/lib/types/types.d.ts +6 -6
- package/package.json +6 -6
package/lib/cjs/index.js
CHANGED
|
@@ -16,58 +16,66 @@ class FootnoteReferenceTokenizer extends coreTokenizer.BaseInlineTokenizer {
|
|
|
16
16
|
name: (_a = props.name) !== null && _a !== void 0 ? _a : uniqueName,
|
|
17
17
|
priority: (_b = props.priority) !== null && _b !== void 0 ? _b : coreTokenizer.TokenizerPriority.ATOMIC,
|
|
18
18
|
});
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
19
|
+
this.match = api => {
|
|
20
|
+
return {
|
|
21
|
+
findDelimiter: () => coreTokenizer.genFindDelimiter(_findDelimiter),
|
|
22
|
+
processSingleDelimiter,
|
|
23
|
+
};
|
|
24
|
+
function _findDelimiter(startIndex, endIndex) {
|
|
25
|
+
const nodePoints = api.getNodePoints();
|
|
26
|
+
for (let i = startIndex; i < endIndex; ++i) {
|
|
27
|
+
const p = nodePoints[i];
|
|
28
|
+
switch (p.codePoint) {
|
|
29
|
+
case character.AsciiCodePoint.BACKSLASH:
|
|
30
|
+
i += 1;
|
|
31
|
+
break;
|
|
32
|
+
case character.AsciiCodePoint.OPEN_BRACKET: {
|
|
33
|
+
const nextIndex = tokenizerFootnoteDefinition.eatFootnoteLabel(nodePoints, i, endIndex);
|
|
34
|
+
if (nextIndex >= 0) {
|
|
35
|
+
return {
|
|
36
|
+
type: 'full',
|
|
37
|
+
startIndex: i,
|
|
38
|
+
endIndex: nextIndex,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
break;
|
|
42
|
+
}
|
|
36
43
|
}
|
|
37
|
-
break;
|
|
38
44
|
}
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
function processSingleDelimiter(delimiter) {
|
|
48
|
+
const nodePoints = api.getNodePoints();
|
|
49
|
+
const labelAndIdentifier = coreTokenizer.resolveLinkLabelAndIdentifier(nodePoints, delimiter.startIndex + 2, delimiter.endIndex - 1);
|
|
50
|
+
if (labelAndIdentifier == null)
|
|
51
|
+
return [];
|
|
52
|
+
const { label, identifier } = labelAndIdentifier;
|
|
53
|
+
if (!api.hasFootnoteDefinition(identifier))
|
|
54
|
+
return [];
|
|
55
|
+
const token = {
|
|
56
|
+
nodeType: ast.FootnoteReferenceType,
|
|
57
|
+
startIndex: delimiter.startIndex,
|
|
58
|
+
endIndex: delimiter.endIndex,
|
|
59
|
+
label,
|
|
60
|
+
identifier,
|
|
61
|
+
};
|
|
62
|
+
return [token];
|
|
39
63
|
}
|
|
40
|
-
}
|
|
41
|
-
return null;
|
|
42
|
-
}
|
|
43
|
-
processSingleDelimiter(delimiter, api) {
|
|
44
|
-
const nodePoints = api.getNodePoints();
|
|
45
|
-
const labelAndIdentifier = coreTokenizer.resolveLinkLabelAndIdentifier(nodePoints, delimiter.startIndex + 2, delimiter.endIndex - 1);
|
|
46
|
-
if (labelAndIdentifier == null)
|
|
47
|
-
return [];
|
|
48
|
-
const { label, identifier } = labelAndIdentifier;
|
|
49
|
-
if (!api.hasFootnoteDefinition(identifier))
|
|
50
|
-
return [];
|
|
51
|
-
const token = {
|
|
52
|
-
nodeType: ast.FootnoteReferenceType,
|
|
53
|
-
startIndex: delimiter.startIndex,
|
|
54
|
-
endIndex: delimiter.endIndex,
|
|
55
|
-
label,
|
|
56
|
-
identifier,
|
|
57
|
-
};
|
|
58
|
-
return [token];
|
|
59
|
-
}
|
|
60
|
-
parseInline(token) {
|
|
61
|
-
const { identifier, label } = token;
|
|
62
|
-
const result = {
|
|
63
|
-
type: ast.FootnoteReferenceType,
|
|
64
|
-
identifier,
|
|
65
|
-
label,
|
|
66
64
|
};
|
|
67
|
-
|
|
65
|
+
this.parse = () => ({
|
|
66
|
+
parse: token => {
|
|
67
|
+
const { identifier, label } = token;
|
|
68
|
+
const result = {
|
|
69
|
+
type: ast.FootnoteReferenceType,
|
|
70
|
+
identifier,
|
|
71
|
+
label,
|
|
72
|
+
};
|
|
73
|
+
return result;
|
|
74
|
+
},
|
|
75
|
+
});
|
|
68
76
|
}
|
|
69
77
|
}
|
|
70
78
|
|
|
71
79
|
exports.FootnoteReferenceTokenizer = FootnoteReferenceTokenizer;
|
|
72
80
|
exports.FootnoteReferenceTokenizerName = uniqueName;
|
|
73
|
-
exports[
|
|
81
|
+
exports["default"] = FootnoteReferenceTokenizer;
|
package/lib/esm/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { FootnoteReferenceType } from '@yozora/ast';
|
|
2
2
|
import { AsciiCodePoint } from '@yozora/character';
|
|
3
|
-
import { BaseInlineTokenizer, TokenizerPriority, resolveLinkLabelAndIdentifier } from '@yozora/core-tokenizer';
|
|
3
|
+
import { BaseInlineTokenizer, TokenizerPriority, genFindDelimiter, resolveLinkLabelAndIdentifier } from '@yozora/core-tokenizer';
|
|
4
4
|
import { eatFootnoteLabel } from '@yozora/tokenizer-footnote-definition';
|
|
5
5
|
|
|
6
6
|
const uniqueName = '@yozora/tokenizer-footnote-reference';
|
|
@@ -12,55 +12,63 @@ class FootnoteReferenceTokenizer extends BaseInlineTokenizer {
|
|
|
12
12
|
name: (_a = props.name) !== null && _a !== void 0 ? _a : uniqueName,
|
|
13
13
|
priority: (_b = props.priority) !== null && _b !== void 0 ? _b : TokenizerPriority.ATOMIC,
|
|
14
14
|
});
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
15
|
+
this.match = api => {
|
|
16
|
+
return {
|
|
17
|
+
findDelimiter: () => genFindDelimiter(_findDelimiter),
|
|
18
|
+
processSingleDelimiter,
|
|
19
|
+
};
|
|
20
|
+
function _findDelimiter(startIndex, endIndex) {
|
|
21
|
+
const nodePoints = api.getNodePoints();
|
|
22
|
+
for (let i = startIndex; i < endIndex; ++i) {
|
|
23
|
+
const p = nodePoints[i];
|
|
24
|
+
switch (p.codePoint) {
|
|
25
|
+
case AsciiCodePoint.BACKSLASH:
|
|
26
|
+
i += 1;
|
|
27
|
+
break;
|
|
28
|
+
case AsciiCodePoint.OPEN_BRACKET: {
|
|
29
|
+
const nextIndex = eatFootnoteLabel(nodePoints, i, endIndex);
|
|
30
|
+
if (nextIndex >= 0) {
|
|
31
|
+
return {
|
|
32
|
+
type: 'full',
|
|
33
|
+
startIndex: i,
|
|
34
|
+
endIndex: nextIndex,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
break;
|
|
38
|
+
}
|
|
32
39
|
}
|
|
33
|
-
break;
|
|
34
40
|
}
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
function processSingleDelimiter(delimiter) {
|
|
44
|
+
const nodePoints = api.getNodePoints();
|
|
45
|
+
const labelAndIdentifier = resolveLinkLabelAndIdentifier(nodePoints, delimiter.startIndex + 2, delimiter.endIndex - 1);
|
|
46
|
+
if (labelAndIdentifier == null)
|
|
47
|
+
return [];
|
|
48
|
+
const { label, identifier } = labelAndIdentifier;
|
|
49
|
+
if (!api.hasFootnoteDefinition(identifier))
|
|
50
|
+
return [];
|
|
51
|
+
const token = {
|
|
52
|
+
nodeType: FootnoteReferenceType,
|
|
53
|
+
startIndex: delimiter.startIndex,
|
|
54
|
+
endIndex: delimiter.endIndex,
|
|
55
|
+
label,
|
|
56
|
+
identifier,
|
|
57
|
+
};
|
|
58
|
+
return [token];
|
|
35
59
|
}
|
|
36
|
-
}
|
|
37
|
-
return null;
|
|
38
|
-
}
|
|
39
|
-
processSingleDelimiter(delimiter, api) {
|
|
40
|
-
const nodePoints = api.getNodePoints();
|
|
41
|
-
const labelAndIdentifier = resolveLinkLabelAndIdentifier(nodePoints, delimiter.startIndex + 2, delimiter.endIndex - 1);
|
|
42
|
-
if (labelAndIdentifier == null)
|
|
43
|
-
return [];
|
|
44
|
-
const { label, identifier } = labelAndIdentifier;
|
|
45
|
-
if (!api.hasFootnoteDefinition(identifier))
|
|
46
|
-
return [];
|
|
47
|
-
const token = {
|
|
48
|
-
nodeType: FootnoteReferenceType,
|
|
49
|
-
startIndex: delimiter.startIndex,
|
|
50
|
-
endIndex: delimiter.endIndex,
|
|
51
|
-
label,
|
|
52
|
-
identifier,
|
|
53
|
-
};
|
|
54
|
-
return [token];
|
|
55
|
-
}
|
|
56
|
-
parseInline(token) {
|
|
57
|
-
const { identifier, label } = token;
|
|
58
|
-
const result = {
|
|
59
|
-
type: FootnoteReferenceType,
|
|
60
|
-
identifier,
|
|
61
|
-
label,
|
|
62
60
|
};
|
|
63
|
-
|
|
61
|
+
this.parse = () => ({
|
|
62
|
+
parse: token => {
|
|
63
|
+
const { identifier, label } = token;
|
|
64
|
+
const result = {
|
|
65
|
+
type: FootnoteReferenceType,
|
|
66
|
+
identifier,
|
|
67
|
+
label,
|
|
68
|
+
};
|
|
69
|
+
return result;
|
|
70
|
+
},
|
|
71
|
+
});
|
|
64
72
|
}
|
|
65
73
|
}
|
|
66
74
|
|
package/lib/types/index.d.ts
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
export { FootnoteReferenceTokenizer } from './tokenizer';
|
|
1
|
+
export { FootnoteReferenceTokenizer, FootnoteReferenceTokenizer as default } from './tokenizer';
|
|
3
2
|
export { uniqueName as FootnoteReferenceTokenizerName } from './types';
|
|
4
|
-
export type {
|
|
5
|
-
export default FootnoteReferenceTokenizer;
|
|
3
|
+
export type { IToken as IFootnoteReferenceToken, ITokenizerProps as IFootnoteReferenceTokenizerProps, } from './types';
|
package/lib/types/tokenizer.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { IInlineTokenizer, IMatchInlineHookCreator, IParseInlineHookCreator } from '@yozora/core-tokenizer';
|
|
2
2
|
import { BaseInlineTokenizer } from '@yozora/core-tokenizer';
|
|
3
|
-
import type {
|
|
3
|
+
import type { IDelimiter, INode, IToken, ITokenizerProps, T } from './types';
|
|
4
4
|
/**
|
|
5
5
|
* Lexical Analyzer for footnote reference.
|
|
6
6
|
*
|
|
@@ -17,21 +17,8 @@ import type { Delimiter, Node, T, Token, TokenizerProps } from './types';
|
|
|
17
17
|
* @see https://github.com/syntax-tree/mdast#footnotereference
|
|
18
18
|
* @see https://github.github.com/gfm/#link-label
|
|
19
19
|
*/
|
|
20
|
-
export declare class FootnoteReferenceTokenizer extends BaseInlineTokenizer<
|
|
21
|
-
constructor(props?:
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
* @see BaseInlineTokenizer
|
|
25
|
-
*/
|
|
26
|
-
protected _findDelimiter(startIndex: number, endIndex: number, api: Readonly<MatchInlinePhaseApi>): Delimiter | null;
|
|
27
|
-
/**
|
|
28
|
-
* @override
|
|
29
|
-
* @see TokenizerMatchInlineHook
|
|
30
|
-
*/
|
|
31
|
-
processSingleDelimiter(delimiter: Delimiter, api: Readonly<MatchInlinePhaseApi>): ResultOfProcessSingleDelimiter<T, Token>;
|
|
32
|
-
/**
|
|
33
|
-
* @override
|
|
34
|
-
* @see TokenizerParseInlineHook
|
|
35
|
-
*/
|
|
36
|
-
parseInline(token: Token): Node;
|
|
20
|
+
export declare class FootnoteReferenceTokenizer 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>;
|
|
37
24
|
}
|
package/lib/types/types.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type {
|
|
1
|
+
import type { FootnoteReferenceType, IFootnoteReference, IYastAssociation } from '@yozora/ast';
|
|
2
|
+
import type { IBaseInlineTokenizerProps, IPartialYastInlineToken, IYastTokenDelimiter } from '@yozora/core-tokenizer';
|
|
3
3
|
export declare const uniqueName = "@yozora/tokenizer-footnote-reference";
|
|
4
4
|
export declare type T = FootnoteReferenceType;
|
|
5
|
-
export declare type
|
|
6
|
-
export interface
|
|
5
|
+
export declare type INode = IFootnoteReference;
|
|
6
|
+
export interface IToken extends IPartialYastInlineToken<T>, IYastAssociation {
|
|
7
7
|
}
|
|
8
|
-
export interface
|
|
8
|
+
export interface IDelimiter extends IYastTokenDelimiter {
|
|
9
9
|
type: 'full';
|
|
10
10
|
}
|
|
11
|
-
export declare type
|
|
11
|
+
export declare type ITokenizerProps = Partial<IBaseInlineTokenizerProps>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yozora/tokenizer-footnote-reference",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0-alpha.0",
|
|
4
4
|
"author": {
|
|
5
5
|
"name": "guanghechen",
|
|
6
6
|
"url": "https://github.com/guanghechen/"
|
|
@@ -35,10 +35,10 @@
|
|
|
35
35
|
"test": "cross-env TS_NODE_FILES=true jest --config ../../jest.config.js --rootDir ."
|
|
36
36
|
},
|
|
37
37
|
"dependencies": {
|
|
38
|
-
"@yozora/ast": "^
|
|
39
|
-
"@yozora/character": "^
|
|
40
|
-
"@yozora/core-tokenizer": "^
|
|
41
|
-
"@yozora/tokenizer-footnote-definition": "^
|
|
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
|
+
"@yozora/tokenizer-footnote-definition": "^2.0.0-alpha.0"
|
|
42
42
|
},
|
|
43
|
-
"gitHead": "
|
|
43
|
+
"gitHead": "0171501339c49ffd02ed16a63447fa20a47a29a7"
|
|
44
44
|
}
|