2be4138f

Archive
Tree [2be4138f] [>]
commit
2be4138f4039b87995d9828d9dbaa531043ea098
parent
author
Christopher K. Schmitt <me@shmish.dev>
date
2026-07-29
committer
Christopher K. Schmitt <me@shmish.dev>
date
2026-07-29
changes
3
insertions
28
deletions
1
Add KaTeX math rendering for READMEs
Mtemplates/base.html
~    <title>{% block title %}{% endblock %}</title>~    <link rel="stylesheet" href="{{ crate::base_url() }}/style.css">~    <link rel="icon" type="image/svg+xml" href="{{ crate::base_url() }}/favicon.ico">+    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/katex.min.css" crossorigin="anonymous">~    <meta property="og:site_name" content="git browse">~    <meta property="og:type" content="website">~    <meta property="og:title" content="{% block og_title %}{% endblock %}">
Mtemplates/repo.html
~{% endblock %}~~{% block scripts %}+<script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/katex.min.js" crossorigin="anonymous"></script>+<script>+  document.addEventListener('DOMContentLoaded', function() {+    document.querySelectorAll('.math-inline, .math-display').forEach(function(el) {+      try {+        katex.render(el.textContent, el, {+          displayMode: el.classList.contains('math-display'),+          throwOnError: false,+        });+      } catch (e) {+        console.error('KaTeX error:', e);+      }+    });+  });+</script>~<script>~  document.querySelectorAll('[data-url]').forEach(btn => {~    const span = btn.querySelector('span:first-child');
Msrc/routes/repo.rs
~            // Rewrite relative image and link URLs to the raw file serving~            // route so that assets committed alongside the README work.~            let mut rendered = String::new();-            let events = Parser::new_ext(text, Options::empty()).map(|event| match event {+            let mut opts = Options::empty();+            opts.insert(Options::ENABLE_TABLES);+            opts.insert(Options::ENABLE_FOOTNOTES);+            opts.insert(Options::ENABLE_STRIKETHROUGH);+            opts.insert(Options::ENABLE_TASKLISTS);+            opts.insert(Options::ENABLE_SMART_PUNCTUATION);+            opts.insert(Options::ENABLE_HEADING_ATTRIBUTES);+            opts.insert(Options::ENABLE_GFM);+            opts.insert(Options::ENABLE_DEFINITION_LIST);+            opts.insert(Options::ENABLE_SUPERSCRIPT);+            opts.insert(Options::ENABLE_MATH);+            let events = Parser::new_ext(text, opts).map(|event| match event {~                Event::Start(Tag::Image {~                    link_type,~                    dest_url,