parent
76637eb863
commit
28c818a8fb
|
After Width: | Height: | Size: 326 B |
@ -0,0 +1,87 @@
|
||||
interface IPrismKindStyle {
|
||||
color?: string;
|
||||
italic?: boolean;
|
||||
opacity?: number;
|
||||
bold?: boolean;
|
||||
}
|
||||
|
||||
export function getPrismKindStyle(payload: string): IPrismKindStyle | null {
|
||||
switch (payload) {
|
||||
case "comment":
|
||||
case "prolog":
|
||||
case "doctype":
|
||||
case "cdata":
|
||||
return { color: "#008000", italic: true }
|
||||
case "namespace":
|
||||
return { opacity: 0.7 }
|
||||
case "string":
|
||||
return { color: "#A31515" }
|
||||
case "punctuation":
|
||||
case "operator":
|
||||
return { color: "#393A34" }
|
||||
case "url":
|
||||
case "symbol":
|
||||
case "number":
|
||||
case "boolean":
|
||||
case "variable":
|
||||
case "constant":
|
||||
case "inserted":
|
||||
return { color: "#36acaa" }
|
||||
case "atrule":
|
||||
case "keyword":
|
||||
case "attr-value":
|
||||
return { color: "#0000ff" }
|
||||
case "function":
|
||||
return { color: "#b9a40a" }
|
||||
case "deleted":
|
||||
case "tag":
|
||||
return { color: "#9a050f" }
|
||||
case "selector":
|
||||
return { color: "#00009f" }
|
||||
case "important":
|
||||
return { color: "#e90", bold: true }
|
||||
case "italic":
|
||||
return { italic: true }
|
||||
case "class-name":
|
||||
case "property":
|
||||
return { color: "#2B91AF" }
|
||||
case "attr-name":
|
||||
case "regex":
|
||||
case "entity":
|
||||
return { color: "#ff0000" }
|
||||
default:
|
||||
return null
|
||||
}
|
||||
}
|
||||
|
||||
type IFormatPrismToken = {
|
||||
type?: string;
|
||||
content: string;
|
||||
} & IPrismKindStyle
|
||||
|
||||
export function formatPrismToken(payload: (Prism.Token | string)[]): IFormatPrismToken[] {
|
||||
const formatTokenList: IFormatPrismToken[] = []
|
||||
function format(tokenList: (Prism.Token | string)[]) {
|
||||
for (let i = 0; i < tokenList.length; i++) {
|
||||
const element = tokenList[i]
|
||||
if (typeof element === 'string') {
|
||||
formatTokenList.push({
|
||||
content: element
|
||||
})
|
||||
} else if (Array.isArray(element.content)) {
|
||||
format(element.content)
|
||||
} else {
|
||||
const { type, content } = element
|
||||
if (typeof content === 'string') {
|
||||
formatTokenList.push({
|
||||
type,
|
||||
content,
|
||||
...getPrismKindStyle(type)
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
format(payload)
|
||||
return formatTokenList
|
||||
}
|
||||
Loading…
Reference in new issue