ocaml
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

become REUSE compliant again

authored by

Kento Okura and committed by
Jon Sterling
5d703ff6 90bed77a

+54 -794
+6
bin/forester/App.ml
··· 1 + (* 2 + * SPDX-FileCopyrightText: 2024 The Forester Project Contributors 3 + * 4 + * SPDX-License-Identifier: GPL-3.0-or-later 5 + *) 6 + 1 7 open Brr 2 8 3 9 let htmx = Jv.get Jv.global "htmx"
-2
bin/forester/theme/.gitignore
··· 1 - node_modules 2 - .DS_Store
-121
bin/forester/theme/LICENSES/CC0-1.0.txt
··· 1 - Creative Commons Legal Code 2 - 3 - CC0 1.0 Universal 4 - 5 - CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE 6 - LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN 7 - ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS 8 - INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES 9 - REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS 10 - PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM 11 - THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED 12 - HEREUNDER. 13 - 14 - Statement of Purpose 15 - 16 - The laws of most jurisdictions throughout the world automatically confer 17 - exclusive Copyright and Related Rights (defined below) upon the creator 18 - and subsequent owner(s) (each and all, an "owner") of an original work of 19 - authorship and/or a database (each, a "Work"). 20 - 21 - Certain owners wish to permanently relinquish those rights to a Work for 22 - the purpose of contributing to a commons of creative, cultural and 23 - scientific works ("Commons") that the public can reliably and without fear 24 - of later claims of infringement build upon, modify, incorporate in other 25 - works, reuse and redistribute as freely as possible in any form whatsoever 26 - and for any purposes, including without limitation commercial purposes. 27 - These owners may contribute to the Commons to promote the ideal of a free 28 - culture and the further production of creative, cultural and scientific 29 - works, or to gain reputation or greater distribution for their Work in 30 - part through the use and efforts of others. 31 - 32 - For these and/or other purposes and motivations, and without any 33 - expectation of additional consideration or compensation, the person 34 - associating CC0 with a Work (the "Affirmer"), to the extent that he or she 35 - is an owner of Copyright and Related Rights in the Work, voluntarily 36 - elects to apply CC0 to the Work and publicly distribute the Work under its 37 - terms, with knowledge of his or her Copyright and Related Rights in the 38 - Work and the meaning and intended legal effect of CC0 on those rights. 39 - 40 - 1. Copyright and Related Rights. A Work made available under CC0 may be 41 - protected by copyright and related or neighboring rights ("Copyright and 42 - Related Rights"). Copyright and Related Rights include, but are not 43 - limited to, the following: 44 - 45 - i. the right to reproduce, adapt, distribute, perform, display, 46 - communicate, and translate a Work; 47 - ii. moral rights retained by the original author(s) and/or performer(s); 48 - iii. publicity and privacy rights pertaining to a person's image or 49 - likeness depicted in a Work; 50 - iv. rights protecting against unfair competition in regards to a Work, 51 - subject to the limitations in paragraph 4(a), below; 52 - v. rights protecting the extraction, dissemination, use and reuse of data 53 - in a Work; 54 - vi. database rights (such as those arising under Directive 96/9/EC of the 55 - European Parliament and of the Council of 11 March 1996 on the legal 56 - protection of databases, and under any national implementation 57 - thereof, including any amended or successor version of such 58 - directive); and 59 - vii. other similar, equivalent or corresponding rights throughout the 60 - world based on applicable law or treaty, and any national 61 - implementations thereof. 62 - 63 - 2. Waiver. To the greatest extent permitted by, but not in contravention 64 - of, applicable law, Affirmer hereby overtly, fully, permanently, 65 - irrevocably and unconditionally waives, abandons, and surrenders all of 66 - Affirmer's Copyright and Related Rights and associated claims and causes 67 - of action, whether now known or unknown (including existing as well as 68 - future claims and causes of action), in the Work (i) in all territories 69 - worldwide, (ii) for the maximum duration provided by applicable law or 70 - treaty (including future time extensions), (iii) in any current or future 71 - medium and for any number of copies, and (iv) for any purpose whatsoever, 72 - including without limitation commercial, advertising or promotional 73 - purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each 74 - member of the public at large and to the detriment of Affirmer's heirs and 75 - successors, fully intending that such Waiver shall not be subject to 76 - revocation, rescission, cancellation, termination, or any other legal or 77 - equitable action to disrupt the quiet enjoyment of the Work by the public 78 - as contemplated by Affirmer's express Statement of Purpose. 79 - 80 - 3. Public License Fallback. Should any part of the Waiver for any reason 81 - be judged legally invalid or ineffective under applicable law, then the 82 - Waiver shall be preserved to the maximum extent permitted taking into 83 - account Affirmer's express Statement of Purpose. In addition, to the 84 - extent the Waiver is so judged Affirmer hereby grants to each affected 85 - person a royalty-free, non transferable, non sublicensable, non exclusive, 86 - irrevocable and unconditional license to exercise Affirmer's Copyright and 87 - Related Rights in the Work (i) in all territories worldwide, (ii) for the 88 - maximum duration provided by applicable law or treaty (including future 89 - time extensions), (iii) in any current or future medium and for any number 90 - of copies, and (iv) for any purpose whatsoever, including without 91 - limitation commercial, advertising or promotional purposes (the 92 - "License"). The License shall be deemed effective as of the date CC0 was 93 - applied by Affirmer to the Work. Should any part of the License for any 94 - reason be judged legally invalid or ineffective under applicable law, such 95 - partial invalidity or ineffectiveness shall not invalidate the remainder 96 - of the License, and in such case Affirmer hereby affirms that he or she 97 - will not (i) exercise any of his or her remaining Copyright and Related 98 - Rights in the Work or (ii) assert any associated claims and causes of 99 - action with respect to the Work, in either case contrary to Affirmer's 100 - express Statement of Purpose. 101 - 102 - 4. Limitations and Disclaimers. 103 - 104 - a. No trademark or patent rights held by Affirmer are waived, abandoned, 105 - surrendered, licensed or otherwise affected by this document. 106 - b. Affirmer offers the Work as-is and makes no representations or 107 - warranties of any kind concerning the Work, express, implied, 108 - statutory or otherwise, including without limitation warranties of 109 - title, merchantability, fitness for a particular purpose, non 110 - infringement, or the absence of latent or other defects, accuracy, or 111 - the present or absence of errors, whether or not discoverable, all to 112 - the greatest extent permissible under applicable law. 113 - c. Affirmer disclaims responsibility for clearing rights of other persons 114 - that may apply to the Work or any use thereof, including without 115 - limitation any person's Copyright and Related Rights in the Work. 116 - Further, Affirmer disclaims responsibility for obtaining any necessary 117 - consents, permissions or other rights required for any use of the 118 - Work. 119 - d. Affirmer understands and acknowledges that Creative Commons is not a 120 - party to this document and has no duty or obligation with respect to 121 - this CC0 or use of the Work.
bin/forester/theme/LICENSES/MIT.txt LICENSES/MIT.txt
bin/forester/theme/LICENSES/OFL-1.1.txt LICENSES/OFL-1.1.txt
+23
bin/forester/theme/REUSE.toml
··· 1 + # SPDX-FileCopyrightText: 2024 The Forester Project Contributors 2 + # 3 + # SPDX-License-Identifier: GPL-3.0-or-later 4 + 5 + version = 3 6 + 7 + [[annotations]] 8 + path = ["fonts/KaTeX*", "katex.min.css"] 9 + precedence = "override" 10 + SPDX-FileCopyrightText = "2013-2020 Khan Academy and other contributors" 11 + SPDX-License-Identifier = "MIT" 12 + 13 + [[annotations]] 14 + path = ["fonts/inria-sans*"] 15 + precedence = "override" 16 + SPDX-FileCopyrightText = "2017 The Inria Sans Project Authors" 17 + SPDX-License-Identifier = "OFL-1.1" 18 + 19 + [[annotations]] 20 + path = ["*.xsl", "*.png", "*.css", "*.sh", "*.ico", "*.json", "**/**.js", "index.html"] 21 + precedence = "override" 22 + SPDX-FileCopyrightText = "2024 The Forester Project Contributors" 23 + SPDX-License-Identifier = "CC0-1.0"
-664
lib/frontend/Css.ml
··· 1 - (* 2 - * SPDX-FileCopyrightText: 2024 The Forester Project Contributors 3 - * 4 - * SPDX-License-Identifier: GPL-3.0-or-later 5 - *) 6 - 7 - let stylesheet = 8 - {css| 9 - /* SPDX-License-Identifier: CC0-1.0 */ 10 - 11 - .katex { 12 - font-size: 1.15em !important; 13 - } 14 - 15 - /* inria-sans-300 - latin_latin-ext */ 16 - @font-face { 17 - font-display: swap; 18 - /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ 19 - font-family: 'Inria Sans'; 20 - font-style: normal; 21 - font-weight: 300; 22 - src: url('fonts/inria-sans-v14-latin_latin-ext-300.woff2') format('woff2'); 23 - /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ 24 - } 25 - 26 - /* inria-sans-300italic - latin_latin-ext */ 27 - @font-face { 28 - font-display: swap; 29 - /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ 30 - font-family: 'Inria Sans'; 31 - font-style: italic; 32 - font-weight: 300; 33 - src: url('fonts/inria-sans-v14-latin_latin-ext-300italic.woff2') format('woff2'); 34 - /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ 35 - } 36 - 37 - /* inria-sans-regular - latin_latin-ext */ 38 - @font-face { 39 - font-display: swap; 40 - /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ 41 - font-family: 'Inria Sans'; 42 - font-style: normal; 43 - font-weight: 400; 44 - src: url('fonts/inria-sans-v14-latin_latin-ext-regular.woff2') format('woff2'); 45 - /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ 46 - } 47 - 48 - /* inria-sans-italic - latin_latin-ext */ 49 - @font-face { 50 - font-display: swap; 51 - /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ 52 - font-family: 'Inria Sans'; 53 - font-style: italic; 54 - font-weight: 400; 55 - src: url('fonts/inria-sans-v14-latin_latin-ext-italic.woff2') format('woff2'); 56 - /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ 57 - } 58 - 59 - /* inria-sans-700 - latin_latin-ext */ 60 - @font-face { 61 - font-display: swap; 62 - /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ 63 - font-family: 'Inria Sans'; 64 - font-style: normal; 65 - font-weight: 700; 66 - src: url('fonts/inria-sans-v14-latin_latin-ext-700.woff2') format('woff2'); 67 - /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ 68 - } 69 - 70 - /* inria-sans-700italic - latin_latin-ext */ 71 - @font-face { 72 - font-display: swap; 73 - /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ 74 - font-family: 'Inria Sans'; 75 - font-style: italic; 76 - font-weight: 700; 77 - src: url('fonts/inria-sans-v14-latin_latin-ext-700italic.woff2') format('woff2'); 78 - /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ 79 - } 80 - 81 - :root { 82 - --content-gap: 15px; 83 - --radius: 5px; 84 - } 85 - 86 - h1, 87 - h2, 88 - h3, 89 - h4, 90 - h5, 91 - h6 { 92 - font-family: "Source Sans 3", sans-serif; 93 - font-optical-sizing: auto; 94 - font-weight: 500; 95 - /* line-height: 1.2; */ 96 - margin-bottom: 0; 97 - } 98 - 99 - h5, 100 - h6, 101 - p { 102 - margin-top: 0; 103 - } 104 - 105 - ninja-keys { 106 - font-family: "Source Sans 3", sans-serif; 107 - font-optical-sizing: auto; 108 - } 109 - 110 - h1, 111 - h2, 112 - h3, 113 - h4 { 114 - margin-top: .5em; 115 - } 116 - 117 - pre, 118 - img, 119 - .katex-display, 120 - section, 121 - center { 122 - overflow-y: hidden; 123 - } 124 - 125 - pre { 126 - border-radius: var(--radius); 127 - background-color: rgba(0, 100, 100, 0.04); 128 - padding: .5em; 129 - font-size: 11pt; 130 - margin-top: 0em; 131 - overflow-x: auto; 132 - white-space: pre-wrap; 133 - white-space: -moz-pre-wrap; 134 - white-space: -pre-wrap; 135 - white-space: -o-pre-wrap; 136 - word-wrap: break-word; 137 - } 138 - 139 - code { 140 - border-radius: var(--radius); 141 - background-color: rgba(0, 100, 100, 0.04); 142 - padding: 0.2em; 143 - font-size: 0.9em; 144 - } 145 - 146 - body { 147 - font-family: "Source Serif 4", serif; 148 - font-optical-sizing: auto; 149 - } 150 - 151 - p, 152 - pre { 153 - line-height: 1.55; 154 - } 155 - 156 - strong { 157 - font-weight: 700; 158 - } 159 - 160 - math { 161 - font-size: 1.12em; 162 - } 163 - 164 - mrow:hover { 165 - background-color: rgba(0, 100, 255, 0.04); 166 - } 167 - 168 - pre, 169 - code { 170 - font-family: "Source Code Pro", monospace; 171 - font-optical-sizing: auto; 172 - } 173 - 174 - .logo { 175 - font-weight: 600; 176 - font-size: 24px; 177 - } 178 - 179 - .logo a { 180 - color: #666; 181 - text-decoration: none; 182 - } 183 - 184 - .logo a:hover { 185 - color: #aaa; 186 - } 187 - 188 - .block.hide-metadata>details>summary>header>.metadata { 189 - display: none; 190 - } 191 - 192 - article>section>details>summary>header>h1>.taxon { 193 - display: block; 194 - font-size: .9em; 195 - color: #888; 196 - padding-bottom: 5pt; 197 - } 198 - 199 - section section[data-taxon="Reference"]>details>summary>header>h1>.taxon, 200 - section section[data-taxon="Person"]>details>summary>header>h1>.taxon { 201 - display: none; 202 - } 203 - 204 - footer>section { 205 - margin-bottom: 1em; 206 - } 207 - 208 - footer h2 { 209 - font-size: 14pt; 210 - } 211 - 212 - .metadata>address { 213 - display: inline; 214 - } 215 - 216 - @media only screen and (max-width: 1000px) { 217 - body { 218 - margin-top: 1em; 219 - margin-left: .5em; 220 - margin-right: .5em; 221 - transition: ease all .2s; 222 - } 223 - 224 - #grid-wrapper>nav { 225 - display: none; 226 - transition: ease all .2s; 227 - } 228 - } 229 - 230 - @media only screen and (min-width: 1000px) { 231 - body { 232 - margin-top: 2em; 233 - margin-left: 2em; 234 - transition: ease all .2s; 235 - } 236 - 237 - #grid-wrapper { 238 - display: grid; 239 - grid-template-columns: 90ex; 240 - } 241 - } 242 - 243 - body>header { 244 - margin-bottom: 2em; 245 - } 246 - 247 - #grid-wrapper>article { 248 - max-width: 90ex; 249 - margin-right: auto; 250 - grid-column: 1; 251 - } 252 - 253 - #grid-wrapper>nav { 254 - grid-column: 2; 255 - } 256 - 257 - details>summary>header { 258 - display: inline; 259 - } 260 - 261 - a.heading-link { 262 - box-shadow: none; 263 - } 264 - 265 - details h1 { 266 - font-size: 1.2em; 267 - display: inline; 268 - } 269 - 270 - section .block[data-taxon] details>summary>header>h1 { 271 - font-size: 13pt; 272 - } 273 - 274 - span.taxon { 275 - color: #444; 276 - font-weight: 500; 277 - } 278 - 279 - 280 - .link-list>section>details>summary>header h1 { 281 - font-size: 12pt; 282 - } 283 - 284 - 285 - article>section>details>summary>header>h1 { 286 - font-size: 1.5em; 287 - } 288 - 289 - details>summary { 290 - list-style-type: none; 291 - } 292 - 293 - details>summary::marker, 294 - details>summary::-webkit-details-marker { 295 - display: none; 296 - } 297 - 298 - article>section>details>summary>header { 299 - display: block; 300 - margin-bottom: .5em; 301 - } 302 - 303 - section.block>details { 304 - margin-bottom: 0.4em; 305 - } 306 - 307 - 308 - section.block>details[open] { 309 - margin-bottom: 1em; 310 - } 311 - 312 - 313 - .link-list>section.block>details { 314 - margin-bottom: .25em; 315 - } 316 - 317 - nav#toc { 318 - margin-left: 1em; 319 - } 320 - 321 - nav#toc h1 { 322 - margin-top: 0; 323 - font-size: 16pt; 324 - } 325 - 326 - nav#toc, 327 - nav#toc a { 328 - color: #555; 329 - } 330 - 331 - nav#toc .link { 332 - box-shadow: none; 333 - text-decoration: none; 334 - } 335 - 336 - nav#toc a.bullet { 337 - opacity: 0.7; 338 - margin-left: 0.4em; 339 - margin-right: 0.3em; 340 - padding-left: 0.2em; 341 - padding-right: 0.2em; 342 - text-decoration: none; 343 - } 344 - 345 - nav#toc h2 { 346 - font-size: 1.1em; 347 - } 348 - 349 - nav#toc ul { 350 - list-style-type: none; 351 - } 352 - 353 - nav#toc li>ul { 354 - padding-left: 1em; 355 - } 356 - 357 - nav#toc li { 358 - list-style-position: inside; 359 - } 360 - 361 - .block { 362 - width: fit-content; 363 - border-radius: var(--radius) 364 - } 365 - 366 - .block:hover { 367 - background-color: rgba(0, 100, 255, 0.04); 368 - } 369 - 370 - .block.highlighted { 371 - border-style: solid; 372 - border-width: 1pt; 373 - } 374 - 375 - .highlighted { 376 - background-color: rgba(255, 255, 140, .3); 377 - border-color: #ccc; 378 - } 379 - 380 - .highlighted:hover { 381 - background-color: rgba(255, 255, 140, .6); 382 - border-color: #aaa; 383 - } 384 - 385 - .slug, 386 - .doi, 387 - .orcid { 388 - color: gray; 389 - font-weight: 200; 390 - } 391 - 392 - .edit-button { 393 - color: rgb(180, 180, 180); 394 - font-weight: 200; 395 - } 396 - 397 - .block { 398 - padding-left: 5px; 399 - padding-right: 10px; 400 - padding-bottom: 2px; 401 - border-radius: 5px; 402 - } 403 - 404 - .link.external { 405 - text-decoration: underline; 406 - } 407 - 408 - a.link.local, 409 - .link.local a, 410 - a.slug { 411 - box-shadow: none; 412 - text-decoration-line: underline; 413 - text-decoration-style: dotted; 414 - } 415 - 416 - ninja-keys::part(ninja-action) { 417 - white-space: nowrap; 418 - } 419 - 420 - body { 421 - hyphens: auto; 422 - } 423 - 424 - table { 425 - margin-bottom: 1em; 426 - } 427 - 428 - table.macros { 429 - overflow-x: visible; 430 - overflow-y: visible; 431 - font-size: 0.9em; 432 - } 433 - 434 - table.macros td { 435 - padding-left: 5pt; 436 - padding-right: 15pt; 437 - vertical-align: baseline; 438 - } 439 - 440 - th { 441 - text-align: left; 442 - } 443 - 444 - th, 445 - td { 446 - padding: 0 15px; 447 - vertical-align: top; 448 - } 449 - 450 - td.macro-name, 451 - td.macro-body { 452 - white-space: nowrap; 453 - } 454 - 455 - td.macro-doc { 456 - font-size: .9em; 457 - } 458 - 459 - .enclosing.macro-scope>.enclosing { 460 - border-radius: 2px; 461 - } 462 - 463 - .enclosing.macro-scope>.enclosing:hover { 464 - background-color: rgba(0, 100, 255, 0.1); 465 - } 466 - 467 - [aria-label][role~="tooltip"]::after { 468 - font-family: "Inria Sans"; 469 - } 470 - 471 - nav { 472 - font-family: "Source Sans 3", sans-serif; 473 - font-optical-sizing: auto; 474 - } 475 - 476 - .tooltip { 477 - position: relative; 478 - } 479 - 480 - .inline.tooltip { 481 - display: inline-block; 482 - } 483 - 484 - .display.tooltip { 485 - display: block; 486 - } 487 - 488 - 489 - /* The tooltip class is applied to the span element that is the tooltip */ 490 - 491 - .tooltip .tooltiptext { 492 - visibility: hidden; 493 - white-space: nowrap; 494 - min-width: fit-content; 495 - background-color: black; 496 - color: #fff; 497 - padding-left: 5px; 498 - padding-top: 5px; 499 - padding-right: 10px; 500 - border-radius: 6px; 501 - position: absolute; 502 - z-index: 1; 503 - top: 100%; 504 - left: 50%; 505 - margin-left: -60px; 506 - opacity: 0; 507 - transition: opacity 0.3s; 508 - } 509 - 510 - .tooltip .tooltiptext::after { 511 - content: ""; 512 - position: absolute; 513 - top: 100%; 514 - left: 50%; 515 - margin-left: -5px; 516 - border-width: 5px; 517 - } 518 - 519 - 520 - /* Show the tooltip */ 521 - 522 - .tooltip:hover .tooltiptext { 523 - visibility: visible; 524 - opacity: 1; 525 - } 526 - 527 - .tooltiptext a { 528 - color: white 529 - } 530 - 531 - .macro-doc { 532 - font-style: italic; 533 - } 534 - 535 - .macro-name { 536 - white-space: nowrap; 537 - } 538 - 539 - .macro-is-private { 540 - color: var(--secondary); 541 - } 542 - 543 - blockquote { 544 - border-inline-start: 1px solid var(--secondary); 545 - } 546 - 547 - a.slug:hover, 548 - a.bullet:hover, 549 - .edit-button:hover, 550 - .link:hover { 551 - background-color: rgba(0, 100, 255, .1); 552 - } 553 - 554 - .link { 555 - cursor: pointer; 556 - } 557 - 558 - a { 559 - color: black; 560 - text-decoration: inherit; 561 - } 562 - 563 - .nowrap { 564 - white-space: nowrap; 565 - } 566 - 567 - .nocite { 568 - display: none 569 - } 570 - 571 - blockquote { 572 - font-style: italic; 573 - } 574 - 575 - 576 - 577 - address { 578 - display: inline; 579 - } 580 - 581 - 582 - .metadata ul { 583 - padding-left: 0; 584 - display: inline; 585 - } 586 - 587 - .metadata li::after { 588 - content: " · "; 589 - } 590 - 591 - .metadata li:last-child::after { 592 - content: ""; 593 - } 594 - 595 - .metadata ul li { 596 - display: inline 597 - } 598 - 599 - img { 600 - object-fit: cover; 601 - max-width: 100%; 602 - } 603 - 604 - figure { 605 - text-align: center; 606 - } 607 - 608 - figcaption { 609 - font-style: italic; 610 - padding: 3px; 611 - } 612 - 613 - mark { 614 - background-color: rgb(255, 255, 151); 615 - } 616 - 617 - hr { 618 - margin-top: 10px; 619 - margin-bottom: 20px; 620 - background-color: gainsboro; 621 - border: 0 none; 622 - width: 100%; 623 - height: 2px; 624 - } 625 - 626 - ul, 627 - ol { 628 - padding-bottom: .5em; 629 - } 630 - 631 - ol { 632 - list-style-type: decimal; 633 - } 634 - 635 - ol li ol { 636 - list-style-type: lower-alpha; 637 - } 638 - 639 - ol li ol li ol { 640 - list-style-type: lower-roman; 641 - } 642 - 643 - .error, 644 - .info { 645 - border-radius: 4pt; 646 - padding-left: 3pt; 647 - padding-right: 3pt; 648 - padding-top: 1pt; 649 - padding-bottom: 2pt; 650 - font-weight: bold; 651 - } 652 - 653 - .error { 654 - background-color: red; 655 - color: white; 656 - } 657 - 658 - 659 - .info { 660 - background-color: #bbb; 661 - color: white; 662 - } 663 - 664 - |css}
-1
lib/language_server/Inlay_hint.ml
··· 19 19 _; 20 20 } -> 21 21 let Lsp_state.{forest; _} = Lsp_state.get () in 22 - (* let render = Render.render forest STRING in *) 23 22 let config = State.config forest in 24 23 let host = config.host in 25 24 match Forest.find_opt (State.parsed forest) (Iri_scheme.uri_to_iri ~host textDocument.uri) with
+6
lib/search/Forester_search.ml
··· 1 + (* 2 + * SPDX-FileCopyrightText: 2024 The Forester Project Contributors 3 + * 4 + * SPDX-License-Identifier: GPL-3.0-or-later 5 + *) 6 + 1 7 module Index = Index
+6
lib/search/Index.ml
··· 1 + (* 2 + * SPDX-FileCopyrightText: 2024 The Forester Project Contributors 3 + * 4 + * SPDX-License-Identifier: GPL-3.0-or-later 5 + *) 6 + 1 7 open Forester_core 2 8 open Forester_compiler 3 9 module T = Forester_core.Types
+3 -6
lib/search/Stemming.ml
··· 1 - (* stemmer.ml: Generates stems of English words. 1 + (* 2 + * SPDX-FileCopyrightText: 2010, 2014 Erik Arneson <earneson@arnesonium.com> 2 3 * 3 - * Copyright (C) 2003-2010, 2014 by Erik Arneson <earneson@arnesonium.com> 4 - * No guarantees or restrictions on use. This code is released into the 5 - * public domain. 6 - * 7 - * $Id: stemmer.ml,v 1.4 2003/07/20 18:50:21 erik Exp $ 4 + * SPDX-License-Identifier: CC0-1.0 8 5 *) 9 6 10 7 exception No_stem of string
+4
lib/search/dune
··· 1 + ;;; SPDX-FileCopyrightText: 2024 The Forester Project Contributors 2 + ;;; 3 + ;;; SPDX-License-Identifier: GPL-3.0-or-later 4 + 1 5 (library 2 6 (name Forester_search) 3 7 (public_name forester.search)
+6
lib/server/Search_menu.ml
··· 1 + (* 2 + * SPDX-FileCopyrightText: 2024 The Forester Project Contributors 3 + * 4 + * SPDX-License-Identifier: GPL-3.0-or-later 5 + *) 6 + 1 7 let v = 2 8 let markup = 3 9 let open Pure_html in