#!/usr/bin/perl -CSD use warnings; use strict; use v5.22; use File::Path qw(make_path); use DateTime::Format::ISO8601; use POSIX qw(strftime); use HTML::Entities; my $FH; # default definitions my $domain = "nekodev"; my $date_html = ''; my $date_str = ''; my $title = ''; my $outputFile; # mapping from domains (to navigation current page, output dir, etc) my %id_cur_page = ( 'nekodev' => '', 'blog.nekodev' => '', 'code.nekodev' => '' ); my %output_dir = ( 'nekodev' => '../nekodev', 'blog.nekodev' => '../blog.nekodev', 'code.nekodev' => '../code.nekodev', 'code-tmp' => '../code-tmp', '' => '../tmp', 'tmpdir' => '../tmp' ); # parse file name my $argvSize = 0+@ARGV; if ($argvSize > 0) { warn 'Processing: '.$ARGV[0]."\n"; die "too many arguments" if $argvSize > 1; my ($basename,$fileext) = $ARGV[0] =~ /(.*)\.(.*)/; print ' type: '.$fileext."\n"; $domain = "nekodev" if $fileext eq "web"; $domain = "blog.nekodev" if $fileext eq "blog"; $domain = "code.nekodev" if $fileext eq "code"; # open output file $outputFile = $output_dir{$domain}.'/'.$basename.'.html'; warn $outputFile, "\n"; make_path($outputFile =~ /(.*)\//); open($FH, '>', $outputFile) or die "cannot open file $outputFile: $!"; select $FH; } # parse file parameters $id_cur_page{$domain} = 'id="cur-navpage"'; while (<<>>) { chomp; my $currentTag = $_; $currentTag eq '[title]' and chomp($title = <<>>); if ($currentTag eq '[date]') { chomp($date_str = <<>>); my $date = DateTime::Format::ISO8601->parse_datetime( $date_str ); # make sure we have the right format $date_str = $date->iso8601; # format nice