MCPcopy Create free account
hub / github.com/chokcoco/iCSS / parseMarkdown

Function parseMarkdown

website/app/test-fixes/page.tsx:235–442  ·  view source on GitHub ↗
(text: string)

Source from the content-addressed store, hash-verified

233
234// 改进的 Markdown 解析函数
235const parseMarkdown = (text: string): React.ReactNode[] => {
236 if (!text) return [];
237
238 const lines = text.split('\n');
239 const elements: React.ReactNode[] = [];
240 let currentCodeBlock = '';
241 let inCodeBlock = false;
242 let codeLanguage = '';
243 let inList = false;
244 let listItems: React.ReactNode[] = [];
245
246 for (let i = 0; i < lines.length; i++) {
247 const line = lines[i];
248
249 // 检测代码块开始
250 if (line.startsWith('```')) {
251 // 结束当前列表
252 if (inList && listItems.length > 0) {
253 elements.push(
254 <ul key={`ul-${i}`} className="mb-4 pl-6 list-disc">
255 {listItems}
256 </ul>
257 );
258 listItems = [];
259 inList = false;
260 }
261
262 if (!inCodeBlock) {
263 // 开始代码块
264 inCodeBlock = true;
265 codeLanguage = line.slice(3).trim() || 'text';
266 currentCodeBlock = '';
267 } else {
268 // 结束代码块
269 inCodeBlock = false;
270 if (currentCodeBlock.trim()) {
271 // 检测是否是 CodePen 格式
272 const isCodePen = codeLanguage === 'codepen' ||
273 currentCodeBlock.includes('<!-- CodePen Demo -->') ||
274 currentCodeBlock.includes('<!-- HTML -->') ||
275 currentCodeBlock.includes('<!-- CSS -->') ||
276 currentCodeBlock.includes('<!-- JavaScript -->');
277
278 elements.push(
279 <CodeBlock key={`code-${i}`} language={isCodePen ? 'codepen' : codeLanguage}>
280 {currentCodeBlock.trim()}
281 </CodeBlock>
282 );
283 }
284 currentCodeBlock = '';
285 continue;
286 }
287 } else if (inCodeBlock) {
288 // 在代码块内
289 currentCodeBlock += line + '\n';
290 } else {
291 // 普通文本处理
292 if (line.trim() === '') {

Callers 1

TestFixesPageFunction · 0.70

Calls 1

parseInlineMarkdownFunction · 0.70

Tested by

no test coverage detected