Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Tree: fbc51c9ea7
Fetching contributors…

Cannot retrieve contributors at this time

36 lines (32 sloc) 1.271 kB
# Utility for "calendar" to read entries into the array calendar_entries.
# This should be local to the caller.
# The only argument is the file to read. We expect options etc. to
# be correct.
#
# This is based on Emacs calendar syntax, which has two implications:
# - Lines beginning with whitespace are continuation lines.
# Hence we have to read the entire file first to determine entries.
# - Lines beginning with "&" are inhibited from producing marks in
# Emacs calendar window. This is irrelevant to us, so we
# we simply remove leading ampersands. This is necessary since
# we expect the date to start at the beginning of the line.
#
# TODO: Emacs has some special handling for entries where the first line
# has only the date and continuation lines indicate times. Actually,
# it doesn't parse the times as far as I can see, but if we want to
# handle that format sensibly we would need to here. It could
# be tricky to get right.
local calendar=$1 line
local -a lines
lines=(${(f)"$(<$calendar)"})
calendar_entries=()
# ignore blank lines
for line in $lines; do
if [[ $line = [[:space:]]* ]]; then
if (( ${#calendar_entries} )); then
calendar_entries[-1]+=$'\n'$line
fi
else
calendar_entries+=(${line##\&})
fi
done
Jump to Line
Something went wrong with that request. Please try again.