ip-1.7.8: test/Naive.hs
module Naive where
import Data.ByteString (ByteString)
import Data.Text (Text)
import qualified Data.Text as Text
import Data.Text.Encoding (encodeUtf8)
import qualified Net.IPv4 as IPv4
import Net.Types (IPv4 (..))
import Text.Read (readMaybe)
encodeByteString :: IPv4 -> ByteString
encodeByteString = encodeUtf8 . encodeText
encodeText :: IPv4 -> Text
encodeText i =
Text.pack $
concat
[ show a
, "."
, show b
, "."
, show c
, "."
, show d
]
where
(a, b, c, d) = IPv4.toOctets i
decodeText :: Text -> Maybe IPv4
decodeText t =
case mapM (readMaybe . Text.unpack) (Text.splitOn (Text.pack ".") t) of
Just [a, b, c, d] -> Just (IPv4.fromOctets a b c d)
_ -> Nothing