skip damaged posts
[engit/Iron-Munger.git] / lib / IronMunger / PlaggerLoader.pm
index 57174c3..33db915 100644 (file)
@@ -11,6 +11,7 @@ class IronMunger::PlaggerLoader {
   use IronMunger::CSVUtils qw(:all);
 
   use aliased 'IronMunger::Post';
+  use aliased 'IronMunger::Monger';
 
   use IO::All;
   use Text::CSV_XS;
@@ -18,7 +19,7 @@ class IronMunger::PlaggerLoader {
   has dir => (is => 'ro', isa => Dir, required => 1, coerce => 1);
 
   method _target_files () {
-    grep $_->name =~ /\.csv$/, io($self->dir)->get_files;
+    grep $_->name =~ /\.csv$/, io($self->dir)->all_files;
   }
 
   method _expand_post (HashRef $post_spec) {
@@ -32,20 +33,27 @@ class IronMunger::PlaggerLoader {
     ];
   }
 
+  method _csv_column_order () {
+    my $x;
+    return map +($_ => $x++), qw(author title url at);
+  }
+
   method _expand_postspecs_from_file(IO::All::File $file) {
     my $csv = Text::CSV_XS->new;
     my $io = $file->open;
     my @post_specs;
+    my %col_order = $self->_csv_column_order;
     while (my $post_raw = $csv->getline($io)) {
       my %post_spec;
-      @post_spec{qw{url at}} = @{$post_raw}[1,2];
-      push(@post_specs, %post_spec);
+      @post_spec{qw{url at}} = @{$post_raw}[@col_order{qw{url at}}];
+      next unless $post_spec{url} && $post_spec{at};
+      push(@post_specs, \%post_spec);
     }
     return \@post_specs;
   }
 
   method _expand_monger (IO::All::File $file) {
-    my ($name, $nick) = name_and_nick_from_filename($file->name);
+    my ($name, $nick) = filename_to_name_and_nick(($file->splitpath)[-1]);
     Monger->new(
       (defined $name ? (name => $name) : ()),
       (defined $nick ? (nick => $nick) : ()),