module Rules.Vendor (
    rules
) where

import           Hakyll

import           Control.Monad   (zipWithM_)
import           System.FilePath (joinPath)

vendRule :: Pattern -> FilePath -> Rules ()
vendRule :: Pattern -> String -> Rules ()
vendRule Pattern
inpat String
outpath = Pattern -> Rules () -> Rules ()
match Pattern
inpat (Rules () -> Rules ()) -> Rules () -> Rules ()
forall a b. (a -> b) -> a -> b
$ do
    Routes -> Rules ()
route (Routes -> Rules ()) -> Routes -> Rules ()
forall a b. (a -> b) -> a -> b
$ String -> Routes
constRoute String
outpath
    Compiler (Item String) -> Rules ()
forall a.
(Binary a, Typeable a, Writable a) =>
Compiler (Item a) -> Rules ()
compile Compiler (Item String)
compressCssCompiler

rules :: Bool -> Rules ()
rules :: Bool -> Rules ()
rules Bool
True = do
    Pattern -> Rules () -> Rules ()
match (String -> Pattern
fromGlob (String -> Pattern) -> String -> Pattern
forall a b. (a -> b) -> a -> b
$ [String] -> String
joinPath [String
"node_modules", String
"katex", String
"dist", String
"katex.min.js"]) (Rules () -> Rules ()) -> Rules () -> Rules ()
forall a b. (a -> b) -> a -> b
$ do
        Routes -> Rules ()
route (Routes -> Rules ()) -> Routes -> Rules ()
forall a b. (a -> b) -> a -> b
$ String -> (String -> String) -> Routes
gsubRoute String
"node_modules/katex/dist/" (String -> String -> String
forall a b. a -> b -> a
const String
"vendor/katex/")
        Compiler (Item CopyFile) -> Rules ()
forall a.
(Binary a, Typeable a, Writable a) =>
Compiler (Item a) -> Rules ()
compile Compiler (Item CopyFile)
copyFileCompiler
    Pattern -> Rules () -> Rules ()
match (String -> Pattern
fromGlob (String -> Pattern) -> String -> Pattern
forall a b. (a -> b) -> a -> b
$ [String] -> String
joinPath [String
"node_modules", String
"katex", String
"dist", String
"contrib", String
"auto-render.min.js"]) (Rules () -> Rules ()) -> Rules () -> Rules ()
forall a b. (a -> b) -> a -> b
$ do
        Routes -> Rules ()
route (Routes -> Rules ()) -> Routes -> Rules ()
forall a b. (a -> b) -> a -> b
$ String -> (String -> String) -> Routes
gsubRoute String
"node_modules/katex/dist/contrib/" (String -> String -> String
forall a b. a -> b -> a
const String
"vendor/katex/")
        Compiler (Item CopyFile) -> Rules ()
forall a.
(Binary a, Typeable a, Writable a) =>
Compiler (Item a) -> Rules ()
compile Compiler (Item CopyFile)
copyFileCompiler
    Bool -> Rules ()
rules Bool
False
rules Bool
False = do
    (Pattern -> String -> Rules ())
-> [Pattern] -> [String] -> Rules ()
forall (m :: * -> *) a b c.
Applicative m =>
(a -> b -> m c) -> [a] -> [b] -> m ()
zipWithM_ Pattern -> String -> Rules ()
vendRule
       [ Pattern
fontAwesomeSVGPath
       , Pattern
bulmaToolTipPath
       , Pattern
highlightPath
       , Pattern
katexCssPath
       ]
       [ [String] -> String
joinPath [String
"vendor", String
"fontawesome", String
"style.css"]
       , [String] -> String
joinPath [String
"vendor", String
"bulma", String
"bulma-tooltip.min.css"]
       , [String] -> String
joinPath [String
"vendor", String
"highlight", String
"highlight.css"]
       , [String] -> String
joinPath [String
"vendor", String
"katex", String
"katex.min.css"]
       ]

    Pattern -> Rules () -> Rules ()
