hpr-tools/Show_Submission/validate_html

97 lines
2.2 KiB
Plaintext
Raw Normal View History

#!/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