Skip to content

Commit 52ee407

Browse files
committed
FEAT: added supplement mezzanine function which appends a value into a block if not yet present
resolves: Oldes/Rebol-wishes#11
1 parent 285ae9b commit 52ee407

File tree

3 files changed

+32
-5
lines changed

3 files changed

+32
-5
lines changed

src/mezz/mezz-series.reb

+17
Original file line numberDiff line numberDiff line change
@@ -380,6 +380,23 @@ alter: func [
380380
) [append series :value]
381381
]
382382

383+
supplement: func [
384+
"Append value if not found; returns series at same position."
385+
series [block!] {(modified)}
386+
value
387+
/case "Case-sensitive comparison"
388+
/local result
389+
][
390+
result: series ; to return series at same position if value is found
391+
any[
392+
either case [
393+
find/case series :value
394+
][ find series :value ]
395+
append series :value
396+
]
397+
result
398+
]
399+
383400
collect: func [
384401
"Evaluates a block, storing values via KEEP function, and returns block of collected values."
385402
body [block!] "Block to evaluate"

src/tests/units/module-test.r3

+5-5
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,15 @@ Rebol [
33
Author: "Peter W A Wood, Oldes"
44
File: %module-test.r3
55
Tabs: 4
6-
Needs: [%../quick-test-module.r3]
6+
Needs: %../quick-test-module.r3
77
]
88

99
~~~start-file~~~ "module!"
1010

11-
modules-test-dir: join what-dir %units/files/
12-
unless find system/options/module-paths modules-test-dir [
13-
append system/options/module-paths modules-test-dir
14-
]
11+
; extend module-paths with units/files/ directory
12+
; so modules there can be located
13+
supplement system/options/module-paths join what-dir %units/files/
14+
1515

1616
===start-group=== "module keywords"
1717
--test-- "hidden"

src/tests/units/series-test.r3

+10
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,16 @@ Rebol [
169169
--assert #"b" = select/same "aAbcdAe" "A"
170170
--assert #"e" = select/same/last "aAbcdAe" "A"
171171

172+
--test- "SUPPLEMENT"
173+
;@@ https://github.com/Oldes/Rebol-wishes/issues/11
174+
b: []
175+
--assert [%a] = supplement b %a
176+
--assert [%a %b] = supplement b %b
177+
--assert [%a %b] = supplement b %a
178+
--assert [%a %b #"a"] = supplement b #"a"
179+
--assert [%a %b #"a"] = supplement b #"A" ; case-insensitive
180+
--assert [%a %b #"a" #"A"] = supplement/case b #"A"
181+
172182
===end-group===
173183

174184
===start-group=== "PATH notation"

0 commit comments

Comments
 (0)