import { parseNormalText } from "./parseText"; export function parseTable( templates: string[], i: number, templateLength: number ) { let result = ""; // 处理标题 result += processTableTHead(templates[i]); result += ``; ++i; for (; i < templateLength; i++) { if (templates[i].trim()[0] === "|") { result += processTabletBody(templates[i]); } else { break; } } result += `
`; result = result.replace(/<\/tr>/, ""); return { startIdx: i - 1, result }; } function processTableTHead(s: string) { let preIdx = -1, template = ""; for (let i = 0, n = s.length; i < n; i++) { if ( s[i] == "|" && isValidedSplitChar(s, i - 1) && isValidedSplitChar(s, i + 1) ) { if (preIdx != -1) { template += `${parseNormalText(s.slice(preIdx + 1, i))}`; } preIdx = i; } } return template + ``; } function processTabletBody(s: string) { let preIdx = -1, template = ""; for (let i = 0, n = s.length; i < n; i++) { if ( s[i] == "|" && isValidedSplitChar(s, i - 1) && isValidedSplitChar(s, i + 1) ) { if (preIdx != -1) { let cnts = s.slice(preIdx + 1, i); if (cnts.trim()[0] === "-") { continue; } template += `${parseNormalText(cnts)}`; } preIdx = i; } } return template + ``; } function isValidedSplitChar(s: string, i: number) { return s[i] === " " || s[i] == undefined; }