feat: add jump-src.js for #src links
parent
800041825e
commit
96870507c5
|
@ -1,2 +1,3 @@
|
||||||
/build
|
/build
|
||||||
/lake-packages/*
|
/lake-packages/*
|
||||||
|
lakefile.olean
|
||||||
|
|
|
@ -42,6 +42,7 @@ def htmlOutputSetup (config : SiteBaseContext) : IO Unit := do
|
||||||
("declaration-data.js", declarationDataCenterJs),
|
("declaration-data.js", declarationDataCenterJs),
|
||||||
("color-scheme.js", colorSchemeJs),
|
("color-scheme.js", colorSchemeJs),
|
||||||
("nav.js", navJs),
|
("nav.js", navJs),
|
||||||
|
("jump-src.js", jumpSrcJs),
|
||||||
("expand-nav.js", expandNavJs),
|
("expand-nav.js", expandNavJs),
|
||||||
("how-about.js", howAboutJs),
|
("how-about.js", howAboutJs),
|
||||||
("search.html", searchHtml),
|
("search.html", searchHtml),
|
||||||
|
|
|
@ -149,6 +149,7 @@ are used in documentation generation, notably JS and CSS ones.
|
||||||
def styleCss : String := include_str "../../static/style.css"
|
def styleCss : String := include_str "../../static/style.css"
|
||||||
def declarationDataCenterJs : String := include_str "../../static/declaration-data.js"
|
def declarationDataCenterJs : String := include_str "../../static/declaration-data.js"
|
||||||
def colorSchemeJs : String := include_str "../../static/color-scheme.js"
|
def colorSchemeJs : String := include_str "../../static/color-scheme.js"
|
||||||
|
def jumpSrcJs : String := include_str "../../static/jump-src.js"
|
||||||
def navJs : String := include_str "../../static/nav.js"
|
def navJs : String := include_str "../../static/nav.js"
|
||||||
def expandNavJs : String := include_str "../../static/expand-nav.js"
|
def expandNavJs : String := include_str "../../static/expand-nav.js"
|
||||||
def howAboutJs : String := include_str "../../static/how-about.js"
|
def howAboutJs : String := include_str "../../static/how-about.js"
|
||||||
|
|
|
@ -32,6 +32,7 @@ def baseHtmlGenerator (title : String) (site : Array Html) : BaseHtmlM Html := d
|
||||||
|
|
||||||
<script>{s!"const SITE_ROOT={String.quote (← getRoot)};"}</script>
|
<script>{s!"const SITE_ROOT={String.quote (← getRoot)};"}</script>
|
||||||
[moduleConstant]
|
[moduleConstant]
|
||||||
|
<script type="module" src={s!"{← getRoot}jump-src.js"}></script>
|
||||||
<script type="module" src={s!"{← getRoot}search.js"}></script>
|
<script type="module" src={s!"{← getRoot}search.js"}></script>
|
||||||
<script type="module" src={s!"{← getRoot}expand-nav.js"}></script>
|
<script type="module" src={s!"{← getRoot}expand-nav.js"}></script>
|
||||||
<script type="module" src={s!"{← getRoot}how-about.js"}></script>
|
<script type="module" src={s!"{← getRoot}how-about.js"}></script>
|
||||||
|
|
|
@ -87,15 +87,16 @@ def baseDirBlackList : HashSet String :=
|
||||||
"color-scheme.js",
|
"color-scheme.js",
|
||||||
"declaration-data.js",
|
"declaration-data.js",
|
||||||
"declarations",
|
"declarations",
|
||||||
|
"expand-nav.js",
|
||||||
"find",
|
"find",
|
||||||
|
"foundational_types.html",
|
||||||
"how-about.js",
|
"how-about.js",
|
||||||
"index.html",
|
"index.html",
|
||||||
"search.html",
|
"jump-src.js",
|
||||||
"foundational_types.html",
|
|
||||||
"mathjax-config.js",
|
"mathjax-config.js",
|
||||||
"navbar.html",
|
"navbar.html",
|
||||||
"nav.js",
|
"nav.js",
|
||||||
"expand-nav.js",
|
"search.html",
|
||||||
"search.js",
|
"search.js",
|
||||||
"src",
|
"src",
|
||||||
"style.css"
|
"style.css"
|
||||||
|
|
|
@ -72,6 +72,7 @@ library_facet docs (lib) : FilePath := do
|
||||||
basePath / "declaration-data.js",
|
basePath / "declaration-data.js",
|
||||||
basePath / "color-scheme.js",
|
basePath / "color-scheme.js",
|
||||||
basePath / "nav.js",
|
basePath / "nav.js",
|
||||||
|
basePath / "jump-src.js",
|
||||||
basePath / "expand-nav.js",
|
basePath / "expand-nav.js",
|
||||||
basePath / "how-about.js",
|
basePath / "how-about.js",
|
||||||
basePath / "search.js",
|
basePath / "search.js",
|
||||||
|
|
BIN
lakefile.olean
BIN
lakefile.olean
Binary file not shown.
|
@ -140,7 +140,7 @@ export class DeclarationDataCenter {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function isSeparater(char) {
|
function isSeparator(char) {
|
||||||
return char === "." || char === "_";
|
return char === "." || char === "_";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -153,11 +153,11 @@ function matchCaseSensitive(declName, lowerDeclName, pattern) {
|
||||||
lastMatch = 0;
|
lastMatch = 0;
|
||||||
while (i < declName.length && j < pattern.length) {
|
while (i < declName.length && j < pattern.length) {
|
||||||
if (pattern[j] === declName[i] || pattern[j] === lowerDeclName[i]) {
|
if (pattern[j] === declName[i] || pattern[j] === lowerDeclName[i]) {
|
||||||
err += (isSeparater(pattern[j]) ? 0.125 : 1) * (i - lastMatch);
|
err += (isSeparator(pattern[j]) ? 0.125 : 1) * (i - lastMatch);
|
||||||
if (pattern[j] !== declName[i]) err += 0.5;
|
if (pattern[j] !== declName[i]) err += 0.5;
|
||||||
lastMatch = i + 1;
|
lastMatch = i + 1;
|
||||||
j++;
|
j++;
|
||||||
} else if (isSeparater(declName[i])) {
|
} else if (isSeparator(declName[i])) {
|
||||||
err += 0.125 * (i + 1 - lastMatch);
|
err += 0.125 * (i + 1 - lastMatch);
|
||||||
lastMatch = i + 1;
|
lastMatch = i + 1;
|
||||||
}
|
}
|
||||||
|
|
|
@ -80,6 +80,9 @@ async function findAndRedirect(pattern, strict, view) {
|
||||||
window.location.replace(result.link);
|
window.location.replace(result.link);
|
||||||
} else if (view == "doc") {
|
} else if (view == "doc") {
|
||||||
window.location.replace(result.docLink);
|
window.location.replace(result.docLink);
|
||||||
|
} else if (view == "src") {
|
||||||
|
const [module, decl] = result.docLink.split("#", 2);
|
||||||
|
window.location.replace(`${module}?jump=src#${decl}`);
|
||||||
} else {
|
} else {
|
||||||
// fallback to doc page
|
// fallback to doc page
|
||||||
window.location.replace(result.docLink);
|
window.location.replace(result.docLink);
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
document.addEventListener("DOMContentLoaded", () => {
|
||||||
|
const hash = document.location.hash.substring(1);
|
||||||
|
const tgt = new URLSearchParams(document.location.search).get("jump");
|
||||||
|
if (tgt === "src" && hash) {
|
||||||
|
const target = document.getElementById(hash)
|
||||||
|
?.querySelector(".gh_link a")
|
||||||
|
?.getAttribute("href");
|
||||||
|
if (target) window.location.replace(target);
|
||||||
|
}
|
||||||
|
})
|
Loading…
Reference in New Issue