From 84b725a13d59da81ce3b197640c547b286f167cf Mon Sep 17 00:00:00 2001 From: Joe Hildebrand Date: Mon, 6 Jan 2025 11:43:36 -0700 Subject: [PATCH] Add example for encoding Buffer. Fixes #56 --- README.md | 13 +++++++------ examples/encodeOnly.js | 11 +++++++++++ 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 6d0a846..99fc974 100644 --- a/README.md +++ b/README.md @@ -159,14 +159,15 @@ type. In this case, call `registerEncoder(type, encodeFunction)`. The `toCBOR` above: ```js +import {Buffer} from 'node:buffer'; import {registerEncoder} from 'cbor2/encoder'; -class Bar { - constructor() { - this.three = 3; - } -} -registerEncoder(Bar, (b, _writer, _options) => [NaN, b.three]); +registerEncoder(Buffer, b => [ + // Don't write a tag + NaN, + // New view on the ArrayBuffer, without copying bytes + new Uint8Array(b.buffer, b.byteOffset, b.byteLength), +]); ``` ## Adding new decoders diff --git a/examples/encodeOnly.js b/examples/encodeOnly.js index e9e1c10..3ba0236 100644 --- a/examples/encodeOnly.js +++ b/examples/encodeOnly.js @@ -1,5 +1,6 @@ import 'cbor2/types'; import {encode, registerEncoder} from 'cbor2/encoder'; +import {Buffer} from 'node:buffer'; class Bar { constructor() { @@ -7,5 +8,15 @@ class Bar { } } registerEncoder(Bar, b => [9999, b.today]); +registerEncoder(Buffer, b => [ + // Don't write a tag + NaN, + // New view on the ArrayBuffer, without copying bytes + new Uint8Array(b.buffer, b.byteOffset, b.byteLength), +]); console.log(encode(new Bar())); + +const buf1 = Buffer.from('0102030405060708090a', 'hex'); +const buf2 = buf1.subarray(2, 8); +console.log(encode(buf2));