From b5b78445e1e5051a3cb7875f6bf3ee814e804a9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=84min=20Baumeler?= Date: Mon, 17 Nov 2025 10:54:06 +0100 Subject: [PATCH] bugfix: handle entries without duration or endtime --- src/awk/approx.awk | 4 ++-- src/awk/dayview.awk | 4 +++- src/awk/parse.awk | 10 +++++++--- src/awk/weekview.awk | 1 + 4 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/awk/approx.awk b/src/awk/approx.awk index 8f77f8b..4d34a42 100644 --- a/src/awk/approx.awk +++ b/src/awk/approx.awk @@ -55,9 +55,9 @@ BEGIN { # Colors OFF = "\033[m" } -BEGINFILE { inside = 0; rs = 0; dur = 0; summary = ""; start = "ERROR"; end = "ERROR" } +BEGINFILE { inside = 0; rs = 0; dur = 0; summary = ""; start = "ERROR"; end = "" } { gsub("\r", "") } -/^END:VEVENT/ { print "~", start, dur ? start " " end : end, title(start, summary), fn(FILENAME); nextfile } +/^END:VEVENT/ { print "~", start, dur ? start " " end : (end ? end : start), title(start, summary), fn(FILENAME); nextfile } /^DTSTART/ && inside { start = parse_dt(getparam($0), getcontent($0)) } /^DTEND/ && inside { end = parse_dt(getparam($0), getcontent($0)) } /^DURATION/ && inside { end = parse_duration($NF); dur = 1 } diff --git a/src/awk/dayview.awk b/src/awk/dayview.awk index 3bde305..53053d4 100644 --- a/src/awk/dayview.awk +++ b/src/awk/dayview.awk @@ -77,7 +77,9 @@ function slice(start, stop, collection, desc, status) { color = color_from_status(status) if (stop == "00:00") return collection " " style_timerange start " → " ": " OFF color desc OFF - else + else if (start == stop) + return collection " " style_timerange start " " ": " OFF color desc OFF + else return collection " " style_timerange start " – " stop ": " OFF color desc OFF } diff --git a/src/awk/parse.awk b/src/awk/parse.awk index 3881d80..405de51 100644 --- a/src/awk/parse.awk +++ b/src/awk/parse.awk @@ -30,9 +30,13 @@ function print_data(start, dur, end, summary, cmd, collection, depth, path) { cmd = "date -d '" start "' +\"%s\"" cmd | getline start close(cmd) - cmd = "date -d '" end "' +\"%s\"" - cmd | getline end - close(cmd) + if (end) { + cmd = "date -d '" end "' +\"%s\"" + cmd | getline end + close(cmd) + } else { + end = start + } status = status ? status : "CONFIRMED" print start, end, fpath, collection, status, summary } diff --git a/src/awk/weekview.awk b/src/awk/weekview.awk index b428dcd..8b7e79c 100644 --- a/src/awk/weekview.awk +++ b/src/awk/weekview.awk @@ -29,6 +29,7 @@ BEGIN { $2 == "00:00" && $3 == "00:00" { dayline = dayline " " c($4); next } $2 == "00:00" { dayline = dayline style_time " → " $3 OFF " " c($4); next } $3 == "00:00" { dayline = dayline style_time " " $2 " → " OFF c($4); next } +NF == 4 && $2 == $3 { dayline = dayline style_time " " $2 OFF " " c($4); next } NF == 4 { dayline = dayline style_time " " $2 " – " $3 OFF " " c($4); next } NF == 1 && dayline { print "+", startofweek " +" $1-1 " days", "", dayline } NF == 1 {