diff --git a/app/Utilities.hs b/app/Utilities.hs index d29e06d..b084ae7 100644 --- a/app/Utilities.hs +++ b/app/Utilities.hs @@ -17,8 +17,6 @@ import Development.Shake.FilePath ((<.>), ()) import qualified Development.Shake.FilePath as FP import HTML import Markdown -import Text.Pandoc (Block (Plain), Meta (..), MetaValue (..), Pandoc (..)) -import qualified Text.Pandoc as Pandoc import Text.Parsec hiding (Error) import Types @@ -46,46 +44,6 @@ markdownToHtml filePath = do let Right metadata = decodeEither' $ encodeUtf8 metadataText pure (metadata, compileToHTML document) -markdownToHtml_ :: (FromJSON a) => FilePath -> Action (a, Text) -markdownToHtml_ filePath = do - content <- Shake.readFile' filePath - Shake.quietly . Shake.traced "Markdown to HTML" $ do - pandoc@(Pandoc meta _) <- - runPandoc . Pandoc.readMarkdown readerOptions . T.pack $ content - -- WARNING markdown needs to have no whitespace before/after dashes - -- print meta - meta' <- fromMeta meta - html <- runPandoc . Pandoc.writeHtml5String writerOptions $ pandoc - return (meta', html) - where - readerOptions = - Pandoc.def - { Pandoc.readerStandalone = True, - Pandoc.readerExtensions = Pandoc.enableExtension Pandoc.Ext_yaml_metadata_block Pandoc.pandocExtensions - } - writerOptions = - Pandoc.def {Pandoc.writerExtensions = Pandoc.pandocExtensions} - fromMeta (Meta meta) = - A.fromJSON . A.toJSON <$> traverse metaValueToJSON meta >>= \case - Success res -> pure res - Error err -> fail $ "json conversion error:" <> err - metaValueToJSON = \case - MetaMap m -> A.toJSON <$> traverse metaValueToJSON m - MetaList m -> A.toJSONList <$> traverse metaValueToJSON m - MetaBool m -> pure $ A.toJSON m - MetaString m -> pure $ A.toJSON $ T.strip m - MetaInlines m -> metaValueToJSON $ MetaBlocks [Plain m] - MetaBlocks m -> - fmap (A.toJSON . T.strip) - . runPandoc - . Pandoc.writePlain Pandoc.def - $ Pandoc mempty m - -runPandoc :: Pandoc.PandocIO b -> IO b -runPandoc action = - Pandoc.runIO (Pandoc.setVerbosity Pandoc.ERROR >> action) - >>= either (fail . show) return - now :: Action T.Text now = Shake.liftIO $ fmap (T.pack . iso8601Show) getCurrentTime @@ -97,34 +55,6 @@ markdownToPost path = do let Right post = decodeEither' $ encodeUtf8 postData pure post -markdownToPost_ :: FilePath -> Action Post -markdownToPost_ path = do - content <- Shake.readFile' path - (Pandoc meta _) <- - Shake.liftIO . runPandoc . Pandoc.readMarkdown readerOptions . T.pack $ content - Shake.liftIO $ fromMeta meta - where - readerOptions = - Pandoc.def - { Pandoc.readerStandalone = True, - Pandoc.readerExtensions = Pandoc.enableExtension Pandoc.Ext_yaml_metadata_block Pandoc.pandocExtensions - } - fromMeta (Meta meta) = - A.fromJSON . A.toJSON <$> traverse metaValueToJSON meta >>= \case - Success res -> pure res - Error err -> fail $ "json conversion error:" <> err - metaValueToJSON = \case - MetaMap m -> A.toJSON <$> traverse metaValueToJSON m - MetaList m -> A.toJSONList <$> traverse metaValueToJSON m - MetaBool m -> pure $ A.toJSON m - MetaString m -> pure $ A.toJSON $ T.strip m - MetaInlines m -> metaValueToJSON $ MetaBlocks [Plain m] - MetaBlocks m -> - fmap (A.toJSON . T.strip) - . runPandoc - . Pandoc.writePlain Pandoc.def - $ Pandoc mempty m - yamlToPost :: FilePath -> Action Post yamlToPost path = do post <- decodeFileThrow path diff --git a/psb.cabal b/psb.cabal index ea74a56..b71aada 100644 --- a/psb.cabal +++ b/psb.cabal @@ -35,7 +35,7 @@ executable psb -- Other library packages from which modules are imported. -- https://hackage.haskell.org/package/texmath - build-depends: base >=4.17.2.1, mustache >=2.4.2, pandoc >=3.2.1, shake >= 0.19.8, deriving-aeson >= 0.2.9, aeson, text, time, unordered-containers, yaml, parsec >= 3.1.18.0, typst >= 0.6.1, typst-symbols >= 0.1.7 + build-depends: base >=4.17.2.1, mustache >=2.4.2, shake >= 0.19.8, deriving-aeson >= 0.2.9, aeson, text, time, unordered-containers, yaml, parsec >= 3.1.18.0 -- Directories containing source files. hs-source-dirs: app