30 lines
940 B
Text
30 lines
940 B
Text
use mod.flow.*
|
|
|
|
/** The layers, in order. */
|
|
let layers = Input{ type: @text many: 8 at: vec2(40, 80) }
|
|
|
|
/** Every layer joined with " / ", in order. */
|
|
let join = Fn{
|
|
in: { layers: ordered(@text, 8, [conn(1, layers.text())]) }
|
|
out: [@text]
|
|
run: |i| { let s = ""; for l in i.layers { if s != "" { s = s + " / " }; s = s + l }; {text: s} }
|
|
at: vec2(320, 40)
|
|
}
|
|
|
|
/** How many layers arrived. */
|
|
let count = Fn{
|
|
in: { layers: ordered(@text, 8, [conn(1, layers.text())]) }
|
|
out: [@text]
|
|
run: |i| { {text: "" + i.layers.len()} }
|
|
at: vec2(320, 300)
|
|
}
|
|
|
|
let joined = Output{ value: join.text() at: vec2(600, 40) }
|
|
let total = Output{ value: count.text() at: vec2(600, 300) }
|
|
/** The layers again, as an ordered result of the stack. */
|
|
let ordered = Output{ type: @text many: 8 value: [conn(1, layers.text())] at: vec2(600, 560) }
|
|
|
|
Component{
|
|
label: "Stack"
|
|
layers, join, count, joined, total, ordered
|
|
}
|