From c4eb771fa09e3972106d80ada6b3c4a023b85249 Mon Sep 17 00:00:00 2001 From: Joris Date: Sun, 30 Aug 2015 21:17:27 +0200 Subject: Fetch perfumes according to multiple materials --- src/Model/Perfume.hs | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 src/Model/Perfume.hs (limited to 'src/Model/Perfume.hs') diff --git a/src/Model/Perfume.hs b/src/Model/Perfume.hs new file mode 100644 index 0000000..0f99b55 --- /dev/null +++ b/src/Model/Perfume.hs @@ -0,0 +1,36 @@ +{-# LANGUAGE OverloadedStrings #-} + +module Model.Perfume + ( Perfume(..) + , csvPerfumes + , getCommonPerfumes + ) where + +import Data.Text (Text) +import qualified Data.Text as T + +import Model.URL + +import CSV + +data Perfume = Perfume + { name :: Text + , url :: URL + } deriving (Eq, Show) + +csvPerfumes :: [Perfume] -> Text +csvPerfumes = getCsv . map (\perfume -> [name perfume, url perfume]) + +getCommonPerfumes :: [[Perfume]] -> [Perfume] +getCommonPerfumes (perfumes1:perfumesSequences) = + filter + (\p1 -> + all + (\perfumes2 -> + any + (\p2 -> name p1 == name p2) + perfumes2 + ) + perfumesSequences + ) + perfumes1 -- cgit v1.2.3