Adjust doc to support blockquote alerts.

This commit is contained in:
KtorZ 2024-08-28 15:28:49 +02:00
parent 6bbc6a8f2f
commit 745f14ccb2
No known key found for this signature in database
GPG Key ID: 33173CB6F77F4277
5 changed files with 155 additions and 12 deletions

11
Cargo.lock generated vendored
View File

@ -2276,15 +2276,22 @@ dependencies = [
[[package]]
name = "pulldown-cmark"
version = "0.9.6"
version = "0.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "57206b407293d2bcd3af849ce869d52068623f19e1b5ff8e8778e3309439682b"
checksum = "4d31cbfcd94884c3a67ec210c83efb06cb43674043458b0ad59f6947f8462c23"
dependencies = [
"bitflags 2.6.0",
"memchr",
"pulldown-cmark-escape",
"unicase",
]
[[package]]
name = "pulldown-cmark-escape"
version = "0.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "007d8adb5ddab6f8e3f491ac63566a7d5002cc7ed73901f72057943fa71ae1ae"
[[package]]
name = "quick-error"
version = "1.2.3"

View File

@ -38,7 +38,7 @@ pallas-primitives.workspace = true
pallas-traverse.workspace = true
patricia_tree = "0.8.0"
petgraph = "0.6.3"
pulldown-cmark = { version = "0.9.2", default-features = false }
pulldown-cmark = { version = "0.12.0", default-features = false, features = ["html"] }
rayon = "1.7.0"
regex = "1.7.1"
reqwest = { version = "0.11.14", features = ["blocking", "json"] }

View File

@ -634,6 +634,11 @@ impl DocTypeConstructor {
.doc
.as_deref()
.map(|doc| render_markdown(&format!("{doc}\n{doc_args}")))
.or(if doc_args.is_empty() {
None
} else {
Some(render_markdown(&format!("\n{doc_args}")))
})
.unwrap_or_default(),
raw_documentation: constructor.doc.as_deref().unwrap_or_default().to_string(),
}

View File

@ -120,7 +120,7 @@
<h2>
<a href="{{ breadcrumbs }}/">{{ project_name }}</a>
<span id="project-version">
<span>v{{ project_version }} </span>
<span>{{ project_version }} </span>
</span>
<script>
"use strict";
@ -258,6 +258,30 @@
<polyline points="3.27 6.96 12 12.01 20.73 6.96"></polyline>
<line x1="12" y1="22.08" x2="12" y2="12"></line>
</symbol>
<symbol id="icon-note" viewBox="0 0 16 16" fill="currentColor">
<path d="M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8Zm8-6.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13ZM6.5 7.75A.75.75 0 0 1 7.25 7h1a.75.75 0 0 1 .75.75v2.75h.25a.75.75 0 0 1 0 1.5h-2a.75.75 0 0 1 0-1.5h.25v-2h-.25a.75.75 0 0 1-.75-.75ZM8 6a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z"></path>
</symbol>
<symbol id="icon-tip" viewBox="0 0 16 16" fill="currentColor">
<path d="M8 1.5c-2.363 0-4 1.69-4 3.75 0 .984.424 1.625.984 2.304l.214.253c.223.264.47.556.673.848.284.411.537.896.621 1.49a.75.75 0 0 1-1.484.211c-.04-.282-.163-.547-.37-.847a8.456 8.456 0 0 0-.542-.68c-.084-.1-.173-.205-.268-.32C3.201 7.75 2.5 6.766 2.5 5.25 2.5 2.31 4.863 0 8 0s5.5 2.31 5.5 5.25c0 1.516-.701 2.5-1.328 3.259-.095.115-.184.22-.268.319-.207.245-.383.453-.541.681-.208.3-.33.565-.37.847a.751.751 0 0 1-1.485-.212c.084-.593.337-1.078.621-1.489.203-.292.45-.584.673-.848.075-.088.147-.173.213-.253.561-.679.985-1.32.985-2.304 0-2.06-1.637-3.75-4-3.75ZM5.75 12h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1 0-1.5ZM6 15.25a.75.75 0 0 1 .75-.75h2.5a.75.75 0 0 1 0 1.5h-2.5a.75.75 0 0 1-.75-.75Z"></path>
</symbol>
<symbol id="icon-important" viewBox="0 0 16 16" fill="currentColor">
<path d="M0 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v9.5A1.75 1.75 0 0 1 14.25 13H8.06l-2.573 2.573A1.458 1.458 0 0 1 3 14.543V13H1.75A1.75 1.75 0 0 1 0 11.25Zm1.75-.25a.25.25 0 0 0-.25.25v9.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h6.5a.25.25 0 0 0 .25-.25v-9.5a.25.25 0 0 0-.25-.25Zm7 2.25v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 9a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path>
</symbol>
<symbol id="icon-warning" viewBox="0 0 16 16" fill="currentColor">
<path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path>
</symbol>
<symbol id="icon-caution" viewBox="0 0 16 16" fill="currentColor">
<path d="M4.47.22A.749.749 0 0 1 5 0h6c.199 0 .389.079.53.22l4.25 4.25c.141.14.22.331.22.53v6a.749.749 0 0 1-.22.53l-4.25 4.25A.749.749 0 0 1 11 16H5a.749.749 0 0 1-.53-.22L.22 11.53A.749.749 0 0 1 0 11V5c0-.199.079-.389.22-.53Zm.84 1.28L1.5 5.31v5.38l3.81 3.81h5.38l3.81-3.81V5.31L10.69 1.5ZM8 4a.75.75 0 0 1 .75.75v3.5a.75.75 0 0 1-1.5 0v-3.5A.75.75 0 0 1 8 4Zm0 8a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z"></path>
</symbol>
</defs>
</svg>
@ -280,6 +304,27 @@
a.innerText = span.innerText;
el.prepend(a);
});
function addIcon(icon) {
return (el) => {
const span = document.createElement('span');
span.classList = 'icon-group';
span.innerText = icon;
const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
svg.classList = 'icon';
const link = document.createElementNS('http://www.w3.org/2000/svg', 'use');
link.setAttributeNS('http://www.w3.org/1999/xlink', 'xlink:href', `#icon-${icon}`);
svg.appendChild(link);
span.prepend(svg)
el.prepend(span);
}
}
document.querySelectorAll("blockquote.markdown-alert-note").forEach(addIcon('note'));
document.querySelectorAll("blockquote.markdown-alert-tip").forEach(addIcon('tip'));
document.querySelectorAll("blockquote.markdown-alert-important").forEach(addIcon('important'));
document.querySelectorAll("blockquote.markdown-alert-warning").forEach(addIcon('warning'));
document.querySelectorAll("blockquote.markdown-alert-caution").forEach(addIcon('caution'));
</script>
<script src="https://unpkg.com/@popperjs/core@2"></script>
<script src="https://unpkg.com/tippy.js@6"></script>

