The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
MANIFEST 12
META.json 048
META.yml 2223
Makefile.PL 1011
lib/Acme/PM/Berlin/Meetings/History.pod 012
lib/Acme/PM/Berlin/Meetings.pm 813
6 files changed (This is a version diff) 41109
@@ -5,4 +5,5 @@ MANIFEST			This list of files
 README
 script/berlin-pm
 t/load.t
-META.yml                                 Module meta-data (added by MakeMaker)
+META.yml                                 Module YAML meta-data (added by MakeMaker)
+META.json                                Module JSON meta-data (added by MakeMaker)
@@ -0,0 +1,48 @@
+{
+   "abstract" : "unknown",
+   "author" : [
+      "unknown"
+   ],
+   "dynamic_config" : 1,
+   "generated_by" : "ExtUtils::MakeMaker version 6.6302, CPAN::Meta::Converter version 2.120630",
+   "license" : [
+      "unknown"
+   ],
+   "meta-spec" : {
+      "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec",
+      "version" : "2"
+   },
+   "name" : "Acme-PM-Berlin-Meetings",
+   "no_index" : {
+      "directory" : [
+         "t",
+         "inc"
+      ]
+   },
+   "prereqs" : {
+      "build" : {
+         "requires" : {
+            "ExtUtils::MakeMaker" : "0"
+         }
+      },
+      "configure" : {
+         "requires" : {
+            "ExtUtils::MakeMaker" : "0"
+         }
+      },
+      "runtime" : {
+         "requires" : {
+            "DateTime" : "0",
+            "DateTime::Event::Recurrence" : "0",
+            "Exporter" : "5.57"
+         }
+      }
+   },
+   "release_status" : "stable",
+   "resources" : {
+      "repository" : {
+         "url" : "git://github.com/eserte/acme-pm-berlin-meetings.git"
+      }
+   },
+   "version" : "201212.19"
+}
@@ -1,25 +1,26 @@
---- #YAML:1.0
-name:               Acme-PM-Berlin-Meetings
-version:            201008.26
-abstract:           ~
-author:  []
-license:            unknown
-distribution_type:  module
-configure_requires:
-    ExtUtils::MakeMaker:  0
+---
+abstract: unknown
+author:
+  - unknown
 build_requires:
-    ExtUtils::MakeMaker:  0
+  ExtUtils::MakeMaker: 0
+configure_requires:
+  ExtUtils::MakeMaker: 0
+dynamic_config: 1
+generated_by: 'ExtUtils::MakeMaker version 6.6302, CPAN::Meta::Converter version 2.120630'
+license: unknown
+meta-spec:
+  url: http://module-build.sourceforge.net/META-spec-v1.4.html
+  version: 1.4
+name: Acme-PM-Berlin-Meetings
+no_index:
+  directory:
+    - t
+    - inc
 requires:
-    DateTime:             0
-    DateTime::Event::Recurrence:  0
-    Exporter:             5.57
+  DateTime: 0
+  DateTime::Event::Recurrence: 0
+  Exporter: 5.57
 resources:
-    repository:  git://github.com/eserte/acme-pm-berlin-meetings.git
-no_index:
-    directory:
-        - t
-        - inc
-generated_by:       ExtUtils::MakeMaker version 6.56
-meta-spec:
-    url:      http://module-build.sourceforge.net/META-spec-v1.4.html
-    version:  1.4
+  repository: git://github.com/eserte/acme-pm-berlin-meetings.git
+version: 201212.19
@@ -2,20 +2,21 @@
 use strict;
 use ExtUtils::MakeMaker;
 
