git.iko.soy/rowtype-yoga/purescript-arraybuffer-builder
on a2a090c help sign in
7 files changed+21−55
since splitsnapshots
unifiedsplit
CHANGELOG.md−5 README.md+12−16 bower.json+3−3 packages.dhall+2−2 spago-dev.dhall−1 src/Data/ArrayBuffer/Builder.purs+2−2 test/Main.purs+2−26
CHANGELOG.md−5
@@ -1,10 +1,5 @@
11# Changelog
22
3−## v3.1.0 2022-12-10
4−
5−- Transfer to __rowtype-yoga__.
6−- Docs.
7−
83## v3.0.1 2022-05-04
94
105CI repair. Change `test.dhall` to `spago-dev.dhall`.
README.md+12−16
@@ -1,8 +1,7 @@
11# purescript-arraybuffer-builder
22
3−[![CI](https://github.com/rowtype-yoga/purescript-arraybuffer-builder/workflows/CI/badge.svg?branch=master)](https://github.com/rowtype-yoga/purescript-arraybuffer-builder/actions)
3+[![CI](https://github.com/jamesdbrock/purescript-arraybuffer-builder/workflows/CI/badge.svg?branch=master)](https://github.com/jamesdbrock/purescript-arraybuffer-builder/actions)
44[![Pursuit](http://pursuit.purescript.org/packages/purescript-arraybuffer-builder/badge)](http://pursuit.purescript.org/packages/purescript-arraybuffer-builder/)
5−[![Maintainer: jamesdbrock](https://img.shields.io/badge/maintainer-jamesdbrock-teal.svg)](https://github.com/jamesdbrock)
65
76
87[`ArrayBuffer`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer)
@@ -51,26 +50,23 @@ Encode a `String` as UTF8 with a length prefix into our `Builder`.
5150
5251We give this as an example, rather than supporting it in the library, because
5352it depends on
54−[`Web.Encoding.TextEncoder`](https://pursuit.purescript.org/packages/purescript-web-encoding/docs/Web.Encoding.TextEncoder).
53+[`Data.TextEncoding.encodeUtf8`](https://pursuit.purescript.org/packages/purescript-text-encoding/docs/Data.TextEncoding#v:encodeUtf8).
5554
5655```purescript
57−import Effect.Class (class MonadEffect, liftEffect)
58−import Data.UInt (fromInt)
59−import Data.ArrayBuffer.Types (ArrayBuffer(..))
60−import Data.ArrayBuffer.Builder (PutM, putArrayBuffer, execPut, putUint32be)
56+import Data.ArrayBuffer.Builder (PutM, putArrayBuffer, execPut)
6157import Data.ArrayBuffer.Typed (buffer)
58+import Data.TextEncoding (encodeUtf8)
6259import Data.ArrayBuffer.ArrayBuffer (byteLength)
63−import Web.Encoding.TextEncoder (new, TextEncoder, encode)
6460
6561putStringUtf8 :: forall m. MonadEffect m => String -> PutM m Unit
6662putStringUtf8 s = do
67− textEncoder <- liftEffect new
68− let stringbuf = buffer $ encode s textEncoder
69− -- Put a 32-bit big-endian length for the utf8 string, in bytes.
70− putUint32be $ fromInt $ byteLength stringbuf
63+ let stringbuf = buffer $ encodeUtf8 s
64+ -- Put a 32-bit big-endian length prefix for the length of the utf8 string, in bytes.
65+ putInt32be $ byteLength stringbuf
7166 putArrayBuffer stringbuf
7267
73−arraybuffer :: ArrayBuffer <- execPut $ putStringUtf8 "🦝"
68+do
69+ arraybuffer :: ArrayBuffer <- execPut $ putStringUtf8 "BLM"
7470```
7571
7672### Serialize an `Array Int`
@@ -89,7 +85,7 @@ import Data.Array (length)
8985
9086putArrayInt32 :: forall m. MonadEffect m => Array Int -> PutM m Unit
9187putArrayInt32 xs = do
92− -- Put a 64-bit big-endian length prefix for the array.
88+ -- Put a 64-bit big-endian length prefix for the length of the array.
9389 putInt32be 0
9490 putInt32be $ length xs
9591 traverse_ putInt32be xs
@@ -109,7 +105,7 @@ import Data.Array (foldRecM)
109105
110106putArrayInt32 :: forall m. MonadEffect m => MonadRec m => Array Int -> PutM m Unit
111107putArrayInt32 xs = do
112− -- Put a 64-bit big-endian length prefix for the array.
108+ -- Put a 64-bit big-endian length prefix for the length of the array.
113109 putInt32be 0
114110 putInt32be $ length xs
115111 foldRecM (\_ x -> putInt32be x) unit xs
@@ -124,7 +120,7 @@ of the `PutM` builder expression are stack-safe.
124120
125121This package is only for writing `ArrayBuffer`s, not reading them.
126122See
127−[__parsing-dataview__](https://pursuit.purescript.org/packages/purescript-parsing-dataview/)
123+[__purescript-parsing-dataview__](https://pursuit.purescript.org/packages/purescript-parsing-dataview/)
128124for a way to deserialize from `ArrayBuffer` back to Purescript data.
129125
130126## Alternative packages for serializing to an `ArrayBuffer`
bower.json+3−3
@@ -14,7 +14,7 @@
1414 "output"
1515 ],
1616 "dependencies": {
17− "purescript-arraybuffer": "^v13.1.1",
17+ "purescript-arraybuffer": "^v13.0.0",
1818 "purescript-arraybuffer-types": "^v3.0.2",
1919 "purescript-effect": "^v4.0.0",
2020 "purescript-float32": "^v2.0.0",
@@ -22,8 +22,8 @@
2222 "purescript-lists": "^v7.0.0",
2323 "purescript-maybe": "^v6.0.0",
2424 "purescript-newtype": "^v5.0.0",
25− "purescript-prelude": "^v6.0.1",
26− "purescript-tailrec": "^v6.1.0",
25+ "purescript-prelude": "^v6.0.0",
26+ "purescript-tailrec": "^v6.0.0",
2727 "purescript-transformers": "^v6.0.0",
2828 "purescript-uint": "^v7.0.0"
2929 }
packages.dhall+2−2
@@ -117,8 +117,8 @@ let additions =
117117-------------------------------
118118-}
119119let upstream =
120− https://raw.githubusercontent.com/purescript/package-sets/psc-0.15.4-20221209/src/packages.dhall
121− sha256:b55c24bf585df4041ae6e87124cab7b35d474a9a77c9c3862ee6bf1dae618d72
120+ https://raw.githubusercontent.com/purescript/package-sets/psc-0.15.0-20220502/src/packages.dhall
121+ sha256:38d347aeba9fe6359c208abe87a5cecf1ffb14294f11ad19664ae35c59b6e29a
122122
123123let overrides = {=}
124124
spago-dev.dhall−1
@@ -15,6 +15,5 @@ in conf //
1515 , dependencies = conf.dependencies #
1616 [ "assert"
1717 , "arrays"
18− , "web-encoding"
1918 ]
2019 }
src/Data/ArrayBuffer/Builder.purs+2−2
@@ -5,10 +5,10 @@
55-- | Writing to an `ArrayBuffer` is an `Effect`ful activity, so most
66-- | functions in this module must be run in a `MonadEffect` context.
77-- |
8−-- | For other operations for working with `ArrayBuffer`, see
8+-- | For operations for working with `ArrayBuffer`, see
99-- | module
1010-- | [`Data.ArrayBuffer.ArrayBuffer`](https://pursuit.purescript.org/packages/purescript-arraybuffer/docs/Data.ArrayBuffer.ArrayBuffer)
11−-- | in package __arraybuffer__.
11+-- | in package __purescript-arraybuffer__.
1212module Data.ArrayBuffer.Builder
1313 ( PutM
1414 , Put
test/Main.purs+2−26
@@ -5,20 +5,14 @@ import Prelude
55import Control.Monad.Writer.Trans (tell)
66import Data.Array (foldRecM)
77import Data.Array as Array
8−import Data.ArrayBuffer.ArrayBuffer (byteLength)
9−import Data.ArrayBuffer.Builder (Builder, DataBuff(..), PutM, execPut, putArrayBuffer, putInt16be, putInt32be, putInt32le, putInt8, subBuilder)
8+import Data.ArrayBuffer.Builder (Builder, DataBuff(..), PutM, execPut, putInt16be, putInt32le, putInt8, subBuilder)
109import Data.ArrayBuffer.Builder.Internal (cons, encodeInt8, execBuilder, length, singleton, (<>>))
1110import Data.ArrayBuffer.DataView as DV
12−import Data.ArrayBuffer.Typed (buffer)
1311import Data.ArrayBuffer.Typed as AT
14−import Data.ArrayBuffer.Typed as AV
15−import Data.ArrayBuffer.Types (ArrayBuffer, Uint8Array, Int8Array)
12+import Data.ArrayBuffer.Types (ArrayBuffer, Uint8Array)
1613import Data.UInt as UInt
1714import Effect (Effect)
18−import Effect.Class (class MonadEffect, liftEffect)
1915import Test.Assert (assertEqual')
20−import Web.Encoding.TextEncoder (encode)
21−import Web.Encoding.TextEncoder as TextEncoder
2216
2317asBytes :: ArrayBuffer -> Effect (Array Int)
2418asBytes x = do
@@ -126,21 +120,3 @@ main = do
126120 let stackblower = Array.replicate 20000 2
127121 putTest "Stack test" stackblower do
128122 foldRecM (\_ x -> putInt8 x) unit stackblower
129−
130− do
131− let
132− putStringUtf8 :: forall m. MonadEffect m => String -> PutM m Unit
133− putStringUtf8 s = do
134− textEncoder <- liftEffect TextEncoder.new
135− let stringbuf = buffer $ encode s textEncoder
136− -- Put a 32-bit big-endian length prefix for the length of the utf8 string, in bytes.
137− putInt32be $ byteLength stringbuf
138− putArrayBuffer stringbuf
139−
140− arraybuffer :: ArrayBuffer <- execPut $ putStringUtf8 "🦝"
141− view :: Int8Array <- AV.whole arraybuffer
142− viewarray <- AV.toArray view
143− assertEqual' "utf-8 test"
144− { actual: viewarray
145− , expected: [ 0, 0, 0, 4, -16, -97, -90, -99 ]
146− }