Just to give you an idea:
Here's input.rem:
BANNER %
saturday sunday thursday msg %y-%t-%r category: work Present report.%
tuesday wednesday msg %y-%t-%r category: home Clean kitchen.%
july 4 2011 through july 12 2011 msg %y-%t-%r category: market Fish stock.%
sunday msg %y-%t-%r Relax.%
thursday at 19:00 msg %y-%t-%r Continue reading "Anna Kerenina."%
Here's color_rem.awk:
BEGIN{
color["default"]="37"
color["work"]="31"
color["home"]="32"
color["market"]="36"
}
{
printf $1
msg=substr($0, match($0, " "))
categ_re="category: [^ ][^ ]*"
match(msg, categ_re)
printf("\033[" \
color[substr(msg, RSTART+length("category: "), RLENGTH-length("category:
"))] "m" \
"%s\033[" color["default"] "m\n",
substr(msg, RLENGTH+2))
}
Here's your pipeline:
$ remind -h - '*30' < input.rem | awk -f color_rem.awk
This awk program is very fragile and not very generalizable,
but maybe it's an okay place to start hacking.
To be colorized, an input rec must have the string "category: "
concatenated with one of the strings "work", "home", or "market".
It also needs a leading non-blank date expression such as the one repeated in
input.rem.
It would be preferable to add another filter to save you having to re-type it
in every msg:
$ sed 's/ [Mm][Ss][Gg] /&%y-%t-%r /' input.rem | remind -h - '*30' | awk -f
color_rem.awk
...And then, for example, the final line of input.rem would be merely:
thursday at 19:00 msg Continue reading "Anna Kerenina."%
Incidentally, awk really isn't that hard and I still think if you become
comfortable with only one language, awk should be it. There
aren't any languages I know of that are both simpler and more powerful. It's
ubiquitous--I haven't even seen many embedded systems without it. And it does
practically everything the average user could possibly need--most of which with
remarkable ease.
-Derek
_______________________________________________
Remind-fans mailing list
[email protected]
http://lists.roaringpenguin.com/cgi-bin/mailman/listinfo/remind-fans
Remind is at http://www.roaringpenguin.com/products/remind