diff lib/Slideshow/Util.pm @ 13:967fe50f1ef4

add open and edit mode
author Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
date Fri, 26 Jan 2018 14:16:04 +0900
parents 0b502eb897cc
children 80767afba59c
line wrap: on
line diff
--- a/lib/Slideshow/Util.pm	Thu Jan 25 22:18:40 2018 +0900
+++ b/lib/Slideshow/Util.pm	Fri Jan 26 14:16:04 2018 +0900
@@ -19,6 +19,8 @@
     set_template
     build_recently 
     build_pinpoint 
+    open_slide
+    edit_slide
 /;
 
 sub getopts {
@@ -30,6 +32,7 @@
 
     if ($arg eq "new") {
         return {new => 1};
+
     } elsif ( $arg eq "upload") {
        upload();
        exit;
@@ -42,8 +45,12 @@
             return { build => "recent"};
         }
 
-    } elsif ( $arg eq "upload"){
-        return { upload => 1};
+
+    } elsif ( $arg eq "open"){
+        return { open => 1};
+
+    } elsif ( $arg eq "edit"){
+        return { edit=> 1};
 
     } else {
         return { help => 1};
@@ -67,14 +74,20 @@
     $template->copy($slide);
 }
 
-
-sub build_recently {
+sub _search_recently {
     my ($root_directory_name) = @_;
     my $root_dir = path($root_directory_name);
     my $t = localtime;
 
     my $recently = shift @{[sort { $b->stat->mtime <=> $a->stat->mtime } $root_dir->children]};
 
+    return $recently;
+}
+
+
+
+sub build_recently {
+    my $recently = _search_recently(shift);
     _build($recently);
 }
 
@@ -89,6 +102,22 @@
    _build($dir,$slide); 
 }
 
+sub edit_slide {
+    my $recently = _search_recently(shift);
+    my $target = $recently->child('slide.md');
+    exec $ENV{EDITOR}, ($target->realpath);
+}
+
+sub open_slide {
+    my $recently = _search_recently(shift);
+    my $target = $recently->child('slide.html');
+
+    if ( $target->realpath){
+        system "open", ($target->realpath);
+    }  else {
+        say "didn't slide.html";
+    }
+}
 
 sub _build {
     my ($dir,$target) = @_;