Skip to content

Instantly share code, notes, and snippets.

@Codennnn
Last active May 23, 2022 02:06
Show Gist options
  • Save Codennnn/647d2442ba1f34d06f9bf6d6e84fd8c6 to your computer and use it in GitHub Desktop.
Save Codennnn/647d2442ba1f34d06f9bf6d6e84fd8c6 to your computer and use it in GitHub Desktop.
export function highlightJSON(json: string): string {
if (!json) {
return ''
}
if (typeof json !== 'string') {
json = JSON.stringify(json, undefined, 2)
}
json = json.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;')
return json.replace(
/("(\\u[a-zA-Z0-9]{4}|\\[^u]|[^\\"])*"(\s*:)?|\b(true|false|null)\b|-?\d+(?:\.\d*)?(?:[eE][+-]?\d+)?)/g,
(match) => {
let cls = ''
if (/^"/.test(match)) {
if (/:$/.test(match)) {
cls = 'key'
} else {
cls = 'string'
}
} else if (/true|false/.test(match)) {
cls = 'boolean'
} else if (/null/.test(match)) {
cls = 'null'
} else {
cls = 'number'
}
return `<span class="token ${cls}">${match}</span>`
}
)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment