packages feed

mcp-server-0.1.0.19: src/MCP/Server/Derive/Internal.hs

{-# LANGUAGE OverloadedStrings #-}

module MCP.Server.Derive.Internal
  ( parseText
  , parseInt
  , parseInteger
  , parseDouble
  , parseFloat
  , parseBool
  ) where

import           Data.Text (Text)
import qualified Data.Text as T
import           Text.Read (readMaybe)

parseText :: Text -> Either Text Text
parseText = Right

parseInt :: Text -> Either Text Int
parseInt t = case readMaybe (T.unpack t) of
  Just v  -> Right v
  Nothing -> Left $ "Failed to parse Int from: " <> t

parseInteger :: Text -> Either Text Integer
parseInteger t = case readMaybe (T.unpack t) of
  Just v  -> Right v
  Nothing -> Left $ "Failed to parse Integer from: " <> t

parseDouble :: Text -> Either Text Double
parseDouble t = case readMaybe (T.unpack t) of
  Just v  -> Right v
  Nothing -> Left $ "Failed to parse Double from: " <> t

parseFloat :: Text -> Either Text Float
parseFloat t = case readMaybe (T.unpack t) of
  Just v  -> Right v
  Nothing -> Left $ "Failed to parse Float from: " <> t

parseBool :: Text -> Either Text Bool
parseBool t = case T.toLower t of
  "true"  -> Right True
  "false" -> Right False
  _       -> Left $ "Failed to parse Bool from: " <> t