97 lines
2.2 KiB
Plaintext
97 lines
2.2 KiB
Plaintext
|
#!/usr/bin/env perl
|
||
|
#===============================================================================
|
||
|
#
|
||
|
# FILE: validate_html
|
||
|
#
|
||
|
# USAGE: ./validate_html file
|
||
|
#
|
||
|
# DESCRIPTION: Validate HTML show notes using HTML::Valid
|
||
|
#
|
||
|
# OPTIONS: ---
|
||
|
# REQUIREMENTS: ---
|
||
|
# BUGS: ---
|
||
|
# NOTES: Much of this code is as seen in 'htmlok' because the
|
||
|
# documentation with HTML::Valid is poor.
|
||
|
# AUTHOR: Dave Morriss (djm), Dave.Morriss@gmail.com
|
||
|
# VERSION: 0.0.3
|
||
|
# CREATED: 2018-06-01 16:25:27
|
||
|
# REVISION: 2019-11-10 21:25:06
|
||
|
#
|
||
|
#===============================================================================
|
||
|
|
||
|
use 5.010;
|
||
|
use strict;
|
||
|
use warnings;
|
||
|
use utf8;
|
||
|
|
||
|
# In the POD, without explanation
|
||
|
use FindBin '$Bin';
|
||
|
|
||
|
# Found in 'htmlok', not documented
|
||
|
use HTML::Valid 'sanitize_errors';
|
||
|
use Path::Tiny;
|
||
|
|
||
|
#
|
||
|
# Version number (manually incremented)
|
||
|
#
|
||
|
our $VERSION = '0.0.3';
|
||
|
|
||
|
#
|
||
|
# Script and directory names
|
||
|
#
|
||
|
( my $PROG = $0 ) =~ s|.*/||mx;
|
||
|
( my $DIR = $0 ) =~ s|/?[^/]*$||mx;
|
||
|
$DIR = '.' unless $DIR;
|
||
|
|
||
|
#-------------------------------------------------------------------------------
|
||
|
# Declarations
|
||
|
#-------------------------------------------------------------------------------
|
||
|
#
|
||
|
# Constants and other declarations
|
||
|
#
|
||
|
my $basedir = "$ENV{HOME}/HPR/Show_Submission";
|
||
|
|
||
|
#
|
||
|
# Enable Unicode mode
|
||
|
#
|
||
|
binmode STDOUT, ":encoding(UTF-8)";
|
||
|
binmode STDERR, ":encoding(UTF-8)";
|
||
|
|
||
|
#
|
||
|
# Create the object
|
||
|
#
|
||
|
my $htv = HTML::Valid->new(
|
||
|
quiet => 1, # omit summary, etc
|
||
|
doctype => 'omit',
|
||
|
show_body_only => 1, # print only the contents of the body tag as an HTML fragment
|
||
|
show_info => 1, # test; omit info-level messages
|
||
|
show_warnings => 1, # include warnings if set
|
||
|
);
|
||
|
|
||
|
#
|
||
|
# We expect a file as an argument
|
||
|
#
|
||
|
my $file = shift @ARGV;
|
||
|
die "Usage: $PROG filename\n" unless $file;
|
||
|
my $content;
|
||
|
if ( -f $file ) {
|
||
|
$content = path($file)->slurp_utf8();
|
||
|
$htv->set_filename($file);
|
||
|
}
|
||
|
else {
|
||
|
die "$PROG: Cannot find '$file'.\n";
|
||
|
}
|
||
|
|
||
|
#
|
||
|
# Largely undocumented but seen in 'htmlok'
|
||
|
#
|
||
|
my ( undef, $errors ) = $htv->run($content);
|
||
|
if ($errors) {
|
||
|
print sanitize_errors ($errors);
|
||
|
exit 1;
|
||
|
}
|
||
|
|
||
|
exit;
|
||
|
|
||
|
# vim: syntax=perl:ts=8:sw=4:et:ai:tw=78:fo=tcrqn21:fdm=marker
|