Exemple #1
0
def main(options):
    """Entry point for the HTML5 Linter."""

    # Wrap sys stdout for python 2, so print can understand unicode.
    if sys.version_info[0] < 3:
        sys.stdout = codecs.getwriter('utf-8')(sys.stdout)

    disable_str = options.get('--disable') or ''
    disable = disable_str.split(',')

    invalid_disable = set(disable) - set(_DISABLE_MAP.keys()) - set(('', ))
    if invalid_disable:
        sys.stderr.write('Invalid --disable arguments: %s\n\n' %
                         ', '.join(invalid_disable))
        sys.stderr.write(__doc__)
        return 1

    exclude = [_DISABLE_MAP[d] for d in disable if d in _DISABLE_MAP]

    filenames = options.get('FILENAME', [])

    results = False
    for filename in filenames:
        clean_html = template_remover.clean(io.open(filename).read())
        result = lint(clean_html, exclude=exclude)
        if result:
            print(result)
            results = True

    if results:
        return 2

    return 0
Exemple #2
0
    def handle(self, *args, **options):
        errors_found = 0

        for template in get_templates():
            with template.open() as f:
                content = f.read()

            content = template_remover.clean(content)

            exclude = (
                html_linter.ProtocolMessage,
                html_linter.TypeAttributeMessage,
                html_linter.ExtraWhitespaceMessage,
            )

            lines = content.splitlines()
            levels = {'Error', 'Warning'}
            result = html_linter.HTML5Linter(content)
            for message in result.messages:
                if message.level in levels and not isinstance(message, exclude):
                    self.stdout.write('  File "%s", line %d, in <template>' % (template, message.line))
                    self.stdout.write('    %s' % lines[message.line - 1].strip())
                    self.stdout.write('%s: %s: %s: %s' % (
                        message.level, message.category, message.description, message.message,
                    ))
                    self.stdout.write('')

                    errors_found += 1

        if errors_found > 0:
            raise CommandError('Number of errors found: %d.' % errors_found)
Exemple #3
0
def main():
    """Entry point for the HTML5 Linter."""

    # Wrap sys stdout for python 2, so print can understand unicode.
    if sys.version_info[0] < 3:
        sys.stdout = codecs.getwriter("utf-8")(sys.stdout)

    options = docopt.docopt(__doc__,
                            help=True,
                            version='html5_lint v%s' % __VERSION__)

    disable_str = options['--disable'] or ''
    disable = disable_str.split(',')

    invalid_disable = set(disable) - set(_DISABLE_MAP.keys()) - set(('', ))
    if invalid_disable:
        sys.stderr.write('Invalid --disable arguments: %s\n\n' %
                         ', '.join(invalid_disable))
        sys.stderr.write(__doc__)
        return 1

    exclude = [_DISABLE_MAP[d] for d in disable if d in _DISABLE_MAP]
    clean_html = template_remover.clean(io.open(options['FILENAME']).read())
    print(html_linter.lint(clean_html, exclude=exclude))

    return 0
Exemple #4
0
def main(options):
    """Entry point for the HTML5 Linter."""

    # Wrap sys stdout for python 2, so print can understand unicode.
    if sys.version_info[0] < 3:
        sys.stdout = codecs.getwriter('utf-8')(sys.stdout)

    disable_str = options.get('--disable') or ''
    disable = disable_str.split(',')

    invalid_disable = set(disable) - set(_DISABLE_MAP.keys()) - set(('',))
    if invalid_disable:
        sys.stderr.write(
            'Invalid --disable arguments: %s\n\n' % ', '.join(invalid_disable))
        sys.stderr.write(__doc__)
        return 1

    exclude = [_DISABLE_MAP[d] for d in disable if d in _DISABLE_MAP]

    filenames = options.get('FILENAME', [])

    results = False
    for filename in filenames:
        clean_html = template_remover.clean(io.open(filename).read())
        result = lint(clean_html, exclude=exclude)
        if result:
            print(result)
            results = True

    if results:
        return 2

    return 0
Exemple #5
0
def main():
    """Entry point for remove_template."""

    # Wrap sys stdout for python 2, so print can understand unicode.
    if sys.version_info[0] < 3:
        sys.stdout = codecs.getwriter("utf-8")(sys.stdout)

    options = docopt.docopt(__doc__,
                            help=True,
                            version='template_remover v%s' % __VERSION__)

    print(template_remover.clean(io.open(options['FILENAME']).read()))

    return 0
Exemple #6
0
def main(options):
    """Entry point for the HTML5 Linter."""

    # Wrap sys stdout for python 2, so print can understand unicode.
    if sys.version_info[0] < 3:
        sys.stdout = codecs.getwriter('utf-8')(sys.stdout)

    print_filename = options.get('--printfilename')
    disable_str = options.get('--disable') or ''
    disable = disable_str.split(',')

    invalid_disable = set(disable) - set(_DISABLE_MAP.keys()) - set(('',))
    if invalid_disable:
        sys.stderr.write(
            'Invalid --disable arguments: %s\n\n' % ', '.join(invalid_disable))
        sys.stderr.write(__doc__)
        return 1

    exclude = [_DISABLE_MAP[d] for d in disable if d in _DISABLE_MAP]

    filenames = []
    
    if options.get('--recursive'):
        directory = options.get('DIRECTORY')
        for root, dirnames, names in os.walk(directory):
            filenames.extend([os.path.join(root, name) \
                for name in names if name.endswith('.html')])
    else:
        filenames = options.get('FILENAME', [])

    results = False
    for filename in filenames:
        clean_html = template_remover.clean(io.open(filename).read())
        result = lint(clean_html, exclude=exclude)
        if result:
            if print_filename:
                result = "{}:{}".format(filename, result)
            print(result)
            results = True

    if results:
        return 2

    return 0
Exemple #7
0
    def handle(self, *args, **options):
        errors_found = 0

        for template in get_templates():
            with template.open() as f:
                content = f.read()

            content = template_remover.clean(content)

            exclude = (
                html_linter.ProtocolMessage,
                html_linter.TypeAttributeMessage,
                html_linter.ExtraWhitespaceMessage,
            )

            lines = content.splitlines()
            levels = {'Error', 'Warning'}
            result = html_linter.HTML5Linter(content)
            for message in result.messages:
                if message.level in levels and not isinstance(
                        message, exclude):
                    self.stdout.write('  File "%s", line %d, in <template>' %
                                      (template, message.line))
                    self.stdout.write('    %s' %
                                      lines[message.line - 1].strip())
                    self.stdout.write('%s: %s: %s: %s' % (
                        message.level,
                        message.category,
                        message.description,
                        message.message,
                    ))
                    self.stdout.write('')

                    errors_found += 1

        if errors_found > 0:
            raise CommandError('Number of errors found: %d.' % errors_found)
 def test_clean_invalid_pattern(self):
     with self.assertRaises(AssertionError):
         template_remover.clean('foo', re.compile(r'\w'))
Exemple #9
0
 def test_clean_invalid_pattern(self):
     with self.assertRaises(AssertionError):
         template_remover.clean('foo', re.compile(r'\w'))
Exemple #10
0
def clean_string(text):
    text = template_remover.clean(text)
    bs = BeautifulSoup(text, "html.parser")
    return " ".join(s for s in bs.stripped_strings
                    if "amcharts" not in s.lower()).strip()