>>> maybe (putStrLn "nope") IPv4.printRange $ Parser.parseBytesMaybe (IPv4.parserRangeUtf8Bytes ()) (Ascii.fromString "192.168.0.0/16") 192.168.0.0/16 >>> maybe (putStrLn "nope") IPv4.printRange $ Parser.parseBytesMaybe (IPv4.parserRangeUtf8Bytes ()) (Ascii.fromString "10.10.10.1") nopeSee parserRangeUtf8BytesLenient for a variant that treats a missing mask as a /32 mask.
>>> maybe (putStrLn "nope") IPv4.printRange $ Parser.parseBytesMaybe (IPv4.parserRangeUtf8BytesLenient ()) (Ascii.fromString "192.168.0.0/16") 192.168.0.0/16 >>> maybe (putStrLn "nope") IPv4.printRange $ Parser.parseBytesMaybe (IPv4.parserRangeUtf8BytesLenient ()) (Ascii.fromString "10.10.10.1") 10.10.10.1/32
>>> Parser.parseBytes (IPv4.parserUtf8Bytes ()) (Ascii.fromString "10.0.1.254") Success (Slice {offset = 10, length = 0, value = ipv4 10 0 1 254})
>>> maybe (putStrLn "nope") IPv6.printRange $ Parser.parseBytesMaybe (IPv6.parserRangeUtf8Bytes ()) (Ascii.fromString "1b02:f001:5:200b::/80") 1b02:f001:5:200b::/80 >>> maybe (putStrLn "nope") IPv6.printRange $ Parser.parseBytesMaybe (IPv6.parserRangeUtf8Bytes ()) (Ascii.fromString "abcd::") nopeSee parserRangeUtf8BytesLenient for a variant that treats a missing mask as a /32 mask.
>>> maybe (putStrLn "nope") IPv6.printRange $ Parser.parseBytesMaybe (IPv6.parserRangeUtf8BytesLenient ()) (Ascii.fromString "1b02:f001:5:200b::/80") 1b02:f001:5:200b::/80 >>> maybe (putStrLn "nope") IPv6.printRange $ Parser.parseBytesMaybe (IPv6.parserRangeUtf8BytesLenient ()) (Ascii.fromString "abcd::") abcd::/128
>>> let str = "dead:beef:3240:a426:ba68:1cd0:4263:109b -> alive" >>> Parser.parseBytes (parserUtf8Bytes ()) (Ascii.fromString str) Success (Slice {offset = 39, length = 9, value = ipv6 0xdead 0xbeef 0x3240 0xa426 0xba68 0x1cd0 0x4263 0x109b})This does not currently support parsing embedded IPv4 address (e.g. ff00:8000:abc::224.1.2.3).
>>> Parser.parseBytes (Mac.parserUtf8Bytes ()) (Ascii.fromString "de:ad:BE:EF:1:23") Success (Slice {offset = 16, length = 0, value = mac 0xdeadbeef0123})
>>> p1 = Mac.parserWith Mac.defCodec >>> AT.parseOnly p1 (Text.pack "a4:7f:24:7a:b4:23") Right (mac 0xa47f247ab423)
>>> p2 = Mac.parserWith (Mac.MacCodec Mac.MacGroupingNoSeparator False) >>> AT.parseOnly p2 (Text.pack "a47f247ab423") Right (mac 0xa47f247ab423)