From d18f2e1cac5c8dfdb2b2c7d21bf6bd81633d623b Mon Sep 17 00:00:00 2001 From: Marshall Lochbaum Date: Thu, 16 Jul 2020 21:38:13 -0400 Subject: Add link support --- doc/md.bqn | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) (limited to 'doc') diff --git a/doc/md.bqn b/doc/md.bqn index 8d9c7648..b840817a 100644 --- a/doc/md.bqn +++ b/doc/md.bqn @@ -158,6 +158,7 @@ Markdown ← { # Inline elements ProcInline ← { puncChars ← "!""#$%&'()*+,-./:;<=>?@[\]^_`{|}~" + I2M ← (≠𝕩)↑/⁼ # Index to mask # Code spans ProcCodeSpan ← { @@ -172,20 +173,33 @@ Markdown ← { c ← Trace´ tlen {m←(⊢=0⊸Shl)𝕨⋄(⌽⟜m/𝕩˜)¨1‿0}○((⍋tlen)⊸⊏) tend cl ← (⊏˘c) ⊏ tcount ctInds ← ⥊˘ 1 + c -⌜˘ cl×⌜1‿0 - I2M ← (≠𝕩)↑/⁼ # Index to mask include ← ¬ ≠` I2M ⥊ 0‿3⊸⊏˘ ctInds codeStart ← I2M 1 ⊏˘ ctInds codeGroup ← 1 -˜ codeStart (⊣×>)○(+`) I2M 2 ⊏˘ ctInds code ← ProcCodeSpan¨ codeGroup ⊔ 𝕩 + # Links + ReplaceMDSub ← { ¯2 (↓∾"html"˜)⍟(("md"≡↑)∧'/'∧´∘≠⊢) 𝕩 } + ReplaceMD ← { ReplaceMDSub⌾((⊑𝕩⊐"#")⊸↑) 𝕩 } + ProcLink ← { ∾⟨"",𝕨,""⟩ } + brak ← /∘(include ∧ 𝕩⊸=)¨ "]()[" + link ← (∊/⊣)´ 0‿¯1 + 2 ↑ brak + chains ← (⍋˜ ⊏ ⊢∾(≠𝕩)˜)` ¯1 ⌽ ( (∧´ (∊ ∧ <⟜(≠𝕩))¨ 1 ↓ chains)⊸/¨ chains + linkStart ← I2M 0 ⊏ chains + lInds ← 1‿0‿2‿0⊸+˘ (⥊2⊸↕)˘ ⍉ chains + include ∧↩ ¬ ≠` I2M ⥊ (¯1‿1+0‿3⊸⊏)˘ lInds + linkGroup ← 1 -˜ (1‿0⥊˜≢)⊸(/ (⊣×>)○(+`I2M) ¬⊸/) ⥊lInds + links ← <∘ProcLink´˘ 2⊸(÷˜⟜≠∾⊣)⊸⥊ linkGroup ⊔ 𝕩 + # Emphasis (still rudimentary) eMasks ← (include ∧ 𝕩⊸=)¨ "*_" eInds ← (⊢-2|⊢)∘≠⊸↑∘/¨ eMasks include ∧↩ ¬∨´eMasks eTags ← ∾ eInds ≠⊸⥊¨ <""‿"" - new ← eTags ∾ code # Text to be added - inds← (∾eInds)∾/codeStart # Where to add it + new ← ∾⟨eTags,code,links⟩ # Text to be added + inds← ∾eInds∾/¨codeStart‿linkStart # Where to add it ((/include)∾(≠¨new)/inds) ⍋⊸⊏ (include/𝕩)∾∾new } -- cgit v1.2.3