forked from HPR/hpr-tools
		
	
		
			
	
	
		
			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
							 |