-eval {
-    if ((getpwuid($<))[0] eq 'eserte' && $ExtUtils::MakeMaker::VERSION < 6.54) {
-	warn <<EOF;
-**********************************************************************
-* WARNING:
-* ExtUtils::MakeMaker too old. META.yml will be imcomplete
-**********************************************************************
+my $eumm_recent_enough = $ExtUtils::MakeMaker::VERSION >= 6.54;
+
+if (!$eumm_recent_enough) {
+    *MY::dist_core = sub {
+	<<'EOF';
+dist :
+	$(NOECHO) $(ECHO) "Sorry, use a newer EUMM!"
+
 EOF
-    }
-};
+    };
+}
 
 WriteMakefile(NAME =>         'Acme::PM::Berlin::Meetings',
 	      VERSION_FROM => 'lib/Acme/PM/Berlin/Meetings.pm',
-	      ($ExtUtils::MakeMaker::VERSION >= 6.54 ?
+	      ($eumm_recent_enough ?
 	       (META_ADD => { resources => { repository => 'git://github.com/eserte/acme-pm-berlin-meetings.git' },
 			    }) : ()),
 	      PREREQ_PM => { 'DateTime' => 0,
@@ -19,6 +19,8 @@ L<http://www.openstreetmap.org/?lat=52.50716&lon=13.4653&zoom=17&layers=M>
 - BBBike-Route
 L<http://bbbike.de/cgi-bin/bbbike.cgi?zielname=Holteistr/Sonntagstr>
 
+L<geo:52.50716,13.4653>
+
 =head2 Treffen im Juli 2010
 
 Mittwoch, 28. Juli 2010, ab 20 Uhr c.t.
@@ -31,6 +33,8 @@ L<http://bbbike.de/cgi-bin/bbbike.cgi?zielname=Elisabeth-Abegg-Str> -
 Google Maps
 L<http://maps.google.com/maps?oe=utf-8&client=firefox-a&ie=UTF8&q=zollpackhof&fb=1&hq=zollpackhof&cid=0,0,16858087506954263585&ei=X-lPTMjCC-LGOKeZmb8B&ved=0CBoQnwIwAQ&hnear=&ll=52.519459,13.380876&spn=0.028699,0.03047&z=15>
 
+L<geo:52.521293,13.367068>
+
 =head2 Treffen im Juni 2010
 
 Mittwoch, 30. Juni 2010, ab 20 Uhr c.t.
@@ -43,6 +47,8 @@ L<http://bbbike.de/cgi-bin/bbbike.cgi?zielname=Triftstr(wedding)/brunnenstr>
 - Google Maps
 L<http://maps.google.de/maps?f=q&hl=de&geocode=&q=Triftstr+67+13353+berlin>
 
+L<geo:52.492937,13.401261>
+
 =head2 Treffen im Mai 2010
 
 Mittwoch, 26. Mai, ab 20 Uhr c.t.
@@ -174,6 +180,8 @@ L<http://maps.google.de/maps?f=q&source=s_q&hl=de&geocode=&q=Vor+dem+Schlesische
 - BBBike-Route
 L<http://bbbike.de/cgi-bin/bbbike.cgi?ziel=Vor+dem+Schlesischen+Tor>
 
+L<geo:52.497206,13.450492>
+
 =head2 Treffen im Juli 2009
 
 Mittwoch, 29. Juli, 20 Uhr c.t.
@@ -1286,4 +1294,8 @@ Converted by taking the pages L<http://perlmongers.de/?BerlinPM> and
 L<http://perlmongers.de/?BerlinPMNochAeltereTreffen> using
 L<Pod::HTML2Pod> and manual work.
 
+=head1 TODO
+
+Add the entries between 2010 and 2012.
+
 =cut
@@ -3,7 +3,7 @@
 #
 # Author: Slaven Rezic
 #
-# Copyright (C) 2010 Slaven Rezic. All rights reserved.
+# Copyright (C) 2010,2012 Slaven Rezic. All rights reserved.
 # This package is free software; you can redistribute it and/or
 # modify it under the same terms as Perl itself.
 #
@@ -14,7 +14,7 @@
 package Acme::PM::Berlin::Meetings;
 
 use strict;
-our $VERSION = '201008.26';
+our $VERSION = '201212.19';
 
 use Exporter 'import'; # needs Exporter 5.57
 our @EXPORT = qw(next_meeting);
@@ -23,7 +23,7 @@ use DateTime;
 use DateTime::Event::Recurrence;
 
 our $NORMAL_RECURRENCE;
-our $XMAS_FALLBACK_RECURRENCE;
+our $ADVANCE_ONE_WEEK_RECURRENCE;
 
 sub next_meeting {
     my $count = shift || 1;
@@ -41,14 +41,14 @@ sub next_meeting_dt {
 	$der;
     };
     my $next_dt = $NORMAL_RECURRENCE->next($dt);
-    if (($next_dt->month == 12 && $next_dt->day >= 24) ||
-	($next_dt->month == 1  && $next_dt->day == 1)) {
-	$XMAS_FALLBACK_RECURRENCE ||= do {
-	    my $der = DateTime::Event::Recurrence->monthly(weeks =>  1, days => 'we', hours => 20, week_start_day => 'mo');
+    while(($next_dt->month == 12 && $next_dt->day >= 24) ||
+	  ($next_dt->month == 1  && $next_dt->day <= 2)) {
+	$ADVANCE_ONE_WEEK_RECURRENCE ||= do {
+	    my $der = DateTime::Event::Recurrence->weekly(days => 'we', hours => 20, week_start_day => 'mo');
 #	    $der->set_time_zone('Europe/Berlin');
 	    $der;
 	};
-	$next_dt = $XMAS_FALLBACK_RECURRENCE->next($next_dt);
+	$next_dt = $ADVANCE_ONE_WEEK_RECURRENCE->next($next_dt);
     }
     $next_dt;
 }   
@@ -66,6 +66,11 @@ Acme::PM::Berlin::Meetings - get the next date of the Berlin PM meeting
     use Acme::PM::Berlin::Meetings;
     next_meeting(1)
 
+=head1 NOTES
+
+This module knows about special Berlin.PM traditions like postponing
+the December meeting to the first or second week in January.
+
 =head1 AUTHOR
 
 Slaven Rezic