Skip to content

Commit 9b6e506

Browse files
committed
Add Dict.size
1 parent bed98ab commit 9b6e506

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
@@ -145,6 +145,25 @@ Console.log(keys) // Logs `["someKey", "someKey2"]` to the console
145145
@val
146146
external keysToArray: dict<'a> => array<string> = "Object.keys"
147147

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

0 commit comments

Comments
 (0)