feat:location support
This commit is contained in:
@@ -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"
|
||||
}
|
||||
|
@@ -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 }
|
||||
|
17
src/main.sh
17
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 "@ <!-- 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
|
||||
|
Reference in New Issue
Block a user