summaryrefslogtreecommitdiff
path: root/hs/Data/Ini/Config/URIDict.hs
blob: 9f35b0e033bd72df4a27d4158995ccbc092177a4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
{-# LANGUAGE ImportQualifiedPost #-}

module Data.Ini.Config.URIDict
  ( uriDictParser
  ) where

import Control.Lens
import Data.Foldable (toList)
import Data.Ini.Config
import Data.Ini.Config.KeyValue
import Data.Map (Map)
import Data.Map qualified as Map
import Data.Maybe         (isJust, fromJust)
import Data.Text   hiding (filter)
import Network.URI        (URI, parseURI)

uriDictParser :: SectionParser (Map String URI)
-- uriDictParser = fromList . filter (isJust . snd) . fmap (_2 %~ parseURI) $ kvParser
-- uriDictParser = fmap  kvParser
uriDictParser = fmap (Map.fromList) 
              $ fmap (fmap (_2 %~ fromJust))
              $ fmap (filter (isJust . snd))
              $ fmap toList
              $ fmap (fmap (_1 %~ unpack . strip)) 
              $ fmap (fmap (_2 %~ parseURI . unpack . strip)) 
              -- $ fmap (fmap (_2 .~ Just nullURI)) 
              $ kvParser