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