Skip to content

Commit 2310bba

Browse files
committed
README improvements
1 parent 8b615d1 commit 2310bba

File tree

1 file changed

+26
-20
lines changed

1 file changed

+26
-20
lines changed

README.md

Lines changed: 26 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,11 @@ Parse values out of a `dataview :: Data.ArrayBuffer.Types.DataView`. All
2727
Parse two big-endian IEEE 754 double-precision floats.
2828

2929
```purescript
30+
import Text.Parsing.Parser (runParserT)
31+
import Text.Parsing.Parser.DataView (anyFloat64be)
32+
3033
do
31-
result <- Text.Parsing.Parser.runParserT dataview $ do
34+
result <- runParserT dataview $ do
3235
float1 <- anyFloat64be
3336
float2 <- anyFloat64be
3437
pure $ Tuple float1 float2
@@ -39,8 +42,12 @@ do
3942
Parse an array of `n` 32-bit signed integers.
4043

4144
```purescript
45+
import Text.Parsing.Parser (runParserT)
46+
import Text.Parsing.Parser.DataView (anyUint32be)
47+
import Data.Unfoldable (replicateA)
48+
4249
do
43-
result <- Text.Parsing.Parser.runParserT dataview $ replicateA n anyInt32be
50+
result <- runParserT dataview $ replicateA n anyInt32be
4451
```
4552

4653
### Parse UTF8
@@ -52,33 +59,37 @@ it depends on
5259
[`Data.TextDecoding.decodeUtf8`](https://pursuit.purescript.org/packages/purescript-text-encoding/docs/Data.TextDecoding#v:decodeUtf8).
5360

5461
```purescript
55-
import Effect (Effect, liftEffect)
5662
import Control.Monad.Trans.Class (lift)
63+
import Data.ArrayBuffer.Types (DataView, Uint8Array)
64+
import Data.ArrayBuffer.DataView (buffer, byteOffset, byteLength)
65+
import Data.ArrayBuffer.Typed (part)
66+
import Effect (Effect, liftEffect)
67+
import Text.Parsing.Parser (runParserT, fail)
68+
import Text.Parsing.Parser.DataView (anyUint32be, takeN)
69+
import Data.UInt (toInt)
70+
import Data.Text.Decoding (decodeUtf8)
71+
5772
58-
mkTypedArray :: Data.ArrayBuffer.Types.DataView -> Effect Data.ArrayBuffer.Types.Uint8Array
59-
mkTypedArray dv = do
60-
let buffer = Data.ArrayBuffer.DataView.buffer dv
61-
byteOffset = Data.ArrayBuffer.DataView.byteOffset dv
62-
byteLength = Data.ArrayBuffer.DataView.byteLength dv
63-
Data.ArrayBuffer.Typed.part buffer byteOffset byteLength
73+
mkUint8Array :: DataView -> Effect Uint8Array
74+
mkUint8Array dv = part (buffer dv) (byteOffset dv) (byteLength dv)
6475
6576
do
66-
result <- Text.Parsing.Parser.runParserT dataview $ do
77+
result <- runParserT dataview $ do
6778
-- Parse a 32-bit big-endian length prefix for the length of the utf8 string,
6879
-- in bytes.
6980
length <- anyUint32be
70-
stringview <- takeN $ UInt.toInt length
71-
stringarray <- lift $ liftEffect $ mkTypedArray stringview
72-
case Data.TextDecoding.decodeUtf8 stringarray of
73-
Left err -> Data.Parsing.Parser.fail $ show err
81+
stringview <- takeN $ toInt length
82+
stringarray <- lift $ liftEffect $ mkUint8Array stringview
83+
case decodeUtf8 stringarray of
84+
Left err -> fail $ show err
7485
Right s -> pure s
7586
```
7687

7788
## Serialization
7889

7990
This package is for reading (`DataView`s on) `ArrayBuffer`s, not writing
8091
them. See the package
81-
[__purescript-arraybuffer-builder__](https://pursuit.purescript.org/packages/purescript-arraybuffer-builder/)
92+
[__arraybuffer-builder__](https://pursuit.purescript.org/packages/purescript-arraybuffer-builder/)
8293
for a way to
8394
serialize and build `ArrayBuffer`s.
8495

@@ -88,8 +99,3 @@ serialize and build `ArrayBuffer`s.
8899
* [MDN `ArrayBuffer`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer)
89100
* [MDN `DataView`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView)
90101

91-
## Notes
92-
93-
Perhaps some day this package can be
94-
[merged into __purescript-parsing__](https://github.com/purescript-contrib/purescript-parsing/issues/88),
95-
but for now it has too many non-*purescript-contrib* dependencies.

0 commit comments

Comments
 (0)