Markdown shortcut, special-character, and inline-mark matchers for the devup editor input-rule pipeline.
Every matcher is a pure function of (block_text, cursor_offset):
no DOM, no editor handle, no commands. The React layer calls into
these matchers, inspects the returned [Match] payload, and
synthesises the appropriate dispatchBatch sequence on the JS
side. This keeps command dispatch (which needs an EditorHandle)
in React and confines the hot-path string work to Rust.
The regex patterns, delimiter rules, and skip-~~ reservation are
mirrored byte-for-byte from the TypeScript source so behaviour is
identical under typical clipboard / keyboard interactions.