feat:location support

This commit is contained in:
2025-06-12 21:25:28 +02:00
parent dc88d5a965
commit ff898c84c8
3 changed files with 23 additions and 4 deletions

View File

@@ -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"
}

View File

@@ -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 }

View File

@@ -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 "@ <!-- write location here, optional line -->"
echo "# <!-- write summary here -->"
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