From 0b2f6fb420d213b4ee718b9ac79cc3f9fa7678d5 Mon Sep 17 00:00:00 2001 From: pacien Date: Wed, 25 Dec 2019 21:04:31 +0100 Subject: compiler: refactor transform stages --- compiler/src/Resource.hs | 58 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 compiler/src/Resource.hs (limited to 'compiler/src/Resource.hs') diff --git a/compiler/src/Resource.hs b/compiler/src/Resource.hs new file mode 100644 index 0000000..04e315a --- /dev/null +++ b/compiler/src/Resource.hs @@ -0,0 +1,58 @@ +{-# LANGUAGE DuplicateRecordFields, DeriveGeneric, DeriveAnyClass #-} + +-- ldgallery - A static generator which turns a collection of tagged +-- pictures into a searchable web gallery. +-- +-- Copyright (C) 2019 Pacien TRAN-GIRARD +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU Affero General Public License as +-- published by the Free Software Foundation, either version 3 of the +-- License, or (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU Affero General Public License for more details. +-- +-- You should have received a copy of the GNU Affero General Public License +-- along with this program. If not, see . + + +module Resource + ( ResourceTree(..) + , buildResourceTree + ) where + + +import Data.Function ((&)) +import Files +import Input + + +-- | Tree representing the compiled gallery resources. +data ResourceTree = + ItemResource + { sidecar :: Sidecar + , path :: Path + , itemThumbnailPath :: Path } + | DirResource + { items :: [ResourceTree] + , path :: Path + , dirThumbnailPath :: Maybe Path } + deriving Show + + + -- TODO: actually generate compilation strategies +buildResourceTree :: InputTree -> ResourceTree +buildResourceTree = resNode + where + resNode (InputFile path sidecar) = + ItemResource sidecar (itemsDir /> path) (thumbnailsDir /> path) + + resNode (InputDir path thumbnailPath items) = + map resNode items + & \dirItems -> DirResource dirItems (itemsDir /> path) Nothing + + itemsDir = "items" + thumbnailsDir = "thumbnails" -- cgit v1.2.3