[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/15fly/html5lib-python/python3-old/validate.py [Back]  [Original]

#!/usr/bin/env python
"""usage: %prog [options] url-or-filename

Validate an HTML5 document using a non-schema-based conformance checker"""
#RELEASE move ./examples/

import sys
import os
from optparse import OptionParser

#RELEASE remove
sys.path.insert(0,os.path.abspath(os.path.join(__file__,'../src')))
#END RELEASE
from html5lib import html5parser#, liberalxmlparser
from html5lib import treebuilders
from html5lib import constants
from html5lib.filters import validator

def parse():
    optParser = getOptParser()
    opts,args = optParser.parse_args()
    encoding = None

    try:
        f = args[-1]
        # Try opening from the internet
        if f.startswith('http://'):
            try:
                import urllib, cgi
                f = urllib.urlopen(f)
                contentType = f.headers.get('content-type')
                if contentType:
                    (mediaType, params) = cgi.parse_header(contentType)
                    encoding = params.get('charset')
            except: pass
        elif f == '-':
            f = sys.stdin
        else:
            try:
                # Try opening from file system
                f = open(f)
            except IOError: pass
    except IndexError:
        sys.stderr.write("No filename provided. Use -h for help\n")
        sys.exit(1)

    treebuilder = treebuilders.getTreeBuilder("simpleTree")

#    if opts.xml:
#        p = liberalxmlparser.XHTMLParser(tree=treebuilder)
#    else:
    if 1:
        p = html5parser.HTMLParser(tree=treebuilder, tokenizer=validator.HTMLConformanceChecker)

    document = p.parse(f, encoding=encoding)
    printOutput(p, document, opts)

def printOutput(parser, document, opts):
    errList=[]
    for pos, errorcode, datavars in parser.errors:
        errList.append("Line %i Col %i"%pos + " " + constants.E.get(errorcode, 'Unknown error "%s"' % errorcode) % datavars)
    sys.stdout.write("\nValidation errors:\n" + "\n".join(errList)+"\n")

def getOptParser():
    parser = OptionParser(usage=__doc__)
    return parser

if __name__ == "__main__":
    parse()

Web Proxy Viewer  |  New URL  |  Original Page