Skip to content

Instantly share code, notes, and snippets.

@wildiney
Last active December 13, 2024 17:27
Show Gist options
  • Save wildiney/e75973fed03a63b80879d559580e1de3 to your computer and use it in GitHub Desktop.
Save wildiney/e75973fed03a63b80879d559580e1de3 to your computer and use it in GitHub Desktop.
pre {
background-color: #f6f8fa;
padding: 10px;
border-radius: 5px;
overflow: auto;
}
.string {
color: darkgray;
}
.number {
color: darkorange;
}
.boolean {
color: blue;
}
.null {
color: magenta;
}
.key {
color: green;
}
<pre [innerHTML]="jsondata"></pre>
syntaxHighlight (json: TypedJson) {
const jsonString = JSON.stringify(json, undefined, 2);
return jsonString.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;")
.replace(/("(\\u[a-zA-Z0-9]{4}|\\[^u]|[^\\"])*"(\s*:)?|\b(true|false|null)\b|\d+)/g, (match) => {
let cls = 'number';
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';
}
return `<span class="${cls}">${match}</span>`;
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment