Xah Talk Show 2025-11-21 Ep715 JavaScript markdown to HTML code, algo of text processing.
Video Summary (Generated by AI, Edited by Human.)
Introduction to Markdown to HTML
The speaker plans to explore JavaScript markdown to HTML conversion, reviewing existing code implementations to understand their methodologies. (0:00)
He demonstrates a markdown to HTML converter written in Emacs Lisp, which he previously coded live. (1:15)
Complexities of Markdown Conversion
The speaker highlights challenges in markdown conversion, such as nested lists, tables, and handling backticks within code blocks. (6:58)
He explains that his current Emacs Lisp markdown converter is incomplete and not robust enough for industrial use. (11:58)
Approaches to Robust Markdown Conversion
The speaker considers two main options: spending 20-30 hours to code a robust markdown converter in Emacs Lisp, or writing a wrapper to call external commands from other languages like JavaScript or Python. (12:25)
He expresses interest in studying implementations in JavaScript (specifically commonmark.js), Python, Golang, and F# to understand how they handle text processing. (18:29)
Text Processing Differences in Languages
The speaker explains that Emacs Lisp uses a 'buffer' data type for text processing, which is highly efficient for in-place modifications, unlike immutable strings in Python or JavaScript. (23:50)
He questions how other languages handle large-scale text transformations efficiently, such as converting strings to arrays of characters. (28:03)
Analysis of commonmark.js
The speaker starts examining commonmark.js on GitHub, noting its use of static imports and complex regular expressions. (32:05)
He observes the use of `var` instead of `let` or `const`, which is considered outdated in modern JavaScript. (37:48)
He criticizes the reliance on numerous external npm dependencies like 'entities' and 'lodash', which he believes complicates the development process. (45:06)
- the problems or complexity of a command that convert markdown to html:
- if you have nested list.
- if you have table.
- if you have code markup, and in that code, it uses GRAVE ACCENT `
- if you have code markup, the code process markdown.
```
JavaScript
const x = 3;
console.log(`i have ${x} cats`)
```
const x = 3; console.log(`i have ${x} cats`)
- download commonmark.js
- look at the code.
- also, look at it as how text processing is done, compare to emacs lisp