[haskell]Data.IniをつかってINIファイルを読み書き
Data.Iniを使ってINIファイルを読み書きできるようになりました。ただ、ちょっと不味かろう、使い勝手悪かろうというという後味。 Data.IniをつかってINIファイルを読み書き
Data.Iniを使ってINIファイルを読み書きできるようになりました。ただ、ちょっと不味かろう、使い勝手悪かろうというという後味。 Data.IniをつかってINIファイルを読み書き
ini形式のデータをパースして値を取得できるようにします。また、ファイルが無いときの例外キャッチをできるようにします。
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 28 29 30 31 32 33 34 |
{-# LANGUAGE ScopedTypeVariables #-} module Main where import qualified Data.HashMap as HM import qualified Data.Ini as Ini import qualified Data.Text as Tx import Control.Exception.Safe main::IO () main = do fi < - Ini.readIniFile "test.ini" `catch` (\(e::SomeException) -> do putStrLn $ displayException e return $ Ini.parseIni (Tx.pack "") ) case fi of Left fil -> putStrLn "" Right fir -> do putStrLn $ get (Tx.pack "あ") (Tx.pack "sessionId") fir putStrLn $ get (Tx.pack "い") (Tx.pack "sessionId") fir putStrLn $ getFromStr (Tx.pack "あ") return () where get::Tx.Text -> Tx.Text -> Ini.Ini -> String get section key ini = case Ini.lookupValue section key ini of Left l -> l Right r -> Tx.unpack r getFromStr::Tx.Text -> String getFromStr section = case Ini.parseIni (Tx.pack "[あ]\nhost=localhost\nport=6666\nsessionId=ない") of Left il -> il Right ir -> get section (Tx.pack "sessionId") ir |
[crayon-673ed2072 …