asif-1.0.0: src/Arbor/File/Format/Asif/Data/Ip.hs
module Arbor.File.Format.Asif.Data.Ip
( stringToIpv4
, ipv4ToString
, word32ToIpv4
, ipv4ToWord32
) where
import Arbor.File.Format.Asif.Data.Read
import Data.IP
import Data.Word
import System.Endian
import Text.Read
stringToIpv4 :: String -> Maybe IPv4
stringToIpv4 str = if '.' `elem` str
then readMaybe str
else word32ToIpv4 <$> stringToAnyDigits str
ipv4ToString :: IPv4 -> String
ipv4ToString = show
word32ToIpv4 :: Word32 -> IPv4
word32ToIpv4 = fromHostAddress . toBE32
ipv4ToWord32 :: IPv4 -> Word32
ipv4ToWord32 = fromBE32 . toHostAddress