Skip to content

Commit

Permalink
Simplifying code
Browse files Browse the repository at this point in the history
  • Loading branch information
Louis committed Jul 5, 2014
1 parent 2a5e8e7 commit 7f18c1c
Showing 1 changed file with 31 additions and 27 deletions.
58 changes: 31 additions & 27 deletions IkiWiki/Plugin/calendar.pm
Original file line number Diff line number Diff line change
Expand Up @@ -142,42 +142,46 @@ sub calendarlink($;$) {

sub gencalendaryear {
my $year = shift;
my %params = @_;

if ($config{calendar_autocreate}) {
return unless $config{calendar_autocreate};

# Building year page
my $page = calendarlink($year);
# Building year page
my $page = calendarlink($year);
my $pagefile = newpagefile($page, $config{default_pageext});
add_autofile(
$pagefile, "calendar",
sub {return autocreate($page, $pagefile, $year);}
);

# Building month pages
foreach my $month (qw{01 02 03 04 05 06 07 08 09 10 11 12}) {
my $page = calendarlink($year, $month);
my $pagefile = newpagefile($page, $config{default_pageext});
add_autofile(
$pagefile, "calendar",
sub {return autocreate($page, $pagefile, $year);}
sub {return autocreate($page, $pagefile, $year, $month);}
);
}

# Building month pages
foreach my $month (qw{01 02 03 04 05 06 07 08 09 10 11 12}) {
my $page = calendarlink($year, $month);
my $pagefile = newpagefile($page, $config{default_pageext});
add_autofile(
$pagefile, "calendar",
sub {return autocreate($page, $pagefile, $year, $month);}
);
}

# Filling potential gaps in years (e.g. calendar goes from 2010 to 2014,
# and we just added year 2005. We have to had years 2006 to 2009.
if (not exists $wikistate{calendar}{minyear}) {
$wikistate{calendar}{minyear} = $year;
} elsif ($wikistate{calendar}{minyear} > $year) {
gencalendaryear($year + 1);
$wikistate{calendar}{minyear} -= 1;
}
if (not exists $wikistate{calendar}{maxyear}) {
$wikistate{calendar}{maxyear} = $year;
# Filling potential gaps in years (e.g. calendar goes from 2010 to 2014,
# and we just added year 2005. We have to had years 2006 to 2009).
return if $params{norecurse};
if (not exists $wikistate{calendar}{minyear}) {
$wikistate{calendar}{minyear} = $year;
} elsif ($wikistate{calendar}{minyear} > $year) {
foreach my $other ($year + 1 .. $wikistate{calendar}{minyear} - 1) {
gencalendaryear($other, norecurse => 1);
}
if ($wikistate{calendar}{maxyear} < $year) {
gencalendaryear($year - 1);
$wikistate{calendar}{maxyear} += 1;
$wikistate{calendar}{minyear} = $year;
}
if (not exists $wikistate{calendar}{maxyear}) {
$wikistate{calendar}{maxyear} = $year;
} elsif ($wikistate{calendar}{maxyear} < $year) {
foreach my $other ($wikistate{calendar}{maxyear} + 1 .. $year - 1) {
gencalendaryear($other, norecurse => 1);
}
$wikistate{calendar}{maxyear} = $year;
}
}

Expand Down

0 comments on commit 7f18c1c

Please sign in to comment.