#!/usr/bin/perl -w
       
# I read my configuration on stdin
# dd. mm. yyyy[ hh:mm]\tdd. mm. yyyy[ hh:mm]\tmessage
# any day, month or year can be specified as * for periodical events
# ie.
# 25. 10. *	27. 10. * 12:00	go to hell	
                         
use strict;
use DateTime;
use Term::ANSIColor;
use Calendar::Simple;

sub
dt_object
{
	my $time = shift;
	my $now = DateTime->now;
	my ($day, $month, $year, $hour, $min);

	$time =~ s/\.//g;
	$time =~ s/:/ /;

	my @d = split / /, $time;
	for (my $i = 0; $i <= 2; $i++) {
		return undef if (not defined $d[$i]);
	}


	if ($d[0] eq "*") { $day = $now->day; } else { $day = $d[0]; }
	if ($d[1] eq "*") { $month = $now->month; } else { $month = $d[1]; }
	if ($d[2] eq "*") { $year = $now->year; } else { $year = $d[2]; }
	if (defined $d[3]) { $hour = $d[3]; } else { $hour = 0; }
	if (defined $d[4]) { $min = $d[4]; } else { $min = 0; }
	
	return DateTime->new(
				year => $year,
				month => $month,
				day => $day,
				hour => $hour,
				minute => $min,	
			);
}

my $line = 0;
while (<>) {
	$line++;
        my ($from, $to, $msg) = split /\t/;

	# pokud je cas v intervalu (from, to) po dosazeni soucasneho casu za *, zobraz $msg

	$from = dt_object($from);
	$to = dt_object($to);
	if (not defined $from || not defined $to) {
		print STDERR "bugme: Syntax error on line $line\n";
		next;
	}
	my $now = time();

	print $msg if ($from->epoch <= $now && $to->epoch >= $now );
}

