pohjat/filters/allekirjoittajat.hs

48 lines
1.5 KiB
Haskell
Raw Normal View History

2023-01-11 07:41:24 +02:00
#!/usr/bin/env runhaskell
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE ViewPatterns #-}
import Text.Pandoc.JSON
import Text.Pandoc.Writers (writeLaTeX)
import Data.Text (Text)
import qualified Data.Text as T
import Data.Default (def)
import Text.Pandoc.Class (runPure)
import Data.Either (fromRight)
import System.Environment (getArgs)
main :: IO ()
main = do
format <- getFormat
toJSONFilter $ case format of
"latex" -> allekirjoittajat latex
_ -> id
getFormat :: IO String
getFormat = head <$> getArgs
latex blocks = RawBlock (Format "latex") $ T.intercalate "\n"
[ "\\vspace{1cm}"
, "\\begin{table}[H]"
, "Pöytäkirjan vakuudeksi,"
, "\\vspace{8mm}"
, "\\begin{center}"
, "\\begin{tabular}{p{0.45\\textwidth} p{0.45\\textwidth}}"
, format names
, "\\end{tabular}"
, "\\end{center}"
, "\\end{table}"]
where names = fromRight (error "conversion failed!") $
runPure $ mapM (writeLaTeX def . Pandoc mempty) blocks
format (x:y:ys) = "\\dotfill & \\dotfill \\\\\n" <> x <> " & " <> y <>
"\\vspace{0.8cm}\\\\\n" <> format ys
format [x] = "\\dotfill & \\\\\n" <> x <> " & \\\\\n"
format [] = ""
allekirjoittajat :: ([[Block]] -> Block) -> Block -> Block
allekirjoittajat f (Div (_, (elem "allekirjoittajat" -> True), _) [(OrderedList _ blocks)])
= f blocks
allekirjoittajat f (Div (_, (elem "allekirjoittajat" -> True), _) [(BulletList blocks)])
= f blocks
allekirjoittajat _ x = x