42 lines
1.3 KiB
Nu
42 lines
1.3 KiB
Nu
export def lumen-assono-worktime-calc [datestr: string]: nothing -> string {
|
|
let $datestr = $datestr | str replace ' +' ' '
|
|
mut $dateArray = []
|
|
let $rawDateArray = $datestr | split row ' '
|
|
if (($rawDateArray | length) mod 2 == 1) {
|
|
mut $spliceCounter = true
|
|
for $i in $rawDateArray {
|
|
if ($spliceCounter) {
|
|
$dateArray = $dateArray | append $i
|
|
}
|
|
$spliceCounter = not $spliceCounter
|
|
}
|
|
} else {
|
|
$dateArray = $rawDateArray
|
|
}
|
|
|
|
if (($dateArray | length) mod 2 == 1) {
|
|
error make {msg: 'Uneven Times given!'}
|
|
}
|
|
|
|
mut $dateArrayOutput = []
|
|
mut $dateArrayOutputBuilderCounter = true
|
|
for $i in $dateArray {
|
|
$dateArrayOutput = $dateArrayOutput | append ($i | date from-human | format date '%H:%M')
|
|
if ($dateArrayOutputBuilderCounter) {
|
|
$dateArrayOutput = $dateArrayOutput | append '-'
|
|
} else {
|
|
$dateArrayOutput = $dateArrayOutput | append '|'
|
|
}
|
|
$dateArrayOutputBuilderCounter = not $dateArrayOutputBuilderCounter
|
|
}
|
|
let $dateArrayOutput = ($dateArrayOutput | drop 1) | str join ' '
|
|
|
|
# $dateArray[0]
|
|
mut $hours = 0min
|
|
while (($dateArray | length) > 0) {
|
|
$hours += ($dateArray | get 1 | into datetime) - ($dateArray | get 0 | into datetime)
|
|
$dateArray = $dateArray | skip 2
|
|
}
|
|
$"($dateArrayOutput)\n($hours | into string)"
|
|
}
|