MCPcopy
hub / github.com/colinhacks/zod / extractTabsBlocks

Function extractTabsBlocks

packages/docs/content/api.test.ts:53–98  ·  view source on GitHub ↗
(source: string)

Source from the content-addressed store, hash-verified

51});
52
53function extractTabsBlocks(source: string): TabsBlock[] {
54 const lines = stripMdxComments(source);
55 const blocks: TabsBlock[] = [];
56
57 for (let index = 0; index < lines.length; index++) {
58 const line = lines[index];
59
60 if (!line || !/<Tabs\b/.test(line.text)) {
61 continue;
62 }
63
64 const tabs: TabBlock[] = [];
65 let currentTab: TabBlock | undefined;
66
67 for (index += 1; index < lines.length; index++) {
68 const blockLine = lines[index];
69
70 if (!blockLine || /<\/Tabs>/.test(blockLine.text)) {
71 break;
72 }
73
74 const tabValue = getTabValue(blockLine.text);
75
76 if (tabValue) {
77 currentTab = { value: tabValue, line: blockLine.number, codeFences: [] };
78 tabs.push(currentTab);
79 continue;
80 }
81
82 if (/<\/Tab>/.test(blockLine.text)) {
83 currentTab = undefined;
84 continue;
85 }
86
87 if (currentTab && blockLine.text.trimStart().startsWith("```")) {
88 const codeFence = readCodeFence(lines, index, blockLine.number);
89 currentTab.codeFences.push(codeFence);
90 index += codeFence.lineCount + 1;
91 }
92 }
93
94 blocks.push({ startLine: line.number, tabs });
95 }
96
97 return blocks;
98}
99
100function stripMdxComments(source: string): SourceLine[] {
101 const lines = source.split(/\r?\n/);

Callers 1

api.test.tsFile · 0.85

Calls 4

stripMdxCommentsFunction · 0.85
getTabValueFunction · 0.85
readCodeFenceFunction · 0.85
startsWithMethod · 0.65

Tested by

no test coverage detected