forked from HPR/hpr-tools
		
	
		
			
				
	
	
		
			97 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Perl
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			97 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Perl
		
	
	
		
			Executable File
		
	
	
	
	
#!/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
 |