lynglib: added MiniAST support
lyngweb: better syntax highlighting and code editor
This commit is contained in:
1 parent
28b961d339
commit
ea0ecb1db3
24 files changed
+3095
-218
No files matched your search
@@ -57,7 +57,8 @@ fun DocsPage(
|
||||
} else {
|
||||
val text = resp.text().await()
|
||||
title = extractTitleFromMarkdown(text) ?: path.substringAfterLast('/')
|
||||
setHtml(renderMarkdown(text))
|
||||
// Use AST-backed highlighting for code blocks
|
||||
setHtml(renderMarkdownAsync(text))
|
||||
}
|
||||
} catch (t: Throwable) {
|
||||
setError("Failed to load: $path — ${t.message}")
|
||||
|
||||
@@ -314,6 +314,18 @@ fun renderMarkdown(src: String): String =
|
||||
)
|
||||
)
|
||||
|
||||
// Suspend variant that uses the AST-backed highlighter for Lyng code blocks.
|
||||
suspend fun renderMarkdownAsync(src: String): String =
|
||||
net.sergeych.lyngweb.highlightLyngHtmlAsync(
|
||||
net.sergeych.lyngweb.ensureBootstrapCodeBlocks(
|
||||
ensureBootstrapTables(
|
||||
ensureDefinitionLists(
|
||||
marked.parse(src)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
// Pure function to render the Reference list HTML from a list of doc paths.
|
||||
// Returns a Bootstrap-styled <ul> list with links to the docs routes.
|
||||
fun renderReferenceListHtml(docs: List<String>): String {
|
||||
|
||||
@@ -110,6 +110,12 @@
|
||||
.hl-kw { color: #d73a49; font-weight: 600; }
|
||||
.hl-ty { color: #6f42c1; }
|
||||
.hl-id { color: #24292e; }
|
||||
/* Declarations (semantic roles) */
|
||||
.hl-fn { color: #005cc5; font-weight: 600; }
|
||||
.hl-class { color: #5a32a3; font-weight: 600; }
|
||||
.hl-val { color: #1b7f5a; }
|
||||
.hl-var { color: #1b7f5a; text-decoration: underline dotted currentColor; }
|
||||
.hl-param { color: #0969da; font-style: italic; }
|
||||
.hl-num { color: #005cc5; }
|
||||
.hl-str { color: #032f62; }
|
||||
.hl-ch { color: #032f62; }
|
||||
@@ -127,6 +133,11 @@
|
||||
[data-bs-theme="dark"] .hl-punc { color: #8b949e; }
|
||||
[data-bs-theme="dark"] .hl-kw { color: #ff7b72; }
|
||||
[data-bs-theme="dark"] .hl-ty { color: #d2a8ff; }
|
||||
[data-bs-theme="dark"] .hl-fn { color: #79c0ff; font-weight: 700; }
|
||||
[data-bs-theme="dark"] .hl-class{ color: #d2a8ff; font-weight: 700; }
|
||||
[data-bs-theme="dark"] .hl-val { color: #7ee787; }
|
||||
[data-bs-theme="dark"] .hl-var { color: #7ee787; text-decoration: underline dotted currentColor; }
|
||||
[data-bs-theme="dark"] .hl-param{ color: #a5d6ff; font-style: italic; }
|
||||
[data-bs-theme="dark"] .hl-num { color: #79c0ff; }
|
||||
[data-bs-theme="dark"] .hl-str,
|
||||
[data-bs-theme="dark"] .hl-ch { color: #a5d6ff; }
|
||||
|
||||
Reference in new issue
Block a user