Skip to content

Commit 51d48be

Browse files
committed
Prep for v3.1.0
1 parent a2a090c commit 51d48be

File tree

7 files changed

+49
-18
lines changed

7 files changed

+49
-18
lines changed

CHANGELOG.md

+5
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
# Changelog
22

3+
## v3.1.0 2022-12-10
4+
5+
- Transfer to __rowtype-yoga__.
6+
- Docs.
7+
38
## v3.0.1 2022-05-04
49

510
CI repair. Change `test.dhall` to `spago-dev.dhall`.

README.md

+10-9
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
# purescript-arraybuffer-builder
22

3-
[![CI](https://github.com/jamesdbrock/purescript-arraybuffer-builder/workflows/CI/badge.svg?branch=master)](https://github.com/jamesdbrock/purescript-arraybuffer-builder/actions)
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)
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)
56

67

78
[`ArrayBuffer`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer)
@@ -50,23 +51,23 @@ Encode a `String` as UTF8 with a length prefix into our `Builder`.
5051

5152
We give this as an example, rather than supporting it in the library, because
5253
it depends on
53-
[`Data.TextEncoding.encodeUtf8`](https://pursuit.purescript.org/packages/purescript-text-encoding/docs/Data.TextEncoding#v:encodeUtf8).
54+
[`Web.Encoding.TextEncoder`](https://pursuit.purescript.org/packages/purescript-web-encoding/docs/Web.Encoding.TextEncoder).
5455

5556
```purescript
5657
import Data.ArrayBuffer.Builder (PutM, putArrayBuffer, execPut)
5758
import Data.ArrayBuffer.Typed (buffer)
58-
import Data.TextEncoding (encodeUtf8)
5959
import Data.ArrayBuffer.ArrayBuffer (byteLength)
60+
import Web.Encoding.TextEncoder (new, textEncoder)
6061
6162
putStringUtf8 :: forall m. MonadEffect m => String -> PutM m Unit
6263
putStringUtf8 s = do
63-
let stringbuf = buffer $ encodeUtf8 s
64-
-- Put a 32-bit big-endian length prefix for the length of the utf8 string, in bytes.
64+
textEncoder <- liftEffect new
65+
let stringbuf = buffer $ encode s textEncoder
66+
-- Put a 32-bit big-endian length for the utf8 string, in bytes.
6567
putInt32be $ byteLength stringbuf
6668
putArrayBuffer stringbuf
6769
68-
do
69-
arraybuffer :: ArrayBuffer <- execPut $ putStringUtf8 "BLM"
70+
arraybuffer :: ArrayBuffer <- execPut $ putStringUtf8 "🦝"
7071
```
7172

7273
### Serialize an `Array Int`
@@ -85,7 +86,7 @@ import Data.Array (length)
8586
8687
putArrayInt32 :: forall m. MonadEffect m => Array Int -> PutM m Unit
8788
putArrayInt32 xs = do
88-
-- Put a 64-bit big-endian length prefix for the length of the array.
89+
-- Put a 64-bit big-endian length prefix for the array.
8990
putInt32be 0
9091
putInt32be $ length xs
9192
traverse_ putInt32be xs
@@ -105,7 +106,7 @@ import Data.Array (foldRecM)
105106
106107
putArrayInt32 :: forall m. MonadEffect m => MonadRec m => Array Int -> PutM m Unit
107108
putArrayInt32 xs = do
108-
-- Put a 64-bit big-endian length prefix for the length of the array.
109+
-- Put a 64-bit big-endian length prefix for the array.
109110
putInt32be 0
110111
putInt32be $ length xs
111112
foldRecM (\_ x -> putInt32be x) unit xs

bower.json

+3-3
Original file line numberDiff line numberDiff line change
@@ -14,16 +14,16 @@
1414
"output"
1515
],
1616
"dependencies": {
17-
"purescript-arraybuffer": "^v13.0.0",
17+
"purescript-arraybuffer": "^v13.1.1",
1818
"purescript-arraybuffer-types": "^v3.0.2",
1919
"purescript-effect": "^v4.0.0",
2020
"purescript-float32": "^v2.0.0",
2121
"purescript-identity": "^v6.0.0",
2222
"purescript-lists": "^v7.0.0",
2323
"purescript-maybe": "^v6.0.0",
2424
"purescript-newtype": "^v5.0.0",
25-
"purescript-prelude": "^v6.0.0",
26-
"purescript-tailrec": "^v6.0.0",
25+
"purescript-prelude": "^v6.0.1",
26+
"purescript-tailrec": "^v6.1.0",
2727
"purescript-transformers": "^v6.0.0",
2828
"purescript-uint": "^v7.0.0"
2929
}

packages.dhall

+2-2
Original file line numberDiff line numberDiff line change
@@ -117,8 +117,8 @@ let additions =
117117
-------------------------------
118118
-}
119119
let upstream =
120-
https://raw.githubusercontent.com/purescript/package-sets/psc-0.15.0-20220502/src/packages.dhall
121-
sha256:38d347aeba9fe6359c208abe87a5cecf1ffb14294f11ad19664ae35c59b6e29a
120+
https://raw.githubusercontent.com/purescript/package-sets/psc-0.15.4-20221209/src/packages.dhall
121+
sha256:b55c24bf585df4041ae6e87124cab7b35d474a9a77c9c3862ee6bf1dae618d72
122122