match (String -> Pattern
fromGlob (String -> Pattern) -> String -> Pattern
forall a b. (a -> b) -> a -> b
$ [String] -> String
joinPath [String
"node_modules", String
"katex", String
"dist", String
"fonts", String
"**"]) (Rules () -> Rules ()) -> Rules () -> Rules ()
forall a b. (a -> b) -> a -> b
$ do
        Routes -> Rules ()
route (Routes -> Rules ()) -> Routes -> Rules ()
forall a b. (a -> b) -> a -> b
$ String -> (String -> String) -> Routes
gsubRoute String
"node_modules/katex/dist/" (String -> String -> String
forall a b. a -> b -> a
const String
"vendor/katex/")
        Compiler (Item CopyFile) -> Rules ()
forall a.
(Binary a, Typeable a, Writable a) =>
Compiler (Item a) -> Rules ()
compile Compiler (Item CopyFile)
copyFileCompiler

    Pattern -> Rules () -> Rules ()
match (String -> Pattern
fromGlob (String -> Pattern) -> String -> Pattern
forall a b. (a -> b) -> a -> b
$ [String] -> String
joinPath [String
"node_modules", String
"d3", String
"dist", String
"d3.min.js"]) (Rules () -> Rules ()) -> Rules () -> Rules ()
forall a b. (a -> b) -> a -> b
$ do
        Routes -> Rules ()
route (Routes -> Rules ()) -> Routes -> Rules ()
forall a b. (a -> b) -> a -> b
$ String -> (String -> String) -> Routes
gsubRoute String
"node_modules/d3/dist/" (String -> String -> String
forall a b. a -> b -> a
const String
"vendor/d3/")
        Compiler (Item CopyFile) -> Rules ()
forall a.
(Binary a, Typeable a, Writable a) =>
Compiler (Item a) -> Rules ()
compile Compiler (Item CopyFile)
copyFileCompiler

    Pattern -> Rules () -> Rules ()
match (String -> Pattern
fromGlob (String -> Pattern) -> String -> Pattern
forall a b. (a -> b) -> a -> b
$ [String] -> String
joinPath [String
"node_modules", String
"mathjs", String
"lib", String
"browser", String
"math.js"]) (Rules () -> Rules ()) -> Rules () -> Rules ()
forall a b. (a -> b) -> a -> b
$ do
        Routes -> Rules ()
route (Routes -> Rules ()) -> Routes -> Rules ()
forall a b. (a -> b) -> a -> b
$ String -> (String -> String) -> Routes
gsubRoute String
"node_modules/mathjs/lib/browser/" (String -> String -> String
forall a b. a -> b -> a
const String
"vendor/mathjs/")
        Compiler (Item CopyFile) -> Rules ()
forall a.
(Binary a, Typeable a, Writable a) =>
Compiler (Item a) -> Rules ()
compile Compiler (Item CopyFile)
copyFileCompiler
    where
        fontAwesomeSVGPath :: Pattern
fontAwesomeSVGPath = String -> Pattern
fromGlob (String -> Pattern) -> String -> Pattern
forall a b. (a -> b) -> a -> b
$ [String] -> String
joinPath
            [String
"node_modules", String
"@fortawesome", String
"fontawesome-svg-core", String
"styles.css"]
        bulmaToolTipPath :: Pattern
bulmaToolTipPath = String -> Pattern
fromGlob (String -> Pattern) -> String -> Pattern
forall a b. (a -> b) -> a -> b
$ [String] -> String
joinPath
            [String
"node_modules", String
"@creativebulma", String
"bulma-tooltip", String
"dist", String
"bulma-tooltip.min.css"]
        katexCssPath :: Pattern
katexCssPath = String -> Pattern
fromGlob (String -> Pattern) -> String -> Pattern
forall a b. (a -> b) -> a -> b
$ [String] -> String
joinPath
            [String
"node_modules", String
"katex", String
"dist", String
"katex.min.css"]
        highlightPath :: Pattern
highlightPath = String -> Pattern
fromGlob (String -> Pattern) -> String -> Pattern
forall a b. (a -> b) -> a -> b
$ [String] -> String
joinPath
            [String
"external", String
"hakyll-css", String
"css", String
"tango.css"]