Skip to content

Commit 18b553a

Browse files
feat(stdlib): Add addCharFromCodePoint to Buffer module (#1883)
Co-authored-by: Oscar Spencer <oscar.spen@gmail.com>
1 parent fb12efb commit 18b553a

File tree

3 files changed

+51
-0
lines changed

3 files changed

+51
-0
lines changed

compiler/test/stdlib/buffer.test.gr

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ include "string"
55
include "buffer"
66
include "bytes"
77
include "int32"
8+
include "char"
89

910
// it should have 0 length when buffer is created
1011
assert Buffer.length(Buffer.make(0)) == 0
@@ -320,6 +321,24 @@ let buf = Buffer.make(0)
320321
Buffer.addChar(char, buf)
321322
assert Buffer.toString(buf) == "🍞"
322323

324+
// addCharFromCodePoint
325+
let char = Char.code('a') // 1 byte
326+
let buf = Buffer.make(0)
327+
Buffer.addCharFromCodePoint(char, buf)
328+
assert Buffer.toString(buf) == "a"
329+
let char = Char.code('©') // 2 bytes
330+
let buf = Buffer.make(0)
331+
Buffer.addCharFromCodePoint(char, buf)
332+
assert Buffer.toString(buf) == "©"
333+
let char = Char.code('✨') // 3 bytes
334+
let buf = Buffer.make(0)
335+
Buffer.addCharFromCodePoint(char, buf)
336+
assert Buffer.toString(buf) == "✨"
337+
let char = Char.code('🍞') // 4 bytes
338+
let buf = Buffer.make(0)
339+
Buffer.addCharFromCodePoint(char, buf)
340+
assert Buffer.toString(buf) == "🍞"
341+
323342
// addBuffer
324343
let buf0 = Buffer.make(0)
325344
Buffer.addString("✨", buf0)

stdlib/buffer.gr

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -322,6 +322,18 @@ provide let addChar = (char, buffer) => {
322322
addString(Char.toString(char), buffer)
323323
}
324324

325+
/**
326+
* Appends a character represented by a code point to a buffer.
327+
*
328+
* @param codePoint: The code point to append to the buffer
329+
* @param buffer: The buffer to mutate
330+
*
331+
* @since v0.6.0
332+
*/
333+
provide let addCharFromCodePoint = (codePoint: Number, buffer) => {
334+
addChar(Char.fromCode(codePoint), buffer)
335+
}
336+
325337
/**
326338
* Appends the bytes of a subset of a string to a buffer.
327339
*

stdlib/buffer.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -331,6 +331,26 @@ Parameters:
331331
|`char`|`Char`|The character to append to the buffer|
332332
|`buffer`|`Buffer`|The buffer to mutate|
333333

334+
### Buffer.**addCharFromCodePoint**
335+
336+
<details disabled>
337+
<summary tabindex="-1">Added in <code>next</code></summary>
338+
No other changes yet.
339+
</details>
340+
341+
```grain
342+
addCharFromCodePoint : (codePoint: Number, buffer: Buffer) => Void
343+
```
344+
345+
Appends a character represented by a code point to a buffer.
346+
347+
Parameters:
348+
349+
|param|type|description|
350+
|-----|----|-----------|
351+
|`codePoint`|`Number`|The code point to append to the buffer|
352+
|`buffer`|`Buffer`|The buffer to mutate|
353+
334354
### Buffer.**addStringSlice**
335355

336356
<details>

0 commit comments

Comments
 (0)