From 61e7d14266493423fae5a67b58b5f914ffd7307f Mon Sep 17 00:00:00 2001 From: Daniele Pintore Date: Sat, 24 Feb 2024 12:31:53 +0100 Subject: [PATCH] Added pandoc filter to parse links in vimwiki --- .config/vimwiki/README.md | 6 ++++++ .config/vimwiki/delink.hs | 10 ++++++++++ .config/vimwiki/linkParser | Bin 0 -> 28880 bytes .config/vimwiki/linkParser.hs | 18 ++++++++++++++++++ 4 files changed, 34 insertions(+) create mode 100644 .config/vimwiki/README.md create mode 100755 .config/vimwiki/delink.hs create mode 100755 .config/vimwiki/linkParser create mode 100755 .config/vimwiki/linkParser.hs diff --git a/.config/vimwiki/README.md b/.config/vimwiki/README.md new file mode 100644 index 0000000..7405ac0 --- /dev/null +++ b/.config/vimwiki/README.md @@ -0,0 +1,6 @@ +# How to compile the filter + +In order to compile the filter you must type: `ghc -static --make filter.hs`. Keep in mind that you don't need to compile anything, because you can just make the `filter.hs` file executable via `chmod +x filter.hs` and then run it via: +`pandoc -f markdown -t html --filter ./filter.hs -o index.html index.md`. + +To do that remember also to add the shebang: `#!/usr/bin/env runhaskell` diff --git a/.config/vimwiki/delink.hs b/.config/vimwiki/delink.hs new file mode 100755 index 0000000..9e0f2c6 --- /dev/null +++ b/.config/vimwiki/delink.hs @@ -0,0 +1,10 @@ +#!/usr/bin/env runhaskell +-- This haskell filter removes links from the document + +import Text.Pandoc.JSON + +main = toJSONFilter delink + +delink :: Inline -> [Inline] +delink (Link _ txt _) = txt +delink x = [x] diff --git a/.config/vimwiki/linkParser b/.config/vimwiki/linkParser new file mode 100755 index 0000000000000000000000000000000000000000..530394133dca90bb2ef0677d804aa330fdb6b916 GIT binary patch literal 28880 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 Y$D@U;-i-Es8~%q<2E~+#!2}Bb3!r7QX8-^I literal 0 HcmV?d00001 diff --git a/.config/vimwiki/linkParser.hs b/.config/vimwiki/linkParser.hs new file mode 100755 index 0000000..0fc1400 --- /dev/null +++ b/.config/vimwiki/linkParser.hs @@ -0,0 +1,18 @@ +#!/usr/bin/env runhaskell +-- This simple filter checks if the link contained is a valid url, if it isn't +-- it adds a .html extenstion to the link (it's supposed to be a page in the wiki) + +import Text.Pandoc.JSON +import Text.Regex.TDFA ((=~)) +import Data.Text (pack, unpack) + +main = toJSONFilter linkParser + +linkParser :: Inline -> Inline +linkParser (Link attr txt (url, title)) = Link attr txt (newUrl, title) + where + newUrl = if isValidURL (unpack url) then url else pack (unpack url ++ ".html") +linkParser x = x + +isValidURL :: String -> Bool +isValidURL url = url =~ ("^((https?|ftp)://)*[a-zA-Z0-9]+(\\.[a-zA-Z0-9]+)+([/?].*)?$" :: String)