import { Segment, SegmentType } from "../funcs/fmt" import { hex, bgHex } from "ansis" export function toPrintArgs_Terminal(segmentsList: Segment[][]): any[] { let args: any[] = [] for (const segments of segmentsList) { let argSegments: any[] = [] for (const segment of segments) { let [content, type, options] = segment // Title if (type === SegmentType.Title || type === SegmentType.TitleWarn) { let splits = content.split("›") let hasHighlight = false const isWarn = type === SegmentType.TitleWarn content = splits.map((t: string) => { let tRaw = t if (!hasHighlight) { t = isWarn ? hex("#eea527ff")(t) : hex("#0be5a7ff")(t) } else { t = isWarn ? hex("#b07b1eff")(t) : hex("#0cc7caff")(t) } // <👁|Request|Get|url> // 如果第一个子标题是 Emoji 不占用高亮配额,用 3 字符长度判断是否是 Emoji(快速但不准确) if (tRaw.length > 3) { hasHighlight = true } return t }) const SEP = isWarn ? hex("#cc5030")("›") : hex("#1c8b71")("›") content = content.join(SEP) if (splits.length > 1) content += ` ${SEP}` } // Hero else if (type === SegmentType.HeroWarn || type === SegmentType.Hero) { let splits = content.split("|") if (splits.length > 1) { let t1 = splits[0] let t2 = splits.slice(1).join("") if (type === SegmentType.HeroWarn) { content = bgHex("#ff6034ff").hex("#ffffff")(` ${t1} `) + bgHex("#fffa5cff").hex("#9d4400ff")(` ${t2} `) } else { content = bgHex("#6118ffff").hex("#ffffff")(` ${t1} `) + bgHex("#6aeedfff").hex("#033436ff")(` ${t2} `) } } else { if (type === SegmentType.HeroWarn) { content = bgHex("#ff6034ff")(hex("#ffffff")(` ${content} `)) } else { content = bgHex("#6118ffff").hex("#ffffff")(` ${content} `) } } } // Warn else if (type === SegmentType.Warn) { content = hex("#ff6034ff")(content) } // Bold else if (type === SegmentType.Bold) { content = hex("#ecd20bff").bold(content) } // Subtext else if (type === SegmentType.Subtext) { content = hex("#6f6f6f")(content) } // Now else if (type === SegmentType.Now) { content = hex("#6f6f6f").italic(content) } // Debug else if (type === SegmentType.Debug) { content = bgHex("#3456ff").bold(" >>> ") } argSegments.push(content) } if (argSegments.length > 1) { args.push(argSegments.join("")) } else { args.push(argSegments[0]) } } // console.log("Print", args.join(" ")) return args }