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
 |