{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE NoImplicitPrelude #-}

module Neuron.Zettelkasten.Markdown
  ( neuronMMarkExts,
  )
where

import Neuron.Zettelkasten.Config (Config (..))
import Relude
import qualified Text.MMark as MMark
import qualified Text.MMark.Extension.Common as Ext

neuronMMarkExts :: Config -> [MMark.Extension]
neuronMMarkExts :: Config -> [Extension]
neuronMMarkExts Config {..} =
  [Extension]
defaultExts
    [Extension] -> [Extension] -> [Extension]
forall a. Semigroup a => a -> a -> a
<> [Extension] -> [Extension] -> Bool -> [Extension]
forall a. a -> a -> Bool -> a
bool [] [Maybe Char -> Extension
Ext.mathJax (Char -> Maybe Char
forall a. a -> Maybe a
Just '$')] Bool
mathJaxSupport

defaultExts :: [MMark.Extension]
defaultExts :: [Extension]
defaultExts =
  [ Extension
Ext.fontAwesome,
    Extension
Ext.footnotes,
    Extension
Ext.kbd,
    Extension
Ext.linkTarget,
    Extension
Ext.punctuationPrettifier,
    Extension
Ext.skylighting
  ]