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 |