Skip to content

Commit f071376

Browse files
zephyros-devsparkprime
authored andcommitted
Add objectKeysValues, objectKeysValuesAll
1 parent d18761f commit f071376

File tree

4 files changed

+151
-0
lines changed

4 files changed

+151
-0
lines changed

doc/_stdlib_gen/stdlib-content.jsonnet

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,15 @@ local html = import 'html.libsonnet';
9797
Returns an array of the values in the given object. Does not include hidden fields.
9898
|||,
9999
},
100+
{
101+
name: 'objectKeysValues',
102+
params: ['o'],
103+
availableSince: 'upcoming',
104+
description: |||
105+
Returns an array of objects from the given object, each object having two fields:
106+
<code>key</code> (string) and <code>value</code> (object). Does not include hidden fields.
107+
|||,
108+
},
100109
{
101110
name: 'objectHasAll',
102111
params: ['o', 'f'],
@@ -119,6 +128,14 @@ local html = import 'html.libsonnet';
119128
As <code>std.objectValues</code> but also includes hidden fields.
120129
|||,
121130
},
131+
{
132+
name: 'objectKeysValuesAll',
133+
params: ['o'],
134+
availableSince: 'upcoming',
135+
description: |||
136+
As <code>std.objectKeysValues</code> but also includes hidden fields.
137+
|||,
138+
},
122139
{
123140
name: 'prune',
124141
params: ['a'],

doc/ref/stdlib.html

Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -259,6 +259,34 @@ <h4 id="objectValues">
259259
</div>
260260
</div>
261261

262+
<div class="hgroup">
263+
<div class="hgroup-inline">
264+
<div class="panel">
265+
<h4 id="objectKeysValues">
266+
std.objectKeysValues(o)
267+
</h4>
268+
</div>
269+
<div style="clear: both"></div>
270+
</div>
271+
</div>
272+
<div class="hgroup">
273+
<div class="hgroup-inline">
274+
<div class="panel">
275+
<p>
276+
<em>
277+
Available in upcoming release.
278+
</em>
279+
</p>
280+
<p>
281+
Returns an array of objects from the given object, each object having two fields:
282+
<code>key</code> (string) and <code>value</code> (object). Does not include hidden fields.
283+
</p>
284+
285+
</div>
286+
<div style="clear: both"></div>
287+
</div>
288+
</div>
289+
262290
<div class="hgroup">
263291
<div class="hgroup-inline">
264292
<div class="panel">
@@ -330,6 +358,33 @@ <h4 id="objectValuesAll">
330358
</div>
331359
</div>
332360

361+
<div class="hgroup">
362+
<div class="hgroup-inline">
363+
<div class="panel">
364+
<h4 id="objectKeysValuesAll">
365+
std.objectKeysValuesAll(o)
366+
</h4>
367+
</div>
368+
<div style="clear: both"></div>
369+
</div>
370+
</div>
371+
<div class="hgroup">
372+
<div class="hgroup-inline">
373+
<div class="panel">
374+
<p>
375+
<em>
376+
Available in upcoming release.
377+
</em>
378+
</p>
379+
<p>
380+
As <code>std.objectKeysValues</code> but also includes hidden fields.
381+
</p>
382+
383+
</div>
384+
<div style="clear: both"></div>
385+
</div>
386+
</div>
387+
333388
<div class="hgroup">
334389
<div class="hgroup-inline">
335390
<div class="panel">
@@ -2344,6 +2399,33 @@ <h4 id="any">
23442399
</div>
23452400
</div>
23462401

2402+
<div class="hgroup">
2403+
<div class="hgroup-inline">
2404+
<div class="panel">
2405+
<h4 id="sum">
2406+
std.sum(arr)
2407+
</h4>
2408+
</div>
2409+
<div style="clear: both"></div>
2410+
</div>
2411+
</div>
2412+
<div class="hgroup">
2413+
<div class="hgroup-inline">
2414+
<div class="panel">
2415+
<p>
2416+
<em>
2417+
Available since version v0.19.2.
2418+
</em>
2419+
</p>
2420+
<p>
2421+
Return sum of all element in <code>arr</code>.
2422+
</p>
2423+
2424+
</div>
2425+
<div style="clear: both"></div>
2426+
</div>
2427+
</div>
2428+
23472429

23482430
<div class="hgroup">
23492431
<div class="hgroup-inline">
@@ -2604,6 +2686,40 @@ <h4 id="md5">
26042686
</div>
26052687

26062688

2689+
<div class="hgroup">
2690+
<div class="hgroup-inline">
2691+
<div class="panel">
2692+
<h3 id="booleans">
2693+
Booleans
2694+
</h3>
2695+
</div>
2696+
<div style="clear: both"></div>
2697+
</div>
2698+
</div>
2699+
2700+
<div class="hgroup">
2701+
<div class="hgroup-inline">
2702+
<div class="panel">
2703+
<h4 id="xor">
2704+
std.xor(x, y)
2705+
</h4>
2706+
</div>
2707+
<div style="clear: both"></div>
2708+
</div>
2709+
</div>
2710+
<div class="hgroup">
2711+
<div class="hgroup-inline">
2712+
<div class="panel">
2713+
<p>
2714+
Returns the xor of the two given booleans.
2715+
</p>
2716+
2717+
</div>
2718+
<div style="clear: both"></div>
2719+
</div>
2720+
</div>
2721+
2722+
26072723
<div class="hgroup">
26082724
<div class="hgroup-inline">
26092725
<div class="panel">

stdlib/std.jsonnet

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1539,6 +1539,12 @@ limitations under the License.
15391539
objectValuesAll(o)::
15401540
[o[k] for k in std.objectFieldsAll(o)],
15411541

1542+
objectKeysValues(o)::
1543+
[{ key: k, value: o[k] } for k in std.objectFields(o)],
1544+
1545+
objectKeysValuesAll(o)::
1546+
[{ key: k, value: o[k] } for k in std.objectFieldsAll(o)],
1547+
15421548
equals(a, b)::
15431549
local ta = std.type(a);
15441550
local tb = std.type(b);

test_suite/stdlib.jsonnet

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,18 @@ std.assertEqual(std.objectValues({ x::: 1 } { x: 1 }), [1]) &&
168168
std.assertEqual(std.objectValues({ x::: 1 } { x:: 1 }), []) &&
169169
std.assertEqual(std.objectValues({ x::: 1 } { x::: 1 }), [1]) &&
170170

171+
std.assertEqual(std.objectKeysValues({}), []) &&
172+
std.assertEqual(std.objectKeysValues({ x: 1, y: 2 }), [{ key: 'x', value: 1 }, { key: 'y', value: 2 }]) &&
173+
std.assertEqual(std.objectKeysValues({ x: 1 } { x: 1 }), [{ key: 'x', value: 1 }]) &&
174+
std.assertEqual(std.objectKeysValues({ x: 1 } { x:: 1 }), []) &&
175+
std.assertEqual(std.objectKeysValues({ x: 1 } { x::: 1 }), [{ key: 'x', value: 1 }]) &&
176+
std.assertEqual(std.objectKeysValues({ x:: 1 } { x: 1 }), []) &&
177+
std.assertEqual(std.objectKeysValues({ x:: 1 } { x:: 1 }), []) &&
178+
std.assertEqual(std.objectKeysValues({ x:: 1 } { x::: 1 }), [{ key: 'x', value: 1 }]) &&
179+
std.assertEqual(std.objectKeysValues({ x::: 1 } { x: 1 }), [{ key: 'x', value: 1 }]) &&
180+
std.assertEqual(std.objectKeysValues({ x::: 1 } { x:: 1 }), []) &&
181+
std.assertEqual(std.objectKeysValues({ x::: 1 } { x::: 1 }), [{ key: 'x', value: 1 }]) &&
182+
171183
std.assertEqual(std.get({ x: 1, y: 2 }, 'x', 5), 1) &&
172184
std.assertEqual(std.get({ x: 1, y: 2 }, 'z', 5), 5) &&
173185
std.assertEqual(std.get({ x: 1, y: 2 }, 'z'), null) &&

0 commit comments

Comments
 (0)