filefdoc_assets.f90
Contents
fdoc_assetsprivate
The style sheet and script of the site. Generated from assets/ by tools/gen_assets.py.
Source
module fdoc_assets
!! The style sheet and script of the site. Generated from `assets/` by `tools/gen_assets.py`.
use fdoc_buffer, only: buffer_t, add
implicit none
private
public :: asset_fdoc_css, asset_fdoc_js
character, parameter :: NL = achar(10)
contains
!> The contents of `assets/fdoc.css`.
subroutine asset_fdoc_css(b)
type(buffer_t), intent(inout) :: b !! where they go
call add(b, &
':root {'//NL//' --bg: #ffffff; --bg-soft: #f6f7f9; --bg-code: #f6f7f9; --line: #e3e6eb; --text: #1f2430; --m' &
//'uted: #646d7e;'//NL//' --accent: #3657c9; --accent-soft: #e9eefb; --ok: #1d7a55; --warn: #a15c00; --bad: #b3' &
//'261e; --hist: #6a4fb3;'//NL//' --attr-l: 34%;'//NL//' --k: #7b30b5; --s: #1b7f3b; --c: #7a8290; --d: #2f7a8' &
//'c; --n: #b4530a; --p: #a15c00;'//NL//' --mono: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;'//NL &
//' --sans: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;'//NL//'}'//NL//':' &
//'root[data-theme="dark"] {'//NL//' --bg: #14171d; --bg-soft: #1b1f27; --bg-code: #1b1f27; --line: #2c323d; --' &
//'text: #e4e7ec; --muted: #9aa3b2;'//NL//' --accent: #8ba7ff; --accent-soft: #232c45; --ok: #5fcf9f; --warn: #' &
//'e3ab5c; --bad: #f28b82; --hist: #b9a4f2;'//NL//' --attr-l: 72%;'//NL//' --k: #c792ea; --s: #8fd18f; --c: #7' &
//'f8796; --d: #7fc4d4; --n: #f0a868; --p: #e3ab5c;'//NL//'}'//NL//'@media (prefers-color-scheme: dark) {'//NL//' ' &
//' :root:not([data-theme="light"]) {'//NL//' --bg: #14171d; --bg-soft: #1b1f27; --bg-code: #1b1f27; --line: ' &
//'#2c323d; --text: #e4e7ec; --muted: #9aa3b2;'//NL//' --accent: #8ba7ff; --accent-soft: #232c45; --ok: #5fcf' &
//'9f; --warn: #e3ab5c; --bad: #f28b82; --hist: #b9a4f2;'//NL//' --attr-l: 72%;'//NL//' --k: #c792ea; --s:' &
//' #8fd18f; --c: #7f8796; --d: #7fc4d4; --n: #f0a868; --p: #e3ab5c;'//NL//' }'//NL//'}'//NL//'* { box-sizing: ' &
//'border-box; }'//NL//'html { scroll-padding-top: 4.5rem; }'//NL//'body { margin: 0; background: var(--bg); col' &
//'or: var(--text); font: 16px/1.6 var(--sans); }'//NL//'a { color: var(--accent); text-decoration: none; }'//NL &
//'a:hover { text-decoration: underline; }'//NL//'header.top {'//NL//' position: sticky; top: 0; z-index: 10; d' &
//'isplay: flex; align-items: center; gap: 1.25rem; height: 3.5rem;'//NL//' padding: 0 1.25rem; background: var' &
//'(--bg); border-bottom: 1px solid var(--line);'//NL//'}'//NL//'header.top .brand { font-weight: 650; color: va' &
//'r(--text); white-space: nowrap; }'//NL//'header.top .brand small { color: var(--muted); font-weight: 400; mar' &
//'gin-left: .35rem; }'//NL//'header.top nav { display: flex; gap: 1rem; overflow-x: auto; flex: 1; }'//NL//'hea' &
//'der.top nav a { color: var(--muted); white-space: nowrap; font-size: .92rem; }'//NL//'header.top nav a:hover,' &
//' header.top nav a.here { color: var(--text); text-decoration: none; }'//NL//'.theme { background: none; borde' &
//'r: 1px solid var(--line); border-radius: 6px; color: var(--muted); cursor: pointer;'//NL//' width: 2rem; hei' &
//'ght: 2rem; font-size: 1rem; line-height: 1; }'//NL//'.layout { display: grid; grid-template-columns: 17rem mi' &
//'nmax(0, 1fr); max-width: 90rem; margin: 0 auto; }'//NL//'aside.side { position: sticky; top: 3.5rem; align-se' &
//'lf: start; height: calc(100vh - 3.5rem); overflow-y: auto;'//NL//' padding: 1.25rem 1rem 2rem 1.25rem; borde' &
//'r-right: 1px solid var(--line); font-size: .9rem; }'//NL//'aside.side h4 { margin: 1.1rem 0 .3rem; color: var' &
//'(--muted); font-size: .72rem; letter-spacing: .06em;'//NL//' text-transform: uppercase; font-weight: 650; }'//NL &
//'aside.side h4:first-child { margin-top: 0; }'//NL//'aside.side ul { list-style: none; margin: 0; padding: 0; ' &
//'}'//NL//'aside.side li a { display: block; padding: .12rem .5rem; margin-left: -.5rem; border-radius: 5px; co' &
//'lor: var(--text);'//NL//' overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }'//NL//'aside.sid' &
//'e li a:hover { background: var(--bg-soft); text-decoration: none; }'//NL//'aside.side li a.more { color: var(' &
//'--muted); }'//NL//'aside.side li a.current { background: var(--bg-soft); color: var(--accent); font-weight: 6' &
//'00; }'//NL//'main { padding: 2rem 2.5rem 4rem; min-width: 0; }'//NL//'main > .inner { max-width: 54rem; }'//NL &
//'h1, h2, h3, h4 { line-height: 1.25; font-weight: 650; }'//NL//'h1 { font-size: 1.9rem; margin: 0 0 .4rem; }'//NL &
//'h2 { font-size: 1.3rem; margin: 2.4rem 0 .8rem; padding-bottom: .3rem; border-bottom: 1px solid var(--line); ' &
//'}'//NL//'.doc h1 { font-size: 1.5rem; margin-top: 1.6rem; }'//NL//'.doc h2 { font-size: 1.25rem; }'//NL//'.do' &
//'c h3 { font-size: 1.05rem; margin-top: 1.4rem; }'//NL//'.crumbs { color: var(--muted); font-size: .88rem; mar' &
//'gin-bottom: .3rem; }'//NL//'.crumbs .sep { margin: 0 .15rem; }'//NL//'.kind { color: var(--muted); font-weigh' &
//'t: 400; font-size: .62em; margin-right: .35rem; }'//NL//'.meta { display: flex; flex-wrap: wrap; gap: .3rem 1' &
//'rem; color: var(--muted); font-size: .88rem; margin: .4rem 0 1.1rem; }'//NL//'.lead { font-size: 1.05rem; col' &
//'or: var(--muted); margin: .1rem 0 .4rem; }'//NL//'.lead p { margin: 0; }'//NL//'code, pre, .sig { font-family' &
//': var(--mono); font-size: .875em; }'//NL//':not(pre) > code { background: var(--bg-code); padding: .1em .3em;' &
//' border-radius: 4px; }'//NL//'pre, .sig { background: var(--bg-code); border: 1px solid var(--line); border-r' &
//'adius: 8px; padding: .7rem .9rem;'//NL//' overflow-x: auto; line-height: 1.5; }'//NL//'.codehilite { positio' &
//'n: relative; margin: 1rem 0; }'//NL//'.codehilite pre { margin: 0; }'//NL//'.copy { position: absolute; top: ' &
//'.4rem; right: .4rem; opacity: 0; background: var(--bg); color: var(--muted);'//NL//' border: 1px solid var(-' &
//'-line); border-radius: 5px; font-size: .72rem; padding: .1rem .4rem; cursor: pointer; }'//NL//'.codehilite:ho' &
//'ver .copy { opacity: 1; }'//NL//'.sig { margin: .4rem 0 .7rem; white-space: pre-wrap; overflow-wrap: anywhere' &
//'; }'//NL//'.k { color: var(--k); } .s { color: var(--s); } .c { color: var(--c); font-style: italic; }'//NL//'.' &
//'d { color: var(--d); } .n { color: var(--n); } .p { color: var(--p); }'//NL//'.item { padding: .9rem 0 1rem; ' &
//'border-top: 1px solid var(--line); }'//NL//'h2 + .item { border-top: 0; padding-top: 0; }'//NL//'.item > h3 {' &
//' margin: 0 0 .2rem; font-size: 1rem; font-family: var(--mono); overflow-wrap: anywhere; }'//NL//'.badge { dis' &
//'play: inline-block; font: 600 .68rem/1.5 var(--sans); padding: 0 .4rem; margin-left: .4rem; border-radius: 4p' &
//'x;'//NL//' background: var(--bg-soft); color: var(--muted); border: 1px solid var(--line); vertical-align: m' &
//'iddle; }'//NL//'table { border-collapse: collapse; width: 100%; font-size: .92rem; margin: .7rem 0 1rem; }'//NL &
//'th { text-align: left; font-weight: 600; color: var(--muted); }'//NL//'/* headings stay under the bar at the ' &
//'top; a sticky cell loses a collapsed border, so a shadow draws it */'//NL//'thead th { position: sticky; top:' &
//' 3.5rem; z-index: 1; background: var(--bg); box-shadow: inset 0 -1px 0 var(--line); }'//NL//'tr[id] { scroll-' &
//'margin-top: 2.5rem; }'//NL//'.listing td:last-child, .arguments td { overflow-wrap: anywhere; }'//NL//'th, td' &
//' { padding: .35rem .7rem .35rem 0; border-bottom: 1px solid var(--line); vertical-align: top; }'//NL//'td p {' &
//' margin: 0; } td.type { font-family: var(--mono); font-size: .84em; width: 30%; overflow-wrap: break-word; }'//NL &
//'td.name { font-family: var(--mono); font-size: .88em; width: 24%; overflow-wrap: break-word; }'//NL//'.doc ta' &
//'ble { display: block; overflow-x: auto; }'//NL//'.alert { border-left: 3px solid var(--accent); background: v' &
//'ar(--bg-soft); border-radius: 0 6px 6px 0;'//NL//' padding: .55rem .9rem; margin: 1rem 0; }'//NL//'.alert p ' &
//'{ margin: .3rem 0; } .alert-title { font-weight: 650; font-size: .9rem; }'//NL//'.alert-warning { border-colo' &
//'r: var(--warn); } .alert-success { border-color: var(--ok); }'//NL//'.alert-danger { border-color: var(--bad)' &
//'; } .alert-history { border-color: var(--hist); }'//NL//'blockquote { margin: 1rem 0; padding: 0 1rem; color:' &
//' var(--muted); border-left: 3px solid var(--line); }'//NL//'img { max-width: 100%; }'//NL//'details.specifics' &
//' { margin: .5rem 0 1rem; } details.specifics summary { cursor: pointer; color: var(--muted); font-size: .9rem' &
//'; }'//NL//'details.specifics .item:first-of-type { border-top: 0; }'//NL//'.form { margin: 1rem 0 1.6rem; } .' &
//'form .sig { margin-bottom: .4rem; }'//NL//'table.forms { width: auto; margin: .4rem 0 .5rem; } table.forms td' &
//'.type, table.forms td.name { width: auto; min-width: 5.5rem; overflow-wrap: anywhere; }'//NL//'table.forms td' &
//'.rank, table.forms th.rank { text-align: center; padding-right: 1rem; white-space: nowrap; }'//NL//'table.for' &
//'ms td.rank a { text-decoration: none; }'//NL//'.fixed { color: var(--muted); font-size: .88rem; margin: .2rem' &
//' 0 0; }'//NL//'details.source { margin: 1rem 0; } details.source summary { cursor: pointer; color: var(--mute' &
//'d); font-size: .9rem; }'//NL//'.chips { display: flex; flex-wrap: wrap; gap: .35rem; padding: 0; list-style: ' &
//'none; margin: .5rem 0 1rem; }'//NL//'.chips li { font-family: var(--mono); font-size: .82rem; background: var' &
//'(--bg-soft); border: 1px solid var(--line);'//NL//' border-radius: 5px; padding: 0 .45rem; }'//NL//'.listing' &
//' td:first-child { font-family: var(--mono); font-size: .9em; white-space: nowrap; }'//NL//'.listing td p { ma' &
//'rgin: 0; }'//NL//'.listing .num { text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums;' &
//' padding-left: 0; padding-right: .55rem; }'//NL//'.listing tfoot td { font-weight: 600; border-bottom: 0; bor' &
//'der-top: 2px solid var(--line); }'//NL//'.layout:has(table.sortable), .inner:has(table.sortable) { max-width:' &
//' none; }'//NL//'.sortable th { cursor: pointer; user-select: none; }'//NL//'@media (max-width: 1099px) { .sor' &
//'table { display: block; overflow-x: auto; } }'//NL//'.sortable th[aria-sort="ascending"]::after { content: " ' &
//'\25B2"; font-size: .7em; }'//NL//'.sortable th[aria-sort="descending"]::after { content: " \25BC"; font-size:' &
//' .7em; }'//NL//'.hero { background: var(--bg-soft); border: 1px solid var(--line); border-radius: 10px; paddi' &
//'ng: .9rem 1.2rem 1rem;'//NL//' margin-bottom: 1.4rem; }'//NL//'.hero { position: relative; }'//NL//'.hero h1' &
//' { margin-right: 10rem; }'//NL//'.hero .meta { margin-bottom: .4rem; align-items: center; }'//NL//'.hero.with' &
//'-logo { padding-left: 7rem; min-height: 6.2rem; }'//NL//'.hero-logo { position: absolute; left: 1.2rem; top: ' &
//'.9rem; width: 4.8rem; height: 4.8rem; object-fit: contain; }'//NL//'.project-links { position: absolute; top:' &
//' 1.1rem; right: 1.2rem; display: flex; gap: .55rem; }'//NL//'.author-links { display: inline-flex; gap: .45re' &
//'m; align-items: center; }'//NL//'.author-links:empty, .project-links:empty { display: none; }'//NL//'.icon-li' &
//'nk { display: inline-block; width: 1.1rem; height: 1.1rem; background: var(--muted);'//NL//' -webkit-mask: v' &
//'ar(--i) center / contain no-repeat; mask: var(--i) center / contain no-repeat; }'//NL//'.project-links .icon-' &
//'link { width: 1.35rem; height: 1.35rem; }'//NL//'.icon-link:hover { background: var(--accent); }'//NL//'.grid' &
//' { display: flex; flex-wrap: wrap; gap: .4rem; margin: .5rem 0 0; }'//NL//'.card { background: var(--bg); }'//NL &
//'.card { border: 1px solid var(--line); border-radius: 999px; padding: .05rem .65rem; color: var(--text); font' &
//'-size: .84rem; white-space: nowrap; }'//NL//'.card:hover { border-color: var(--accent); text-decoration: none' &
//'; }'//NL//'.card b { margin-right: .3rem; font-weight: 650; } .card span { color: var(--muted); }'//NL//'pre.')
call add(b, &
'source { padding-left: 0; counter-reset: line; line-height: 1.45; }'//NL//'.ln { display: inline-block; width' &
//': 3.6em; margin-right: 1em; text-align: right; color: var(--muted); opacity: .6; user-select: none; }'//NL//'.' &
//'ln::before { counter-increment: line; content: counter(line); }'//NL//'.ln:target { color: var(--accent); opa' &
//'city: 1; font-weight: 700; }'//NL//'footer { margin-top: 3rem; padding-top: 1rem; border-top: 1px solid var(-' &
//'-line); color: var(--muted); font-size: .84rem; }'//NL//'@media (max-width: 860px) {'//NL//' .layout { grid-' &
//'template-columns: minmax(0, 1fr); }'//NL//' aside.side { position: static; height: auto; border-right: 0; bo' &
//'rder-bottom: 1px solid var(--line); max-height: 40vh; }'//NL//' main { padding: 1.25rem 1rem 3rem; }'//NL//'}' &
//NL//'@media print { header.top, aside.side, .theme, .copy { display: none; } .layout { display: block; } }'//NL &
//'.search { position: relative; flex: 0 1 15rem; }'//NL//'.search input { width: 100%; height: 2rem; padding: 0' &
//' .6rem; color: var(--text); background: var(--bg-soft);'//NL//' border: 1px solid var(--line); border-radius' &
//': 6px; font: inherit; font-size: .88rem; }'//NL//'.search input:focus { outline: 2px solid var(--accent); out' &
//'line-offset: -1px; }'//NL//'.search .results { display: none; position: absolute; top: 2.4rem; right: 0; widt' &
//'h: min(30rem, 90vw); max-height: 70vh;'//NL//' overflow-y: auto; background: var(--bg); border: 1px solid va' &
//'r(--line); border-radius: 8px;'//NL//' box-shadow: 0 8px 24px rgba(0, 0, 0, .18); }'//NL//'.results a, .sear' &
//'ch-page a { display: block; padding: .45rem .7rem; color: var(--text); border-bottom: 1px solid var(--line); ' &
//'}'//NL//'.results a:hover, .results a.on, .search-page a:hover { background: var(--accent-soft); text-decorat' &
//'ion: none; }'//NL//'.results b, .search-page b { font-family: var(--mono); font-size: .88rem; font-weight: 60' &
//'0; }'//NL//'.results small, .search-page small { display: block; color: var(--muted); }'//NL//'aside.tree ul ' &
//'ul { margin-left: .8rem; }'//NL//'.graph { position: relative; overflow: auto; max-height: 34rem; margin: .4r' &
//'em 0 1rem; padding: .5rem;'//NL//' border: 1px solid var(--line); border-radius: 8px; background: var(--bg-s' &
//'oft); cursor: grab; }'//NL//'.graph.dragging { cursor: grabbing; user-select: none; }'//NL//'.graph svg { dis' &
//'play: block; max-width: 100%; height: auto; margin: 0 auto; }'//NL//'.graph.zoomed svg { max-width: none; }'//NL &
//'.graph .zoom { position: sticky; top: 0; left: 0; float: right; z-index: 2; }'//NL//'.graph .zoom button { ba' &
//'ckground: var(--bg); color: var(--muted); border: 1px solid var(--line); border-radius: 5px;'//NL//' width: ' &
//'1.6rem; height: 1.6rem; cursor: pointer; margin-left: .2rem; }'//NL//'.arguments td.name, .arguments td.type ' &
//'{ width: auto; }'//NL//'td.attributes { font-family: var(--mono); font-size: .84em; }'//NL//'td.default { fon' &
//'t-family: var(--mono); font-size: .84em; min-width: 11rem; max-width: 15rem; overflow-wrap: anywhere; }'//NL//'@' &
//'media (min-width: 1100px) {'//NL//' .arguments td.name { white-space: nowrap; }'//NL//' .arguments td:last-' &
//'child { min-width: 12rem; }'//NL//' .inner:has(.arguments) { max-width: 72rem; }'//NL//' .inner:has(.argume' &
//'nts) > .doc, .inner:has(.arguments) > .sig { max-width: 54rem; }'//NL//'}'//NL//'.attr { --h: 220; --s: 12%; ' &
//'display: inline-block; margin: 0 .25rem .15rem 0; padding: 0 .4rem; border-radius: 4px;'//NL//' font: 600 .7' &
//'4rem/1.55 var(--mono); color: hsl(var(--h), var(--s), var(--attr-l));'//NL//' background: hsla(var(--h), var' &
//'(--s), var(--attr-l), .12); border: 1px solid hsla(var(--h), var(--s), var(--attr-l), .35); }'//NL//'.attr-in' &
//', .attr-out, .attr-inout, .attr-optional, .attr-pointer, .attr-allocatable, .attr-value, .attr-target,'//NL//'.' &
//'attr-dimension, .attr-contiguous, .attr-volatile, .attr-asynchronous, .attr-save, .attr-parameter,'//NL//'.at' &
//'tr-protected, .attr-codimension, .attr-private, .attr-generic, .attr-deferred, .attr-nopass, .attr-pass,'//NL &
//'.attr-non, .attr-deprecated, .attr-subroutine, .attr-function, .attr-interface { --s: 62%; }'//NL//'.attr-in ' &
//'{ --h: 210; } .attr-out { --h: 25; } .attr-inout { --h: 275; }'//NL//'.attr-optional { --h: 180; } .attr-poin' &
//'ter { --h: 0; } .attr-allocatable { --h: 125; } .attr-value { --h: 45; }'//NL//'.attr-target { --h: 325; } .a' &
//'ttr-dimension { --h: 85; } .attr-contiguous { --h: 150; } .attr-volatile { --h: 345; }'//NL//'.attr-asynchron' &
//'ous { --h: 300; } .attr-save { --h: 60; } .attr-parameter { --h: 195; } .attr-protected { --h: 240; }'//NL//'.' &
//'attr-codimension { --h: 105; }'//NL//'.graph text { stroke: none; }'//NL//'.attr-private { --h: 15; --s: 40%;' &
//' }'//NL//'.attr-generic { --h: 265; } .attr-deferred { --h: 35; } .attr-nopass { --h: 200; } .attr-pass { --h' &
//': 160; }'//NL//'.attr-non { --h: 55; } .attr-deprecated { --h: 355; } .attr-subroutine { --h: 155; } .attr-fu' &
//'nction { --h: 188; }'//NL//'.attr-interface { --h: 258; }'//NL//'.attr-pure, .attr-impure, .attr-elemental, .' &
//'attr-recursive, .attr-bind, .attr-saved, .attr-common { --s: 62%; }'//NL//'.attr-pure { --h: 140; } .attr-imp' &
//'ure { --h: 20; } .attr-elemental { --h: 170; } .attr-recursive { --h: 290; }'//NL//'.attr-bind { --h: 230; } ' &
//'.attr-saved { --h: 40; } .attr-common { --h: 5; }'//NL//'.intent { color: hsl(var(--h), var(--s), var(--attr-' &
//'l)); }'//NL//'td.binds { font-family: var(--mono); font-size: .84em; overflow-wrap: break-word; max-width: 20' &
//'rem; }'//NL//'.listing th { white-space: nowrap; }'//NL//'.listing td.link { font-family: var(--mono); font-s' &
//'ize: .84em; overflow-wrap: break-word; }'//NL//'.item h3 .attr, h1 .attr { margin-left: .5rem; vertical-align' &
//': middle; }'//NL//'.ico { display: inline-block; width: 1.05rem; height: 1.05rem; margin-right: .4rem; border' &
//'-radius: 3px; color: #fff;'//NL//' background: #646d7e; font: 700 .68rem/1.05rem var(--sans); text-align: ce' &
//'nter; vertical-align: .05rem; }'//NL//'.ico-m { background: #3657c9; } .ico-p { background: #a61e69; } .ico-s' &
//' { background: #1d7a55; }'//NL//'.ico-f { background: #0b7285; } .ico-i { background: #6a4fb3; } .ico-a { bac' &
//'kground: #8a4fb3; }'//NL//'.ico-t { background: #a15c00; } .ico-b { background: #7a6a2d; } .ico-v { backgroun' &
//'d: #646d7e; }'//NL//'.ico-n { background: #5c6f2d; } .ico-d { background: #8a5a44; } .ico-_ { background: #5c' &
//'6f2d; }'//NL//'.icon-github { --i: url("data:image/svg+xml,<svg xmlns=''http://www.w3.org/2000/svg'' viewBox=' &
//'''0 0 16 16''><path fill-rule=''evenodd'' d=''M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.5' &
//'5-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.0' &
//'1 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2' &
//'.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2' &
//'-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1' &
//'.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z''/></svg>"); }'//NL//'.icon-gitlab { --' &
//'i: url("data:image/svg+xml,<svg xmlns=''http://www.w3.org/2000/svg'' viewBox=''0 0 16 16''><path fill-rule=''' &
//'evenodd'' d=''M8 15 .9 9.8a.7.7 0 0 1-.3-.8L2.3 2c.1-.4.6-.4.7 0l1.9 4.4h6.2L13 2c.1-.4.6-.4.7 0L15.4 9a.7.7 ' &
//'0 0 1-.3.8z''/></svg>"); }'//NL//'.icon-bitbucket { --i: url("data:image/svg+xml,<svg xmlns=''http://www.w3.o' &
//'rg/2000/svg'' viewBox=''0 0 16 16''><path fill-rule=''evenodd'' d=''M1.2 1.5a.5.5 0 0 0-.5.6l2 12.2a.7.7 0 0 ' &
//'0 .7.6h9.4a.5.5 0 0 0 .5-.4l2-12.4a.5.5 0 0 0-.5-.6zm8.7 9H6.2l-.9-4.7h5.4z''/></svg>"); }'//NL//'.icon-sourc' &
//'eforge { --i: url("data:image/svg+xml,<svg xmlns=''http://www.w3.org/2000/svg'' viewBox=''0 0 16 16''><path f' &
//'ill-rule=''evenodd'' d=''M8 .6.6 8 8 15.4 15.4 8zm0 2.9L12.5 8 8 12.5 3.5 8z''/><path d=''M8.7 4.6c.1 1.5 1.5' &
//' 2 1.5 3.6 0 1.2-1 2.2-2.2 2.2S5.8 9.5 5.8 8.4c0-.8.5-1.2.7-1.9.4.4.6.7.7 1.1.5-.8 1-1.8 1.5-3z''/></svg>"); ' &
//'}'//NL//'.icon-website { --i: url("data:image/svg+xml,<svg xmlns=''http://www.w3.org/2000/svg'' viewBox=''0 0' &
//' 16 16''><g fill=''none'' stroke=''black'' stroke-width=''1.4''><circle cx=''8'' cy=''8'' r=''6.8''/><ellipse' &
//' cx=''8'' cy=''8'' rx=''3'' ry=''6.8''/><path d=''M1.2 8h13.6M2.2 4.6h11.6M2.2 11.4h11.6''/></g></svg>"); }'//NL &
//'.icon-download { --i: url("data:image/svg+xml,<svg xmlns=''http://www.w3.org/2000/svg'' viewBox=''0 0 16 16''' &
//'><path fill-rule=''evenodd'' d=''M7.1 1h1.8v7l2.5-2.5 1.3 1.3L8 11.5 3.3 6.8l1.3-1.3L7.1 8zM2 13.2h12V15H2z''' &
//'/></svg>"); }'//NL//'.icon-email { --i: url("data:image/svg+xml,<svg xmlns=''http://www.w3.org/2000/svg'' vie' &
//'wBox=''0 0 16 16''><g fill=''none'' stroke=''black'' stroke-width=''1.4''><rect x=''1'' y=''3'' width=''14'' ' &
//'height=''10'' rx=''1.4''/><path d=''m1.5 4 6.5 5 6.5-5''/></g></svg>"); }'//NL//'.icon-linkedin { --i: url("d' &
//'ata:image/svg+xml,<svg xmlns=''http://www.w3.org/2000/svg'' viewBox=''0 0 16 16''><path fill-rule=''evenodd''' &
//' d=''M2.2 1h11.6c.7 0 1.2.5 1.2 1.2v11.6c0 .7-.5 1.2-1.2 1.2H2.2c-.7 0-1.2-.5-1.2-1.2V2.2C1 1.5 1.5 1 2.2 1zM' &
//'3.9 6.5v6.1h2V6.5zm1-3.1a1.1 1.1 0 1 0 0 2.3 1.1 1.1 0 0 0 0-2.3zm2.3 3.1v6.1h2V9.3c0-1 .5-1.5 1.2-1.5s1 .5 1' &
//' 1.5v3.3h2V8.9c0-1.7-1-2.6-2.4-2.6-.9 0-1.5.4-1.8 1V6.5z''/></svg>"); }'//NL//'.icon-twitter { --i: url("data' &
//':image/svg+xml,<svg xmlns=''http://www.w3.org/2000/svg'' viewBox=''0 0 16 16''><path fill-rule=''evenodd'' d=' &
//'''M12.1 1.5h2.3L9.3 7.3l6 7.2h-4.7L6.9 10l-4.2 4.5H.4L5.8 8.3.1 1.5h4.8l3.3 4.1z''/></svg>"); }'//NL//'.icon-' &
//'facebook { --i: url("data:image/svg+xml,<svg xmlns=''http://www.w3.org/2000/svg'' viewBox=''0 0 16 16''><path' &
//' fill-rule=''evenodd'' d=''M8 .6a7.4 7.4 0 0 0-1.2 14.7V10.1H5V8h1.8V6.4c0-1.8 1.1-2.8 2.7-2.8.8 0 1.6.1 1.6.' &
//'1v1.8h-.9c-.9 0-1.2.6-1.2 1.1V8h2l-.3 2.1H9v5.2A7.4 7.4 0 0 0 8 .6z''/></svg>"); }'//NL//'@media (max-width: ' &
//'860px) { .project-links { position: static; margin: .3rem 0; } .hero h1 { margin-right: 0; }'//NL//' .hero.w' &
//'ith-logo { padding-left: 4.6rem; } .hero-logo { left: .9rem; width: 2.8rem; height: 2.8rem; } }'//NL)
end subroutine asset_fdoc_css
!> The contents of `assets/fdoc.js`.
subroutine asset_fdoc_js(b)
type(buffer_t), intent(inout) :: b !! where they go
call add(b, &
'(function () {'//NL//' var root = document.documentElement;'//NL//' var saved = null;'//NL//' try { saved ' &
//'= localStorage.getItem("fdoc-theme"); } catch (e) {}'//NL//' if (saved) root.setAttribute("data-theme", save' &
//'d);'//NL//' document.addEventListener("DOMContentLoaded", function () {'//NL//' var button = document.que' &
//'rySelector(".theme");'//NL//' if (button) button.addEventListener("click", function () {'//NL//' var ' &
//'dark = root.getAttribute("data-theme") ? root.getAttribute("data-theme") === "dark"'//NL//' : window.m' &
//'atchMedia("(prefers-color-scheme: dark)").matches;'//NL//' var next = dark ? "light" : "dark";'//NL//' ' &
//' root.setAttribute("data-theme", next);'//NL//' try { localStorage.setItem("fdoc-theme", next); } cat' &
//'ch (e) {}'//NL//' });'//NL//' document.querySelectorAll(".codehilite").forEach(function (block) {'//NL//' ' &
//' if (!navigator.clipboard) return;'//NL//' var copy = document.createElement("button");'//NL//' ' &
//' copy.className = "copy";'//NL//' copy.textContent = "Copy";'//NL//' copy.addEventListener("click",' &
//' function () {'//NL//' navigator.clipboard.writeText(block.querySelector("pre").innerText).then(functi' &
//'on () {'//NL//' copy.textContent = "Copied";'//NL//' setTimeout(function () { copy.textCont' &
//'ent = "Copy"; }, 1200);'//NL//' });'//NL//' });'//NL//' block.appendChild(copy);'//NL//' ' &
//'});'//NL//' });'//NL//'})();'//NL//'(function () {'//NL//' var script = document.currentScript;'//NL//' va' &
//'r root = script ? script.src.replace(/js\/fdoc\.js.*$/, "") : "";'//NL//' var loaded = false, entries = null' &
//', waiting = [];'//NL//NL//' function load(then) {'//NL//' if (entries) { then(); return; }'//NL//' wai' &
//'ting.push(then);'//NL//' if (loaded) return;'//NL//' loaded = true;'//NL//' var tag = document.creat' &
//'eElement("script");'//NL//' tag.src = root + "search/index.js";'//NL//' tag.onload = function () {'//NL &
//' entries = window.FDOC_INDEX || [];'//NL//' entries.forEach(function (e) { e.low = e.t.toLowerCase(' &
//'); e.text = (e.s || "").toLowerCase(); });'//NL//' waiting.forEach(function (f) { f(); });'//NL//' };' &
//NL//' document.head.appendChild(tag);'//NL//' }'//NL//NL//' function score(entry, words) {'//NL//' var' &
//' total = 0;'//NL//' for (var i = 0; i < words.length; i++) {'//NL//' var w = words[i], at = entry.low' &
//'.indexOf(w);'//NL//' if (entry.low === w) total += 100;'//NL//' else if (at === 0) total += 50;'//NL &
//' else if (at > 0) total += 25;'//NL//' else if (entry.text.indexOf(w) >= 0) total += 5;'//NL//' ' &
//' else return 0;'//NL//' }'//NL//' return total - entry.low.length / 100;'//NL//' }'//NL//NL//' // ed' &
//'it distance with transpositions, giving up once it exceeds `most`'//NL//' function distance(a, b, most) {'//NL &
//' if (Math.abs(a.length - b.length) > most) return most + 1;'//NL//' var before = null, last = [], row =' &
//' [], i, j;'//NL//' for (j = 0; j <= b.length; j++) last[j] = j;'//NL//' for (i = 1; i <= a.length; i++)' &
//' {'//NL//' row = [i];'//NL//' var best = i;'//NL//' for (j = 1; j <= b.length; j++) {'//NL//' ' &
//' var cost = a[i - 1] === b[j - 1] ? 0 : 1;'//NL//' row[j] = Math.min(last[j] + 1, row[j - 1] + 1' &
//', last[j - 1] + cost);'//NL//' if (before && i > 1 && j > 1 && a[i - 1] === b[j - 2] && a[i - 2] === b' &
//'[j - 1]) {'//NL//' row[j] = Math.min(row[j], before[j - 2] + 1);'//NL//' }'//NL//' bes' &
//'t = Math.min(best, row[j]);'//NL//' }'//NL//' if (best > most) return most + 1;'//NL//' before' &
//' = last;'//NL//' last = row;'//NL//' }'//NL//' return last[b.length];'//NL//' }'//NL//NL//' func' &
//'tion parts(text) { return text.split(/[^a-z0-9]+/).filter(Boolean); }'//NL//NL//' // a typo: the word is clo' &
//'se to some run of parts of the name, or to how such a run starts'//NL//' function typo(tokens, word) {'//NL//' ' &
//' if (word.length < 3) return 0;'//NL//' var size = parts(word).length, plain = parts(word).join("_"), mo' &
//'st = word.length < 8 ? 1 : 2;'//NL//' var result = 0;'//NL//' for (var i = 0; i + size <= tokens.length' &
//'; i++) {'//NL//' var run = tokens.slice(i, i + size).join("_");'//NL//' var d = distance(plain, run' &
//', most);'//NL//' if (d > most) d = distance(plain, run.slice(0, plain.length), most);'//NL//' if (d' &
//' <= most) result = Math.max(result, 3 - d);'//NL//' }'//NL//' return result;'//NL//' }'//NL//NL//' //' &
//' the word is in the initials of the parts of the name, as `jvcs` for json_value_create_string'//NL//' functi' &
//'on initials(tokens, word) {'//NL//' if (word.length < 2) return 0;'//NL//' return subsequence(tokens.ma' &
//'p(function (t) { return t[0]; }).join(""), word) ? 2.5 : 0;'//NL//' }'//NL//NL//' function subsequence(text' &
//', word) {'//NL//' var at = -1;'//NL//' for (var i = 0; i < word.length; i++) {'//NL//' at = text.i' &
//'ndexOf(word[i], at + 1);'//NL//' if (at < 0) return false;'//NL//' }'//NL//' return true;'//NL//' ' &
//' }'//NL//NL//' // the letters of the word are in order and close together'//NL//' function letters(low, wor' &
//'d) {'//NL//' if (word.length < 3) return 0;'//NL//' var best = 0;'//NL//' for (var start = low.index' &
//'Of(word[0]); start >= 0; start = low.indexOf(word[0], start + 1)) {'//NL//' var at = start;'//NL//' ' &
//' for (var i = 1; i < word.length && at >= 0; i++) at = low.indexOf(word[i], at + 1);'//NL//' if (at < 0)' &
//' break;'//NL//' var span = at - start + 1;'//NL//' if (span <= word.length * 2) best = Math.max(bes' &
//'t, word.length / span);'//NL//' }'//NL//' return best;'//NL//' }'//NL//NL//' function fuzzy(entry, wo' &
//'rds) {'//NL//' if (!entry.tokens) entry.tokens = parts(entry.low);'//NL//' var total = 0;'//NL//' fo' &
//'r (var i = 0; i < words.length; i++) {'//NL//' var w = words[i];'//NL//' var s = entry.low.indexOf(' &
//'w) >= 0 ? 3 : Math.max(typo(entry.tokens, w), initials(entry.tokens, w), letters(entry.low, w));'//NL//' ' &
//' if (s <= 0) return 0;'//NL//' total += s;'//NL//' }'//NL//' return total - entry.low.length / 100' &
//'0;'//NL//' }'//NL//NL//' function search(query, limit) {'//NL//' var words = query.toLowerCase().split(/' &
//'\s+/).filter(Boolean);'//NL//' if (!words.length) return [];'//NL//' var found = [], rest = [];'//NL//' ' &
//' entries.forEach(function (e) {'//NL//' var s = score(e, words);'//NL//' if (s > 0) found.push([s' &
//', e]); else rest.push(e);'//NL//' });'//NL//' found.sort(function (a, b) { return b[0] - a[0]; });'//NL &
//' if (found.length < limit) {'//NL//' // fuzzy matches only fill in below exact ones'//NL//' var ' &
//'near = [];'//NL//' rest.forEach(function (e) { var s = fuzzy(e, words); if (s > 0) near.push([s, e]); })' &
//';'//NL//' near.sort(function (a, b) { return b[0] - a[0]; });'//NL//' found = found.concat(near);'//NL &
//' }'//NL//' return found.slice(0, limit).map(function (f) { return f[1]; });'//NL//' }'//NL//NL//' fun' &
//'ction row(entry) {'//NL//' var a = document.createElement("a");'//NL//' a.href = root + entry.u;'//NL//' ' &
//' var title = document.createElement("b");'//NL//' title.textContent = entry.t;'//NL//' var kind = doc' &
//'ument.createElement("span");'//NL//' kind.className = "badge";'//NL//' kind.textContent = entry.k;'//NL &
//' a.appendChild(title);'//NL//' a.appendChild(kind);'//NL//' if (entry.s) {'//NL//' var text = d' &
//'ocument.createElement("small");'//NL//' text.textContent = entry.s;'//NL//' a.appendChild(text);'//NL &
//' }'//NL//' return a;'//NL//' }'//NL//NL//' function fill(box, results) {'//NL//' box.textContent =' &
//' "";'//NL//' results.forEach(function (e) { box.appendChild(row(e)); });'//NL//' }'//NL//NL//' document.' &
//'addEventListener("DOMContentLoaded", function () {'//NL//' var input = document.querySelector(".search inp' &
//'ut");'//NL//' if (!input) return;'//NL//' var box = document.querySelector(".search .results");'//NL//' ' &
//' var selected = -1;'//NL//' function mark() {'//NL//' var rows = box.children;'//NL//' for (va' &
//'r i = 0; i < rows.length; i++) rows[i].className = i === selected ? "on" : "";'//NL//' }'//NL//' input.' &
//'addEventListener("input", function () {'//NL//' load(function () {'//NL//' fill(box, input.value ' &
//'? search(input.value, 12) : []);'//NL//' selected = -1;'//NL//' box.style.display = box.childre' &
//'n.length ? "block" : "none";'//NL//' });'//NL//' });'//NL//' input.addEventListener("keydown", fun' &
//'ction (event) {'//NL//' var n = box.children.length;'//NL//' if (event.key === "ArrowDown" && n) { ' &
//'selected = (selected + 1) % n; mark(); event.preventDefault(); }'//NL//' else if (event.key === "ArrowUp' &
//'" && n) { selected = (selected + n - 1) % n; mark(); event.preventDefault(); }'//NL//' else if (event.ke' &
//'y === "Escape") { box.style.display = "none"; input.blur(); }'//NL//' else if (event.key === "Enter") {'//NL &
//' if (selected >= 0) box.children[selected].click();'//NL//' else location.href = root + "search' &
//'.html?q=" + encodeURIComponent(input.value);'//NL//' }'//NL//' });'//NL//' document.addEventListen' &
//'er("click", function (event) {'//NL//' if (!event.target.closest(".search")) box.style.display = "none";' &
//NL//' });'//NL//' document.addEventListener("keydown", function (event) {'//NL//' if (event.key ===' &
//' "/" && document.activeElement !== input) { input.focus(); event.preventDefault(); }'//NL//' });'//NL//' ' &
//' var page = document.querySelector(".search-page");'//NL//' if (page) {'//NL//' var query = new URLS' &
//'earchParams(location.search).get("q") || "";'//NL//' input.value = query;'//NL//' load(function () ' &
//'{'//NL//' var results = search(query, 200);'//NL//' fill(page, results);'//NL//' documen' &
//'t.querySelector(".search-count").textContent = results.length + " results for “" + query + "”";'//NL//' ' &
//' });'//NL//' }'//NL//' });'//NL//'})();'//NL//'(function () {'//NL//' document.addEventListener("DOMC' &
//'ontentLoaded", function () {'//NL//' document.querySelectorAll(".graph").forEach(function (box) {'//NL//' ' &
//' var svg = box.querySelector("svg");'//NL//' if (!svg) return;'//NL//' var width = svg.width.ba' &
//'seVal.value, height = svg.height.baseVal.value, scale = 1;'//NL//' function set(value) {'//NL//' ' &
//'scale = Math.max(0.25, Math.min(6, value));'//NL//' box.classList.add("zoomed");'//NL//' svg.st' &
//'yle.width = width * scale + "px";'//NL//' svg.style.height = height * scale + "px";'//NL//' }'//NL &
//' var zoom = document.createElement("div");'//NL//' zoom.className = "zoom";'//NL//' [["+", 1.3' &
//'], ["\u2212", 1 / 1.3]].forEach(function (b) {'//NL//' var button = document.createElement("button");'//NL &
//' button.textContent = b[0];'//NL//' button.setAttribute("aria-label", b[1] > 1 ? "Zoom in" : "Z')
call add(b, &
'oom out");'//NL//' button.addEventListener("click", function () { set(scale * b[1]); });'//NL//' ' &
//' zoom.appendChild(button);'//NL//' });'//NL//' box.insertBefore(zoom, svg);'//NL//' var fit =' &
//' box.clientWidth / width;'//NL//' if (fit > 0 && fit < 0.75) set(0.75);'//NL//' var start = null;'//NL &
//' box.addEventListener("mousedown", function (event) {'//NL//' if (event.target.closest("a, button' &
//'")) return;'//NL//' start = [event.clientX, event.clientY, box.scrollLeft, box.scrollTop];'//NL//' ' &
//' box.classList.add("dragging");'//NL//' });'//NL//' window.addEventListener("mousemove", functio' &
//'n (event) {'//NL//' if (!start) return;'//NL//' box.scrollLeft = start[2] - (event.clientX - st' &
//'art[0]);'//NL//' box.scrollTop = start[3] - (event.clientY - start[1]);'//NL//' });'//NL//' ' &
//'window.addEventListener("mouseup", function () { start = null; box.classList.remove("dragging"); });'//NL//' ' &
//' });'//NL//' });'//NL//'})();'//NL//NL//'// a link to something inside a closed section opens the section'//NL &
//'function openTarget() {'//NL//' var id = decodeURIComponent(location.hash.slice(1));'//NL//' var target = i' &
//'d && document.getElementById(id);'//NL//' var section = target && target.closest(''details'');'//NL//' if (' &
//'section) { section.open = true; target.scrollIntoView(); }'//NL//'}'//NL//'window.addEventListener(''hashchan' &
//'ge'', openTarget);'//NL//'window.addEventListener(''DOMContentLoaded'', openTarget);'//NL//NL//'// clicking a' &
//' heading of a sortable table sorts it by that column'//NL//'window.addEventListener(''DOMContentLoaded'', fun' &
//'ction () {'//NL//' document.querySelectorAll(''table.sortable'').forEach(function (table) {'//NL//' var h' &
//'eadings = table.querySelectorAll(''thead th'');'//NL//' headings.forEach(function (th, column) {'//NL//' ' &
//' th.addEventListener(''click'', function () {'//NL//' var body = table.tBodies[0];'//NL//' v' &
//'ar numeric = th.classList.contains(''num'');'//NL//' var up = th.hasAttribute(''aria-sort'') ? th.getA' &
//'ttribute(''aria-sort'') === ''descending'' : !numeric;'//NL//' var key = function (row) {'//NL//' ' &
//' var cell = row.cells[column];'//NL//' return numeric ? Number(cell.dataset.sort) : cell.textCon' &
//'tent.toLowerCase();'//NL//' };'//NL//' var rows = Array.prototype.slice.call(body.rows);'//NL//' ' &
//' rows.sort(function (a, b) {'//NL//' var x = key(a), y = key(b);'//NL//' return (x < ' &
//'y ? -1 : x > y ? 1 : 0) * (up ? 1 : -1);'//NL//' });'//NL//' rows.forEach(function (row) { body' &
//'.appendChild(row); });'//NL//' headings.forEach(function (other) { other.removeAttribute(''aria-sort''' &
//'); });'//NL//' th.setAttribute(''aria-sort'', up ? ''ascending'' : ''descending'');'//NL//' });'//NL &
//' });'//NL//' });'//NL//'});'//NL//NL//'// the sidebar holds all of the list of this page, and shows where' &
//' this page is in it'//NL//'(function () {'//NL//' var script = document.currentScript;'//NL//' var root = s' &
//'cript ? script.src.replace(/js\/fdoc\.js.*$/, "") : "";'//NL//NL//' document.addEventListener("DOMContentLoa' &
//'ded", function () {'//NL//' var side = document.querySelector("aside.side");'//NL//' var list = side &&' &
//' side.querySelector("ul[data-list]");'//NL//' if (!list || !window.FDOC_SIDEBAR) return;'//NL//' list.i' &
//'nnerHTML = (window.FDOC_SIDEBAR[list.dataset.list] || "").replace(/href="@/g, ''href="'' + root);'//NL//' ' &
//'var here = location.href.split("#")[0];'//NL//' var links = list.querySelectorAll("a");'//NL//' for (va' &
//'r k = 0; k < links.length; k++) {'//NL//' if (links[k].href !== here) continue;'//NL//' links[k].cl' &
//'assList.add("current");'//NL//' links[k].setAttribute("aria-current", "page");'//NL//' side.scrollT' &
//'op = links[k].offsetTop - side.clientHeight / 2;'//NL//' return;'//NL//' }'//NL//' });'//NL//'})();'//NL)
end subroutine asset_fdoc_js
end module fdoc_assets