1- {-# LANGUAGE DeriveAnyClass #-}
2- {-# LANGUAGE DeriveGeneric #-}
1+
2+
33{-# LANGUAGE FlexibleInstances #-}
4- {-# LANGUAGE TemplateHaskell #-}
4+
55{-# LANGUAGE TypeFamilies #-}
66{-# LANGUAGE OverloadedStrings #-}
77
@@ -26,7 +26,7 @@ import Prelude
2626
2727import qualified Data.Map as Map
2828import Data.Maybe (Maybe (.. ), fromMaybe )
29- import Data.Text (Text , pack , unpack )
29+ import Data.Text (Text , unpack )
3030
3131import Control.Monad (join )
3232
@@ -36,27 +36,27 @@ import qualified Accessability.Data.User as U
3636
3737-- | Determines the value of a POI based on the users properties
3838evaluatePOI :: [U. UserProperty ] -> [Attribute ] -> ItemValue
39- evaluatePOI aup aav = foldr mappend mempty (( evaluateUserProperty $ toAttributeValueMap aav) <$> aup )
39+ evaluatePOI aup aav = mconcat ( evaluateUserProperty ( toAttributeValueMap aav) <$> aup )
4040
4141 where
4242
4343 toAttributeValueMap :: [Attribute ] -> Map. Map Text Attribute
44- toAttributeValueMap a = Map. fromList $ (\ av-> (( fromMaybe " " (attributeAttributeId av) ), av)) <$> a
44+ toAttributeValueMap a = Map. fromList $ (\ av-> (fromMaybe " " (attributeAttributeId av), av)) <$> a
4545
4646 evaluateUserProperty :: Map. Map Text Attribute -> U. UserProperty -> ItemValue
4747 evaluateUserProperty msa up = case join $ Map. lookup <$> Just (U. propertyAttributeId up) <*> Just msa of
4848 Nothing -> ItemValue {positive = 0 , negative = 0 , unknown = 1 }
49- Just a -> if ( evaluate up a)
49+ Just a -> if evaluate up a
5050 then ItemValue {positive = 1 , negative = 0 , unknown = 0 }
5151 else ItemValue {positive = 0 , negative = 1 , unknown = 0 }
5252
5353 evaluate :: U. UserProperty-> Attribute -> Bool
54- evaluate up av = fromMaybe False (notit <$> Just (U. propertyNegate up)
55- <*> (operate <$> Just (U. propertyOperation up)
56- <*> ( attributeValue av)
57- <*> Just (U. propertyValue up)
58- <*> Just (U. propertyValue1 up)
59- <*> ( Just (attributeTypeof av) )))
54+ evaluate up av = Just True == (notit <$> Just (U. propertyNegate up)
55+ <*> (operate <$> Just (U. propertyOperation up)
56+ <*> attributeValue av
57+ <*> Just (U. propertyValue up)
58+ <*> Just (U. propertyValue1 up)
59+ <*> Just (attributeTypeof av)))
6060
6161 -- Logical xor
6262 notit :: Bool -> Bool -> Bool
@@ -66,20 +66,20 @@ evaluatePOI aup aav = foldr mappend mempty ((evaluateUserProperty $ toAttributeV
6666 operate :: U. Operation-> Text -> Text -> Maybe Text -> AttributeType -> Bool
6767 operate U. EQ v1 v2 _ TextType = v1 == v2
6868 operate U. EQ v1 v2 _ BooleanType = v1 == v2
69- operate U. EQ v1 v2 _ NumberType = ((read $ unpack v1):: Float ) == ( read $ unpack v2)
69+ operate U. EQ v1 v2 _ NumberType = ((read $ unpack v1):: Float ) == read ( unpack v2)
7070 operate U. LT v1 v2 _ TextType = v1 < v2
71- operate U. LT v1 v2 _ BooleanType = False
72- operate U. LT v1 v2 _ NumberType = ((read $ unpack v1):: Float ) < ( read $ unpack v2)
71+ operate U. LT _ _ _ BooleanType = False
72+ operate U. LT v1 v2 _ NumberType = ((read $ unpack v1):: Float ) < read ( unpack v2)
7373 operate U. LTE v1 v2 _ TextType = v1 <= v2
74- operate U. LTE v1 v2 _ BooleanType = False
75- operate U. LTE v1 v2 _ NumberType = ((read $ unpack v1):: Float ) <= ( read $ unpack v2)
74+ operate U. LTE _ _ _ BooleanType = False
75+ operate U. LTE v1 v2 _ NumberType = ((read $ unpack v1):: Float ) <= read ( unpack v2)
7676 operate U. GT v1 v2 _ TextType = v1 > v2
77- operate U. GT v1 v2 _ BooleanType = False
78- operate U. GT v1 v2 _ NumberType = ((read $ unpack v1):: Float ) > ( read $ unpack v2)
77+ operate U. GT _ _ _ BooleanType = False
78+ operate U. GT v1 v2 _ NumberType = ((read $ unpack v1):: Float ) > read ( unpack v2)
7979 operate U. GTE v1 v2 _ TextType = v1 >= v2
80- operate U. GTE v1 v2 _ BooleanType = False
81- operate U. GTE v1 v2 _ NumberType = ((read $ unpack v1):: Float ) >= ( read $ unpack v2)
80+ operate U. GTE _ _ _ BooleanType = False
81+ operate U. GTE v1 v2 _ NumberType = ((read $ unpack v1):: Float ) >= read ( unpack v2)
8282 operate U. IN v1 v21 (Just v22) TextType = v1 >= v21 && v1 <= v22
83- operate U. IN v1 v21 (Just v22 ) BooleanType = False
84- operate U. IN v1 v21 (Just v22) NumberType = ((read $ unpack v1):: Float ) > ( read $ unpack v21) && ((read $ unpack v1):: Float ) < ( read $ unpack v22)
83+ operate U. IN _ _ (Just _ ) BooleanType = False
84+ operate U. IN v1 v21 (Just v22) NumberType = ((read $ unpack v1):: Float ) > read ( unpack v21) && ((read $ unpack v1):: Float ) < read ( unpack v22)
8585 operate U. IN _ _ Nothing _ = False
0 commit comments