remove haskell filter

This commit is contained in:
2025-10-11 09:14:33 +08:00
parent 5a20323b59
commit 40f6d927cd
7 changed files with 14 additions and 61 deletions

View File

@@ -1,6 +0,0 @@
clear-package-db
global-package-db
package-db /Users/congyu/.cabal/store/ghc-9.4.8/package.db
package-id base-4.17.2.1
package-id pndc-typs-1.23.1-53806a08
package-id text-2.0.2

View File

@@ -1,6 +0,0 @@
clear-package-db
global-package-db
package-db /Users/congyu/.cabal/store/ghc-9.6.7/package.db
package-id base-4.18.3.0
package-id pndc-typs-1.23.1-7d4eff68
package-id text-2.0.2

View File

@@ -1,6 +1,5 @@
{
"haskell.toolchain": {
"hls": "2.10.0.0",
"ghc": "9.6.7"
}
"Lua.diagnostics.globals": [
"pandoc"
]
}

View File

@@ -1,20 +0,0 @@
#!/usr/bin/env runhaskell
-- filter.hs
import Text.Pandoc.JSON
import qualified Data.Text.IO as TIO
import qualified Data.Text as T
file2Block :: FilePath -> IO [Block]
file2Block f = do
contents <- TIO.readFile f
return [Plain [Str contents]]
doInclude :: Block -> IO Block
doInclude cb@(Div (id, classes, namevals) contents) =
case lookup (T.pack "include") namevals of
Just f -> Div (id, classes, namevals) <$> file2Block (T.unpack f)
Nothing -> return cb
doInclude x = return x
main :: IO ()
main = toJSONFilter doInclude

View File

@@ -1,7 +1,7 @@
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce porta mattis neque, quis molestie nunc faucibus vitae. Phasellus vel commodo dolor, at faucibus arcu. Curabitur sit amet magna a neque euismod feugiat non et diam. Aliquam sit amet libero enim. Integer dignissim ullamcorper felis, ac ultrices turpis congue vel. Nulla id tempus orci. Curabitur ac vulputate tellus. Integer fermentum tempor facilisis. Duis egestas luctus tristique. Maecenas vitae arcu sit amet justo feugiat imperdiet. Nunc luctus erat sed ligula convallis hendrerit.
:::{include="filter.hs , filter.lua , ,"}
:::{include="README.md , filter.lua , ,"}
:::

View File

@@ -1,12 +1,7 @@
.PHONY: filter showAST nofilter
nofilter:
pandoc -fmarkdown -thtml input.md > output.html
hs:
pandoc -fmarkdown -thtml input.md --filter ./filter.hs > output.html
lua:
pandoc -fmarkdown -thtml input.md --lua-filter ./filter.lua > output.html

View File

@@ -6,28 +6,19 @@ ullamcorper felis, ac ultrices turpis congue vel. Nulla id tempus orci.
Curabitur ac vulputate tellus. Integer fermentum tempor facilisis. Duis
egestas luctus tristique. Maecenas vitae arcu sit amet justo feugiat
imperdiet. Nunc luctus erat sed ligula convallis hendrerit.</p>
<div data-include="filter.hs , filter.lua , ,">
#!/usr/bin/env runhaskell
-- filter.hs
import Text.Pandoc.JSON
import qualified Data.Text.IO as TIO
import qualified Data.Text as T
<div data-include="README.md , filter.lua , ,">
# Piecewise Readable Filter
file2Block :: FilePath -&gt; IO [Block]
file2Block f = do
contents &lt;- TIO.readFile f
return [Plain [Str contents]]
This is a pandoc filter manipulating
[fenced_divs](https://pandoc.org/MANUAL.html#extension-fenced_divs) in
pandoc markdown.
doInclude :: Block -&gt; IO Block
doInclude cb@(Div (id, classes, namevals) contents) =
case lookup (T.pack "include") namevals of
Just f -&gt; Div (id, classes, namevals) &lt;$&gt; file2Block
(T.unpack f)
Nothing -&gt; return cb
doInclude x = return x
Inspired by [this
joke](https://www.zhihu.com/question/586807834/answer/2973535981).
useful refs:
- https://pandoc.org/lua-filters.html
main :: IO ()
main = toJSONFilter doInclude
local function words(s)
local res = {}
for part in s:gmatch("[^,]+") do -- split by commas