diff --git a/src/awk/new.awk b/src/awk/new.awk index 44a33a5..b322e00 100644 --- a/src/awk/new.awk +++ b/src/awk/new.awk @@ -34,6 +34,8 @@ desc { desc = desc "\\n" $0; next; } if (!to) exit 1 getline + location = substr($0, 1, 2) == "@ " ? substr($0, 3) : "" + if (location) getline summary = substr($0, 1, 2) == "# " ? substr($0, 3) : "" if (!summary) exit 1 @@ -83,6 +85,7 @@ END { exit 1 } escape(summary); + escape(location); escape(desc); # print ical @@ -102,6 +105,7 @@ END { print "DTEND;VALUE=" to_type ":" to if (summary) print_fold("SUMMARY:", summary, i, s); if (desc) print_fold("DESCRIPTION:", desc, i, s); + if (location) print_fold("LOCATION:", location, i, s); print "END:VEVENT" print "END:VCALENDAR" } diff --git a/src/awk/update.awk b/src/awk/update.awk index 8faa848..08b4461 100644 --- a/src/awk/update.awk +++ b/src/awk/update.awk @@ -72,6 +72,7 @@ ENDFILE { exit 1 } escape(summary); + escape(location); escape(desc); } } @@ -86,6 +87,8 @@ NR == FNR { if (!to) exit 1 getline + location = substr($0, 1, 2) == "@ " ? substr($0, 3) : "" + if (location) getline summary = substr($0, 1, 2) == "# " ? substr($0, 3) : "" if (!summary) exit 1 @@ -98,7 +101,7 @@ NR == FNR { /^BEGIN:VEVENT$/ { inside = 1; print; next } /^X-ALT-DESC/ && inside { next } # drop this alternative description /^ / && inside { next } # drop this folded line (the only content with folded lines will be updated) -/^(DTSTART|DTEND|SUMMARY|CATEGORIES|DESCRIPTION|LAST-MODIFIED)/ && inside { next } # skip for now, we will write updated fields at the end +/^(DTSTART|DTEND|SUMMARY|LOCATION|CATEGORIES|DESCRIPTION|LAST-MODIFIED)/ && inside { next } # skip for now, we will write updated fields at the end /^SEQUENCE/ && inside { seq = $2; next } # store sequence number and skip /^END:VEVENT$/ { seq = seq ? seq + 1 : 1 @@ -108,6 +111,7 @@ NR == FNR { print "DTEND;VALUE=" to_type ":" to print_fold("SUMMARY:", summary, i, s) print_fold("DESCRIPTION:", desc, i, s) + print_fold("LOCATION:", location, i, s) inside = "" } { print } diff --git a/src/main.sh b/src/main.sh index 6f04e11..be29b8f 100755 --- a/src/main.sh +++ b/src/main.sh @@ -280,16 +280,22 @@ __edit() { start=$(__canonical_datetime_hm "$1") end=$(__canonical_datetime_hm "$2") fpath="$3" + location=$(awk -v field="LOCATION" "$AWK_GET" "$fpath") summary=$(awk -v field="SUMMARY" "$AWK_GET" "$fpath") description=$(awk -v field="DESCRIPTION" "$AWK_GET" "$fpath") filetmp=$(mktemp --suffix='.md') ( echo "::: |> $start" echo "::: <| $end" + ) >"$filetmp" + if [ -n "$location" ]; then + echo "@ $location" >>"$filetmp" + fi + ( echo "# $summary" echo "" echo "$description" - ) >"$filetmp" + ) >>"$filetmp" checksum=$(cksum "$filetmp") $EDITOR "$filetmp" >/dev/tty @@ -374,6 +380,7 @@ if [ "${1:-}" = "--new" ]; then ( echo "::: |> $start" echo "::: <| $end" + echo "@ " echo "# " echo "" ) >"$filetmp" @@ -452,6 +459,7 @@ if [ "${1:-}" = "--day" ]; then elif [ -z "$key" ] && [ -n "$fpath" ]; then fpath="$ROOT/$fpath" __edit "$start" "$end" "$fpath" + exec $0 --day "$DISPLAY_DATE" fi fi @@ -468,8 +476,11 @@ if [ "${1:-}" = "--preview" ]; then fpath="$ROOT/$fpath" start=$(__canonical_datetime "$start" "%a ") end=$(__canonical_datetime "$end" "%a ") - echo "${GREEN}From: ${OFF}${CYAN}$start${OFF}" - echo "${GREEN}To: ${OFF}${CYAN}$end${OFF}" + location=$(awk -v field="LOCATION" "$AWK_GET" "$fpath") + echo "📅 ${CYAN}$start${OFF} -> ${CYAN}$end${OFF}" + if [ -n "${location:-}" ]; then + echo "📍 ${CYAN}$location${OFF}" + fi echo "" awk -v field="DESCRIPTION" "$AWK_GET" "$fpath" | $CAT fi