Browse Source

Fix banner placement logic for shell-less banners.

tags/v0.3
Ben Kurtovic 7 years ago
parent
commit
ce591e76e7
1 changed files with 15 additions and 13 deletions
  1. +15
    -13
      earwigbot/tasks/wikiproject_tagger.py

+ 15
- 13
earwigbot/tasks/wikiproject_tagger.py View File

@@ -103,8 +103,6 @@ class WikiProjectTagger(Task):
r"failed ?ga$", r"failed ?ga$",
r"old ?prod( ?full)?$", r"old ?prod( ?full)?$",
r"(old|previous) ?afd$", r"(old|previous) ?afd$",

r"((wikiproject|wp) ?)?bio(graph(y|ies))?$",
] ]


@staticmethod @staticmethod
@@ -398,22 +396,26 @@ class WikiProjectTagger(Task):


def add_banner(self, code, banner): def add_banner(self, code, banner):
"""Add *banner* to *code*, following template order conventions.""" """Add *banner* to *code*, following template order conventions."""
index = 0
for i, template in enumerate(code.ifilter_templates()):
predecessor = None
for template in code.ifilter_templates():
name = template.name.lower().replace("_", " ") name = template.name.lower().replace("_", " ")
for regex in self.TOP_TEMPS: for regex in self.TOP_TEMPS:
if re.match(regex, name): if re.match(regex, name):
self.logger.debug(u"Adding after top template: %s", name)
index = i + 1
self.logger.debug(u"Skipping past top template: %s", name)
predecessor = template
break
if "wikiproject" in name or name.startswith("wp"): if "wikiproject" in name or name.startswith("wp"):
self.logger.debug(u"Adding after banner template: %s", name)
index = i + 1

self.logger.debug(u"Inserting banner at index %s", index)
if index > 0 and not unicode(code.get(index - 1)).endswith("\n"):
banner = "\n" + banner
code.insert(index, banner + "\n")
self.logger.debug(u"Skipping past banner template: %s", name)
predecessor = template


if predecessor:
self.logger.debug("Inserting banner after template")
if not unicode(predecessor).endswith("\n"):
banner = "\n" + banner
code.insert_after(predecessor, banner + "\n")
else:
self.logger.debug("Inserting banner at beginning")
code.insert(0, banner + "\n")


class _Job(object): class _Job(object):
"""Represents a single wikiproject-tagging task. """Represents a single wikiproject-tagging task.


Loading…
Cancel
Save