ip 1.7.2 → 1.7.3
raw patch · 2 files changed
+15/−1 lines, 2 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- Net.IP: instance GHC.Arr.Ix Net.IP.IP
- Net.IPv4: instance GHC.Arr.Ix Net.IPv4.IPv4
- Net.IPv6: instance GHC.Arr.Ix Net.IPv6.IPv6
- Net.Mac: instance GHC.Arr.Ix Net.Mac.Mac
+ Net.IP: instance GHC.Ix.Ix Net.IP.IP
+ Net.IPv4: instance GHC.Ix.Ix Net.IPv4.IPv4
+ Net.IPv6: instance GHC.Ix.Ix Net.IPv6.IPv6
+ Net.Mac: decodeOctets :: ByteString -> Maybe Mac
+ Net.Mac: encodeShort :: Mac -> ShortText
+ Net.Mac: instance GHC.Ix.Ix Net.Mac.Mac
Files
- ip.cabal +1/−1
- src/Net/Mac.hs +14/−0
ip.cabal view
@@ -1,6 +1,6 @@ cabal-version: 2.2 name: ip-version: 1.7.2+version: 1.7.3 synopsis: Library for IP and MAC addresses homepage: https://github.com/andrewthad/haskell-ip#readme license: BSD-3-Clause
src/Net/Mac.hs view
@@ -29,6 +29,8 @@ , builder , parser , parserWith+ -- ** ShortText+ , encodeShort -- ** UTF-8 ByteString , encodeUtf8 , encodeWithUtf8@@ -39,6 +41,7 @@ , parserWithUtf8 -- ** ByteString , decodeBytes+ , decodeOctets -- ** UTF-8 Bytes , boundedBuilderUtf8 , decodeUtf8Bytes@@ -59,15 +62,18 @@ import Data.Aeson (ToJSONKeyFunction(..),FromJSONKeyFunction(..)) import Data.Bits ((.|.),unsafeShiftL,unsafeShiftR,(.&.)) import Data.ByteString (ByteString)+import Data.ByteString.Short.Internal (ShortByteString(SBS)) import Data.Char (ord,chr) import Data.Data (Data) import Data.Hashable (Hashable) import Data.Ix (Ix)+import Data.Primitive.ByteArray (ByteArray(ByteArray)) import Data.Primitive.Types (Prim(..)) #if !MIN_VERSION_base(4,11,0) import Data.Semigroup ((<>)) #endif import Data.Text (Text)+import Data.Text.Short (ShortText) import Data.Word import Data.Word.Synthetic.Word12 (Word12) import GHC.Enum (predError, succError)@@ -77,6 +83,7 @@ import Text.ParserCombinators.ReadPrec (prec,step) import Text.Read (Read(..),Lexeme(Ident),lexP,parens) +import qualified Arithmetic.Nat as Nat import qualified Data.Aeson as Aeson import qualified Data.Aeson.Types as Aeson import qualified Data.Attoparsec.ByteString as AB@@ -93,6 +100,7 @@ import qualified Data.Text.Builder.Fixed as TFB import qualified Data.Text.IO as TIO import qualified Data.Text.Lazy.Builder as TBuilder+import qualified Data.Text.Short.Unsafe as TS import qualified Data.Text as Text () -- $setup@@ -414,6 +422,12 @@ decodeLenientUtf8 :: ByteString -> Maybe Mac decodeLenientUtf8 bs = rightToMaybe (AB.parseOnly (parserLenientUtf8 <* AB.endOfInput) bs)++-- | Encode a 'Mac' address as colon-separated hexadecimal octets,+-- preferring lowercase for alphabetical characters.+encodeShort :: Mac -> ShortText+encodeShort !m = case BBB.run Nat.constant (boundedBuilderUtf8 m) of+ ByteArray x -> TS.fromShortByteStringUnsafe (SBS x) -- | Encode a 'Mac' address as colon-separated hexadecimal octets, -- preferring lowercase for alphabetical characters.