generated from tpl/purs
fix: pad start with zeros
This commit is contained in:
parent
af76dc3b27
commit
c479776340
@ -23,9 +23,8 @@ import Data.Show.Generic (genericShow)
|
|||||||
import Data.String as String
|
import Data.String as String
|
||||||
import Data.Traversable (for, traverse)
|
import Data.Traversable (for, traverse)
|
||||||
import Data.Tuple.Nested ((/\))
|
import Data.Tuple.Nested ((/\))
|
||||||
import Effect (Effect)
|
|
||||||
import Effect.Unsafe (unsafePerformEffect)
|
import Effect.Unsafe (unsafePerformEffect)
|
||||||
import Node.Buffer (Buffer, BufferValueType(..))
|
import Node.Buffer (BufferValueType(..))
|
||||||
import Node.Buffer as Buffer
|
import Node.Buffer as Buffer
|
||||||
import Node.Buffer.Immutable (ImmutableBuffer)
|
import Node.Buffer.Immutable (ImmutableBuffer)
|
||||||
import Node.Buffer.Immutable as Buffer.Immutable
|
import Node.Buffer.Immutable as Buffer.Immutable
|
||||||
@ -181,6 +180,9 @@ derive instance Eq Segment
|
|||||||
instance Show Segment where
|
instance Show Segment where
|
||||||
show = genericShow
|
show = genericShow
|
||||||
|
|
||||||
|
segmentZero :: Segment
|
||||||
|
segmentZero = Segment ConB VoA ConB VoA ConB
|
||||||
|
|
||||||
segmentBits :: Segment -> Int
|
segmentBits :: Segment -> Int
|
||||||
segmentBits (Segment a b c d e) =
|
segmentBits (Segment a b c d e) =
|
||||||
let
|
let
|
||||||
@ -231,6 +233,16 @@ derive instance Eq Proquint
|
|||||||
instance Show Proquint where
|
instance Show Proquint where
|
||||||
show = genericShow
|
show = genericShow
|
||||||
|
|
||||||
|
pad :: Int -> Proquint -> Proquint
|
||||||
|
pad n pq@(Proquint segs) =
|
||||||
|
let
|
||||||
|
len = Array.length segs
|
||||||
|
in
|
||||||
|
if len < n then
|
||||||
|
Proquint $ Array.replicate (n - len) segmentZero <> segs
|
||||||
|
else
|
||||||
|
pq
|
||||||
|
|
||||||
toString :: Proquint -> String
|
toString :: Proquint -> String
|
||||||
toString (Proquint segments) = intercalate "-" $ map segmentToString segments
|
toString (Proquint segments) = intercalate "-" $ map segmentToString segments
|
||||||
|
|
||||||
@ -246,12 +258,12 @@ fromInt n = fromBits $ unsafePerformEffect do
|
|||||||
|
|
||||||
toInt :: Proquint -> Maybe Int
|
toInt :: Proquint -> Maybe Int
|
||||||
toInt pq@(Proquint segs)
|
toInt pq@(Proquint segs)
|
||||||
| Array.length segs <= 2 = Int.fromNumber $ Buffer.Immutable.read UInt32BE 0 $ toBits pq
|
| Array.length segs <= 2 = Int.fromNumber $ Buffer.Immutable.read UInt32BE 0 $ toBits $ pad 2 pq
|
||||||
| otherwise = Nothing
|
| otherwise = Nothing
|
||||||
|
|
||||||
toBigInt :: Proquint -> Maybe BigInt
|
toBigInt :: Proquint -> Maybe BigInt
|
||||||
toBigInt pq@(Proquint segs)
|
toBigInt pq@(Proquint segs)
|
||||||
| Array.length segs <= 4 = Just $ Buffer.Immutable.BigInt.readBigUInt64BE 0 $ toBits pq
|
| Array.length segs <= 4 = Just $ Buffer.Immutable.BigInt.readBigUInt64BE 0 $ toBits $ pad 4 pq
|
||||||
| otherwise = Nothing
|
| otherwise = Nothing
|
||||||
|
|
||||||
fromBigInt :: BigInt -> Proquint
|
fromBigInt :: BigInt -> Proquint
|
||||||
|
Loading…
Reference in New Issue
Block a user