use the new highlighter in all the pages
This commit is contained in:
parent
d098b60a38
commit
b78b30a34d
@ -36,9 +36,6 @@ export function lex(code: string): Array<Token> {
|
|||||||
while (current_pos < code_len) {
|
while (current_pos < code_len) {
|
||||||
const c = code[current_pos];
|
const c = code[current_pos];
|
||||||
|
|
||||||
let next_token: Token | null = null;
|
|
||||||
let next_position: number | null = null;
|
|
||||||
|
|
||||||
// try to scan a number
|
// try to scan a number
|
||||||
if (is_digit(c)) {
|
if (is_digit(c)) {
|
||||||
// if the current default token is not empty, push it to the tokens array
|
// if the current default token is not empty, push it to the tokens array
|
||||||
@ -118,26 +115,16 @@ export function lex(code: string): Array<Token> {
|
|||||||
current_pos = pos;
|
current_pos = pos;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
// replace < with <
|
||||||
// here, check if a token was found
|
else if (c === "<") {
|
||||||
if (next_token !== null && next_position !== null) {
|
current_default_token += "<";
|
||||||
// if there was a default token, push it to the tokens array
|
current_pos++;
|
||||||
if (current_default_token !== "") {
|
|
||||||
tokens.push({ v: current_default_token, token_type: "" });
|
|
||||||
current_default_token = "";
|
|
||||||
}
|
|
||||||
|
|
||||||
// then push the new token found
|
|
||||||
tokens.push(next_token);
|
|
||||||
current_pos = next_position;
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
// otherwise, add the current character to the default token
|
|
||||||
else {
|
|
||||||
current_default_token += c;
|
current_default_token += c;
|
||||||
current_pos++;
|
current_pos++;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// if there was a default token, push it to the tokens array
|
// if there was a default token, push it to the tokens array
|
||||||
if (current_default_token !== "") {
|
if (current_default_token !== "") {
|
||||||
|
@ -74,8 +74,6 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="/js/prism.min.js"></script>
|
|
||||||
<script src="/js/prism.thp.js"></script>
|
|
||||||
<script src="/js/highlighter.js"></script>
|
<script src="/js/highlighter.js"></script>
|
||||||
<script>
|
<script>
|
||||||
let jar = CodeJar(document.getElementById("editor"), thp_highlighter, {
|
let jar = CodeJar(document.getElementById("editor"), thp_highlighter, {
|
||||||
@ -83,7 +81,7 @@
|
|||||||
});
|
});
|
||||||
|
|
||||||
jar.updateCode(
|
jar.updateCode(
|
||||||
`// Actual generics & sum types 322 644
|
`// Actual generics & sum types
|
||||||
fun find_person(Int person_id) -> Result[String, String] {
|
fun find_person(Int person_id) -> Result[String, String] {
|
||||||
// Easy, explicit error bubbling
|
// Easy, explicit error bubbling
|
||||||
try Person::find_by_id(person_id)
|
try Person::find_by_id(person_id)
|
||||||
|
4
static/js/prism.min.js
vendored
4
static/js/prism.min.js
vendored
File diff suppressed because one or more lines are too long
@ -1,25 +0,0 @@
|
|||||||
Prism.languages.thp = {
|
|
||||||
"comment": [
|
|
||||||
{
|
|
||||||
pattern: /(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,
|
|
||||||
lookbehind: true,
|
|
||||||
greedy: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
pattern: /(^|[^\\:])\/\/.*/,
|
|
||||||
lookbehind: true,
|
|
||||||
greedy: true,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
"string": {
|
|
||||||
pattern: /(["])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,
|
|
||||||
greedy: true,
|
|
||||||
},
|
|
||||||
"keyword": /\b(?:case|static|const|enum|loop|use|break|catch|continue|do|else|finally|for|fun|if|in|fn|nil|return|throw|try|while|type|match|with|of|abstract|class|interface|private|pub|map|override|open|init|val|var|mut|clone)\b/,
|
|
||||||
"number": /\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,
|
|
||||||
"operator": /[<>]=?|[!=]=?=?|--?|\$|\+\+?|&&?|\|\|?|[?*/~^%]/,
|
|
||||||
"punctuation": /[{}[\];(),.]/,
|
|
||||||
"boolean": /\b(?:false|true)\b/,
|
|
||||||
"class-name": /\b[A-Z][a-zA-Z_0-9]*\b/,
|
|
||||||
"variable": /\b[a-z_0-9][a-zA-Z_0-9]+:/,
|
|
||||||
};
|
|
@ -49,8 +49,25 @@
|
|||||||
</main>
|
</main>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="/js/prism.min.js"></script>
|
<script src="/js/highlighter.js"></script>
|
||||||
<script src="/js/prism.thp.js"></script>
|
<script>
|
||||||
</body>
|
// Add an editor to all code samples
|
||||||
|
|
||||||
|
const code_elements = document.querySelectorAll(".language-thp");
|
||||||
|
|
||||||
|
for (const el of [...code_elements]) {
|
||||||
|
const pre_parent = el.parentElement;
|
||||||
|
const new_div = document.createElement("div");
|
||||||
|
const code = el.innerHTML;
|
||||||
|
|
||||||
|
el.parentElement.classList.add("language-thp");
|
||||||
|
pre_parent.removeChild(el);
|
||||||
|
pre_parent.appendChild(new_div);
|
||||||
|
|
||||||
|
CodeJar(new_div, thp_highlighter, {
|
||||||
|
tab: " "
|
||||||
|
}).updateCode(code);
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
</html>
|
</html>
|
Loading…
Reference in New Issue
Block a user