# -*- coding: utf-8 -*- # html.py - sublimelint package for checking html files # Example error messages # # line 1 column 1 - Warning: missing declaration # line 200 column 1 - Warning: discarding unexpected # line 1 column 1 - Warning: inserting missing 'title' element import re import subprocess from base_linter import BaseLinter CONFIG = { 'language': 'HTML', 'executable': 'tidy', 'lint_args': '-eq' } class Linter(BaseLinter): def get_executable(self, view): try: path = self.get_mapped_executable(view, 'tidy') version_string = subprocess.Popen([path, '-v'], startupinfo=self.get_startupinfo(), stdout=subprocess.PIPE).communicate()[0] if u'HTML5' in version_string: return (True, path, 'using tidy for executable') return (False, '', 'tidy is not ready for HTML5') except OSError: return (False, '', 'tidy cannot be found') def parse_errors(self, view, errors, lines, errorUnderlines, violationUnderlines, warningUnderlines, errorMessages, violationMessages, warningMessages): for line in errors.splitlines(): match = re.match(r'^line\s(?P\d+)\scolumn\s\d+\s-\s(?P.+)', line) if match: error, line = match.group('error'), match.group('line') self.add_message(int(line), lines, error, errorMessages)