30 lines
768 B
Typst
30 lines
768 B
Typst
|
#import "../utils.typ": UNBORN, READY, RUNNING, TERMINATED
|
||
|
|
||
|
#let _prepare-tasks(tasks) = {
|
||
|
let processes = (:)
|
||
|
for (i, task) in tasks.enumerate() {
|
||
|
let id = str(i)
|
||
|
task.insert("id", id)
|
||
|
task.insert("state", UNBORN)
|
||
|
processes.insert(id, (task: task, events: ()))
|
||
|
tasks.at(i) = task
|
||
|
}
|
||
|
return (processes, tasks)
|
||
|
}
|
||
|
|
||
|
#let _prepare-output(processes) = {
|
||
|
return processes.values()
|
||
|
.map(p => (
|
||
|
pid: p.task.pid,
|
||
|
priority: p.task.priority,
|
||
|
events: p.events
|
||
|
))
|
||
|
.sorted(key: t => t.pid)
|
||
|
}
|
||
|
|
||
|
#let log-list(list) = {
|
||
|
if list == none or list.len() == 0 {
|
||
|
return "queue:"
|
||
|
}
|
||
|
return "queue: " + list.map(t => str(t.pid)).join(", ")
|
||
|
}
|