MCPcopy
hub / github.com/markedjs/marked / walkTokens

Method walkTokens

src/Instance.ts:38–74  ·  view source on GitHub ↗

* Run callback for every token

(tokens: Token[] | TokensList, callback: (token: Token) => MaybePromise | MaybePromise[])

Source from the content-addressed store, hash-verified

36 * Run callback for every token
37 */
38 walkTokens(tokens: Token[] | TokensList, callback: (token: Token) => MaybePromise | MaybePromise[]) {
39 let values: MaybePromise[] = [];
40 for (const token of tokens) {
41 values = values.concat(callback.call(this, token));
42 switch (token.type) {
43 case 'table': {
44 const tableToken = token as Tokens.Table;
45 for (const cell of tableToken.header) {
46 values = values.concat(this.walkTokens(cell.tokens, callback));
47 }
48 for (const row of tableToken.rows) {
49 for (const cell of row) {
50 values = values.concat(this.walkTokens(cell.tokens, callback));
51 }
52 }
53 break;
54 }
55 case 'list': {
56 const listToken = token as Tokens.List;
57 values = values.concat(this.walkTokens(listToken.items, callback));
58 break;
59 }
60 default: {
61 const genericToken = token as Tokens.Generic;
62 if (this.defaults.extensions?.childTokens?.[genericToken.type]) {
63 this.defaults.extensions.childTokens[genericToken.type].forEach((childTokens) => {
64 const tokens = genericToken[childTokens].flat(Infinity) as Token[] | TokensList;
65 values = values.concat(this.walkTokens(tokens, callback));
66 });
67 } else if (genericToken.tokens) {
68 values = values.concat(this.walkTokens(genericToken.tokens, callback));
69 }
70 }
71 }
72 }
73 return values;
74 }
75
76 use(...args: MarkedExtension<ParserOutput, RendererOutput>[]) {
77 const extensions: MarkedOptions<ParserOutput, RendererOutput>['extensions'] = this.defaults.extensions || { renderers: {}, childTokens: {} };

Callers 2

parseMethod · 0.95
marked.tsFile · 0.80

Calls

no outgoing calls

Tested by

no test coverage detected