View File

@ -29,6 +29,13 @@
--color-table-border: #ea76cb;
--color-code-background: #dce0e8;
/* Blockquote tags */
--color-note: #0984e3;
--color-tip: #00b894;
--color-important: #e84393;
--color-warning: #f9ca24;
--color-caution: #e17055;
/* etc */
--nav-shadow: 0 0 6px 2px rgba(0, 0, 0, 0.1);
--shadow:
@ -329,7 +336,7 @@ p code {
.sidebar h2 {
margin: 0;
color: var(--color-link-accent);
color: var(--color-text);
font-size: 1.75em;
}
@ -521,16 +528,23 @@ a.member-source:hover::before {
.constructor-item-docs {
margin-left: var(--large-gap);
margin-bottom: var(--gap);
padding-left: 1.5rem;
margin-top: -1em;
}
.constructor-item-docs::before {
.constructor-item-docs > p {
padding-left: 1.5rem;
}
.constructor-item-docs > p:first-child {
padding-top: 0.5rem;
}
.constructor-item-docs > p:first-child::before {
content: '↳';
position: relative;
margin-left: -1.5rem;
top: 1.5em;
color: var(--color-background-accent);
width: 1.5rem;
display: inline-block;
}
.constructor-item-docs hr {
@ -1137,10 +1151,12 @@ body.theme-dark {
.sidebar li[data-indent="2"]::before { padding-left: 2rem; }
.sidebar li[data-indent="3"]::before { padding-left: 3rem; }
.sidebar li[data-heading] > a,
.sidebar li[data-heading] > a:visited,
.sidebar li[data-heading] {
font-weight: bold;
font-size: 1em;
color: var(--color-link-accent);
color: var(--color-text);
}
.sidebar li[data-heading="1"] {
@ -1154,11 +1170,81 @@ body.theme-dark {
}
.sidebar li[data-heading="3"] {
margin-top: 0.75rem;
font-size: 1.1em;
}
.sidebar li[data-heading="4"] {
margin-top: 0.5rem;
font-size: 1.1em;
}
.sidebar li[data-heading]:first-child,
.sidebar li[data-heading] + li[data-heading] {
.sidebar li[data-heading]:first-child {
margin-top: 0;
}
/* Blockquote tags */
blockquote.markdown-alert-note {
--color-alert: var(--color-note);
--text-alert: "Note";
}
blockquote.markdown-alert-tip {
--color-alert: var(--color-tip);
--text-alert: "Tip";
}
blockquote.markdown-alert-important {
--color-alert: var(--color-important);
--text-alert: "Important";
}
blockquote.markdown-alert-warning {
--color-alert: var(--color-warning);
--text-alert: "Warning";
}
blockquote.markdown-alert-caution {
--color-alert: var(--color-caution);
--text-alert: "Caution";
}
blockquote.markdown-alert-note,
blockquote.markdown-alert-tip,
blockquote.markdown-alert-important,
blockquote.markdown-alert-warning,
blockquote.markdown-alert-caution {
border-left: 4px solid var(--color-alert);
padding-left: 1rem;
margin: 0;
}
blockquote.markdown-alert-note > span.icon-group > svg.icon,
blockquote.markdown-alert-tip > span.icon-group > svg.icon,
blockquote.markdown-alert-important > span.icon-group > svg.icon,
blockquote.markdown-alert-warning > span.icon-group > svg.icon,
blockquote.markdown-alert-caution > span.icon-group > svg.icon {
width: 1em;
height: 1em;
display: inline-block;
position: relative;
top: 0.15rem;
margin-right: 0.25rem;
}
blockquote.markdown-alert-note > span.icon-group,
blockquote.markdown-alert-tip > span.icon-group,
blockquote.markdown-alert-important > span.icon-group,
blockquote.markdown-alert-warning > span.icon-group,
blockquote.markdown-alert-caution > span.icon-group {
font-weight: bold;
font-variant: small-caps;
color: var(--color-alert);
display: inline-block;
width: 100%;
padding-bottom: 0.5rem;
}