123123
let overrides = {=}
124124

spago-dev.dhall

+1
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,6 @@ in conf //
1515
, dependencies = conf.dependencies #
1616
[ "assert"
1717
, "arrays"
18+
, "web-encoding"
1819
]
1920
}

src/Data/ArrayBuffer/Builder.purs

+2-2
Original file line numberDiff line numberDiff line change
@@ -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 operations for working with `ArrayBuffer`, see
8+
-- | For other 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 __purescript-arraybuffer__.
11+
-- | in package __arraybuffer__.
1212
module Data.ArrayBuffer.Builder
1313
( PutM
1414
, Put

test/Main.purs

+26-2
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,20 @@ import Prelude
55
import Control.Monad.Writer.Trans (tell)
66
import Data.Array (foldRecM)
77
import Data.Array as Array
8-
import Data.ArrayBuffer.Builder (Builder, DataBuff(..), PutM, execPut, putInt16be, putInt32le, putInt8, subBuilder)
8+
import Data.ArrayBuffer.ArrayBuffer (byteLength)
9+
import Data.ArrayBuffer.Builder (Builder, DataBuff(..), PutM, execPut, putArrayBuffer, putInt16be, putInt32be, putInt32le, putInt8, subBuilder)
910
import Data.ArrayBuffer.Builder.Internal (cons, encodeInt8, execBuilder, length, singleton, (<>>))
1011
import Data.ArrayBuffer.DataView as DV
12+
import Data.ArrayBuffer.Typed (buffer)
1113
import Data.ArrayBuffer.Typed as AT
12-
import Data.ArrayBuffer.Types (ArrayBuffer, Uint8Array)
14+
import Data.ArrayBuffer.Typed as AV
15+
import Data.ArrayBuffer.Types (ArrayBuffer, Uint8Array, Int8Array)
1316
import Data.UInt as UInt
1417
import Effect (Effect)
18+
import Effect.Class (class MonadEffect, liftEffect)
1519
import Test.Assert (assertEqual')
20+
import Web.Encoding.TextEncoder (encode)
21+
import Web.Encoding.TextEncoder as TextEncoder
1622

1723
asBytes :: ArrayBuffer -> Effect (Array Int)
1824
asBytes x = do
@@ -120,3 +126,21 @@ main = do
120126
let stackblower = Array.replicate 20000 2
121127
putTest "Stack test" stackblower do
122128
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+
}

0 commit comments

Comments
 (0)