def check_header(self, page, before, header, after): title = page.title line = "%s%s%s" % (before, header, after) header = header.strip() if before != after: return # это другая ошибка (syntax) need_level = header_levels.get(header, 0) level = len(before) if need_level and level > 1: if need_level != level: # пропустим иерогливы, морфемы и прочее content = page.content skips = [ u"= {{-Hani-}} =", u"= {{-hani-}} =", u"= {{-hanzi-", u"= {{-mul-}} =", u"= {{-INT-}} =", u"= {{-Zmth-}} =", u"{{suffix ", u"{{morph", u"== Буква ==", u"Словообразовательная единица", ] for skip in skips: if skip in content: return # print u"→", title # print line return line return
def header_action(self, page, before, header, after): super(WrongLevel, self).header_action(page, before, header, after) title = page.title if ":" in title: return if title == u"Заглавная страница": # todo: move it to HeadersIterator return full_header = self.get_header(before, header, after) level = len(before) header = header.strip() correct_level = header_levels.get(header, 0) if correct_level: correct_levels = [correct_level] else: correct_levels = [] has_affix = False for s in [u"{{suffix ", u"{{morph", u"Словообразовательная единица"]: if s in page.content: has_affix = True break if title.startswith("-") or title.endswith("-"): # это точно словообразовательная единица if header in [u"Значение", u"Антонимы", u"Синонимы"]: correct_levels = [3, 4] elif title.startswith("*"): # это точно праязык if header == u"Значение": correct_levels = [3, 4] elif has_affix: if header in [u"Значение", u"Антонимы", u"Синонимы"]: correct_levels = [3, 4] elif len(title) == 1: if header in [u"Значение"]: correct_levels = [3, 4] if correct_levels and level > 1: if level not in correct_levels: # skips = [ # # u'= {{-Hani-}} =', u'= {{-hani-}} =', u'= {{-hanzi-', # # u'= {{-mul-}} =', u'= {{-INT-}} =', u'= {{-Zmth-}} =', # # u'{{suffix ', u'{{morph', u'== Буква ==', # u'Словообразовательная единица', # ] # for skip in skips: # if skip in page.content: # return append_dict_list(self.wrong_level, title, full_header) if settings.ALLOW_CYR_PRINT: print "#wrong_level:", title, u"—", full_header
def change_header_action(self, page, before, header, after): title = page.title header_text = self.get_header(before, header, after) if ':' in title: return header_text level = len(before) header = header.strip() correct_level = header_levels.get(header, 0) has_affix = False for s in [u'{{suffix ', u'{{morph', u'Словообразовательная единица']: if s in page.content: has_affix = True break if title.startswith('-') or title.endswith('-'): # это точно словообразовательная единица if header in [u'Значение', u'Антонимы', u'Синонимы']: return header_text elif title.startswith('*'): # это точно праязык if header == u'Значение': return header_text elif has_affix: if header in [u'Значение', u'Антонимы', u'Синонимы']: return header_text elif len(title) == 1: if header in [u'Значение']: return header_text if correct_level and level > 1: if level != correct_level: return u'{} {} {}\n'.format('=' * correct_level, header, '=' * correct_level) return header_text
def check_header(self, page, before, header, after): morphs = [ u"прилагательное", u"наречие", u"существительное", u"междометие", u"частица", u"глагол", u"местоимение", u"причастие", u"деепричастие", u"союз", u"числительное", u"предлог", ] morphs += map(lambda x: x.capitalize(), list(morphs)) title = page.title # .decode('utf-8') # print title line = "%s%s%s" % (before, header, after) header = header.strip() if before != after: return # это другая ошибка (syntax) need_level = header_levels.get(header) level = len(before) if level > 2: # if level == 4: # hs = header.strip() # if hs and len(hs) > 1 and hs[0] == '-' or hs[-1:] == '-': # return # это для подразделов блока "Родственные слова" if not need_level: # print # print title # print line return line elif level == 2: if need_level: return # это другая ошибка (level) if header in morphs: return if u"{{заголовок|" in header: return # использования шаблона [{заголовок}} — норм rtitle = ( title.replace("$", "\$") .replace(")", "\)") .replace("(", "\(") .replace("*", "\*") .replace(".", "\.") .replace("?", "\?") ) pattern = u"^%s(?P<num> [IV]+)?( \((?P<morph>[а-я]+)\))?$" % rtitle # print pattern # todo: liquide: == существительное II == # todo: list: ==list IV(глагол)== cleaned_header = remove_stress(header) latin_replacer = {u"ā": u"a", u"ē": u"e", u"ī": u"i", u"ō": u"o", u"ū": u"u"} for key, value in latin_replacer.items(): cleaned_header = cleaned_header.replace(key, value) m = re.match(pattern, cleaned_header, flags=re.UNICODE) if not m: # print # print title # print line return line morph = m.group("morph") if morph: if morph not in morphs: # print # print title # print line return line return