From 68899f0c1ba4f641c376fda1e51d9694b02b9c5d Mon Sep 17 00:00:00 2001 From: pacien Date: Mon, 17 Feb 2020 18:09:20 +0100 Subject: compiler: add a prefix setting for tags generated from parent dirs GitHub: closes #59 --- compiler/src/Config.hs | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) (limited to 'compiler/src/Config.hs') diff --git a/compiler/src/Config.hs b/compiler/src/Config.hs index 4826f17..bf5a28e 100644 --- a/compiler/src/Config.hs +++ b/compiler/src/Config.hs @@ -19,17 +19,24 @@ module Config ( GalleryConfig(..) , CompilerConfig(..) + , TagsFromDirectoriesConfig(..) + , Resolution(..) , readConfig ) where import GHC.Generics (Generic) -import Data.Aeson (FromJSON, withObject, (.:?), (.!=)) +import Data.Aeson (ToJSON, FromJSON, withObject, (.:?), (.!=)) import qualified Data.Aeson as JSON import Files (FileName) import Input (decodeYamlFile) -import Resource (Resolution(..)) + + +data Resolution = Resolution + { width :: Int + , height :: Int + } deriving (Generic, Show, ToJSON, FromJSON) data CompilerConfig = CompilerConfig @@ -37,7 +44,7 @@ data CompilerConfig = CompilerConfig , excludedDirectories :: [String] , includedFiles :: [String] , excludedFiles :: [String] - , tagsFromDirectories :: Int + , tagsFromDirectories :: TagsFromDirectoriesConfig , thumbnailMaxResolution :: Resolution , pictureMaxResolution :: Maybe Resolution } deriving (Generic, Show) @@ -48,11 +55,22 @@ instance FromJSON CompilerConfig where <*> v .:? "excludedDirectories" .!= [] <*> v .:? "includedFiles" .!= ["*"] <*> v .:? "excludedFiles" .!= [] - <*> v .:? "tagsFromDirectories" .!= 0 + <*> v .:? "tagsFromDirectories" .!= (TagsFromDirectoriesConfig 0 "") <*> v .:? "thumbnailMaxResolution" .!= (Resolution 400 300) <*> v .:? "pictureMaxResolution" +data TagsFromDirectoriesConfig = TagsFromDirectoriesConfig + { fromParents :: Int + , prefix :: String + } deriving (Generic, Show) + +instance FromJSON TagsFromDirectoriesConfig where + parseJSON = withObject "TagsFromDirectoriesConfig" $ \v -> TagsFromDirectoriesConfig + <$> v .:? "fromParents" .!= 0 + <*> v .:? "prefix" .!= "" + + data GalleryConfig = GalleryConfig { compiler :: CompilerConfig , viewer :: JSON.Object -- cgit v1.2.3