Skip to content

Commit 2a12328

Browse files
committed
Add Dict.size
1 parent 593af93 commit 2a12328

File tree

4 files changed

+31
-0
lines changed

4 files changed

+31
-0
lines changed

lib/es6/Stdlib_Dict.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,10 @@ function $$delete$1(dict, string) {
55
delete(dict[string]);
66
}
77

8+
function size(dict) {
9+
return Object.keys(dict).length;
10+
}
11+
812
function forEach(dict, f) {
913
Object.values(dict).forEach(value => f(value));
1014
}
@@ -24,6 +28,7 @@ function mapValues(dict, f) {
2428

2529
export {
2630
$$delete$1 as $$delete,
31+
size,
2732
forEach,
2833
forEachWithKey,
2934
mapValues,

lib/js/Stdlib_Dict.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,10 @@ function $$delete$1(dict, string) {
55
delete(dict[string]);
66
}
77

8+
function size(dict) {
9+
return Object.keys(dict).length;
10+
}
11+
812
function forEach(dict, f) {
913
Object.values(dict).forEach(value => f(value));
1014
}
@@ -23,6 +27,7 @@ function mapValues(dict, f) {
2327
}
2428

2529
exports.$$delete = $$delete$1;
30+
exports.size = size;
2631
exports.forEach = forEach;
2732
exports.forEachWithKey = forEachWithKey;
2833
exports.mapValues = mapValues;

runtime/Stdlib_Dict.res

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ let delete = (dict, string) => {
1818

1919
@val external keysToArray: dict<'a> => array<string> = "Object.keys"
2020

21+
let size = dict => dict->keysToArray->Stdlib_Array.length
22+
2123
@val external valuesToArray: dict<'a> => array<'a> = "Object.values"
2224

2325
@val external assign: (dict<'a>, dict<'a>) => dict<'a> = "Object.assign"

runtime/Stdlib_Dict.resi

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,25 @@ Console.log(keys) // Logs `["someKey", "someKey2"]` to the console
144144
@val
145145
external keysToArray: dict<'a> => array<string> = "Object.keys"
146146

147+
/**
148+
`size(dictionary)` returns the number of key/value pairs in the dictionary.
149+
150+
## Examples
151+
```rescript
152+
let dict = Dict.make()
153+
dict->Dict.size->assertEqual(0)
154+
155+
dict->Dict.set("someKey", 1)
156+
dict->Dict.set("someKey2", 2)
157+
dict->Dict.size->assertEqual(2)
158+
159+
// After deleting a key
160+
dict->Dict.delete("someKey")
161+
dict->Dict.size->assertEqual(1)
162+
```
163+
*/
164+
let size: dict<'a> => int
165+
147166
/**
148167
`valuesToArray(dictionary)` returns an array of all the values of the dictionary.
149168

0 commit comments

Comments
 (0)