From 174e2bd9db351e2a9b2dd9415505572ef091e2ac Mon Sep 17 00:00:00 2001 From: "Yann Esposito (Yogsototh)" Date: Sun, 27 Oct 2019 16:29:56 +0100 Subject: [PATCH] generation --- app/Main.hs | 38 +++++++++--- resources/example.tpl | 130 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 160 insertions(+), 8 deletions(-) create mode 100644 resources/example.tpl diff --git a/app/Main.hs b/app/Main.hs index a1fd4ba..955d8f9 100644 --- a/app/Main.hs +++ b/app/Main.hs @@ -4,27 +4,49 @@ module Main where import Protolude -import Data.Prizm.Color (HexRGB (..)) -import qualified Data.Text as Text -import qualified Data.Text.Format as Format -import System.Environment (getArgs) +import Data.Prizm.Color (HexRGB (..)) +import qualified Data.Text as Text +import qualified Data.Text.Format as Format +import qualified Data.Text.Lazy.IO as LazyIO +import qualified Data.Text.Lazy as LazyText +import System.Environment (getArgs) import Lib main :: IO () main = do args <- getArgs + tpl <- toS <$> LazyIO.readFile "resources/example.tpl" case args of - [dark,light,accent] -> showPalette dark light accent + [dark,light,accent] -> genPaletteFile tpl (dark,light,accent) + ["all"] -> traverse_ (genPaletteFile tpl) allColors _ -> do putText "Please give 3 colors in HEX format, dark, light and an accent color; you have given" print args -showPalette :: [Char] -> [Char] -> [Char] -> IO () -showPalette dark light accent = do +allColors :: [([Char],[Char],[Char])] +allColors = [(dark,light,accent) | dark <- colors, light <- colors, accent <- colors ] + where + colors = ['#':r:v:b:[] | r <- ['0','2','4','6','8','A','C','E'] + , v <- ['0','2','4','6','8','A','C','E'] + , b <- ['0','2','4','6','8','A','C','E'] + ] + +genPaletteFile :: Text -> ([Char],[Char],[Char]) -> IO () +genPaletteFile tpl (dark,light,accent) = do + let palette = map toS $ genAnnotatedPalette dark light accent + html = Text.replace "$palette$" (Text.intercalate "\n\t" palette) tpl + filename = Format.format "palette-{}-{}-{}.html" (drop 1 dark, + drop 1 light, + drop 1 accent) + LazyIO.writeFile (toS filename) (toS html) + putText (toS filename) + +genAnnotatedPalette :: [Char] -> [Char] -> [Char] -> [Text] +genAnnotatedPalette dark light accent = do let d = HexRGB (toS dark) l = HexRGB (toS light) c = HexRGB (toS accent) palette = map unHexRGB $ genExtendedPalette d l c annotated = zip extendedPaletteLabels palette - traverse_ (Format.print "--{}: {};\n" ) annotated + map (toS . Format.format "--{}: {};\n") annotated diff --git a/resources/example.tpl b/resources/example.tpl new file mode 100644 index 0000000..4ad5a75 --- /dev/null +++ b/resources/example.tpl @@ -0,0 +1,130 @@ + + + + + +
+
base03
+
base02
+
base01
+
base00
+
base0
+
base1
+
base2
+
base3
+
magenta
+
red
+
orange
+
yellow
+
green
+
cyan
+
blue
+
violet
+
magenta-d
+
red-d
+
orange-d
+
yellow-d
+
green-d
+
cyan-d
+
blue-d
+
violet-d
+
magenta-l
+
red-l
+
orange-l
+
yellow-l
+
green-l
+
cyan-l
+
blue-l
+
violet-l
+
+
+
base03
+
base02
+
base01
+
base00
+
base0
+
base1
+
base2
+
base3
+
magenta
+
red
+
orange
+
yellow
+
green
+
cyan
+
blue
+
violet
+
magenta-d
+
red-d
+
orange-d
+
yellow-d
+
green-d
+
cyan-d
+
blue-d
+
violet-d
+
magenta-l
+
red-l
+
orange-l
+
yellow-l
+
green-l
+
cyan-l
+
blue-l
+
violet-l
+
+ +