From 09e57bb4f7e46f0093c681669200dd9a9af05336 Mon Sep 17 00:00:00 2001 From: Nicolas Date: Fri, 10 Jul 2020 08:45:56 +0200 Subject: [PATCH] T257585: Restrict automatic bot fix for #19 --- .../algorithm/CheckErrorAlgorithm019.java | 25 ++++++++++++++++--- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/WikipediaCleaner/src/org/wikipediacleaner/api/check/algorithm/CheckErrorAlgorithm019.java b/WikipediaCleaner/src/org/wikipediacleaner/api/check/algorithm/CheckErrorAlgorithm019.java index 7d7252c41..2ca9743dd 100644 --- a/WikipediaCleaner/src/org/wikipediacleaner/api/check/algorithm/CheckErrorAlgorithm019.java +++ b/WikipediaCleaner/src/org/wikipediacleaner/api/check/algorithm/CheckErrorAlgorithm019.java @@ -11,6 +11,7 @@ import java.util.List; import org.wikipediacleaner.api.check.CheckErrorResult; +import org.wikipediacleaner.api.data.Page; import org.wikipediacleaner.api.data.PageElementTitle; import org.wikipediacleaner.api.data.analysis.PageAnalysis; @@ -58,10 +59,15 @@ public boolean analyze( CheckErrorResult errorResult = createCheckErrorResult( analysis, title.getBeginIndex(), title.getEndIndex()); - if ((firstDetection) && (titleIndex == titles.size() - 1)) { - errorResult.addReplacement( - PageElementTitle.createTitle(2, title.getTitle(), title.getAfterTitle()), - true); + if (firstDetection) { + if (titleIndex == titles.size() - 1) { + errorResult.addReplacement( + PageElementTitle.createTitle(2, title.getTitle(), title.getAfterTitle()), + true); + } else if ((titleIndex == 0) && + Page.areSameTitle(analysis.getPage().getTitle(), title.getTitle())) { + errorResult.addReplacement(title.getAfterTitle(), true); + } } errorResult.addEditTocAction(title); errors.add(errorResult); @@ -82,6 +88,10 @@ protected String internalBotFix(PageAnalysis analysis) { if (!analysis.areTitlesReliable()) { return contents; } + if (!analysis.getPage().isInMainNamespace() || + !analysis.getPage().isArticle()) { + return contents; + } // Compute minimum title level List titles = analysis.getTitles(); @@ -93,14 +103,21 @@ protected String internalBotFix(PageAnalysis analysis) { return contents; } int minTitle = Integer.MAX_VALUE; + int minTitleCount = 0; for (PageElementTitle title : titles) { if (title.getLevel() < minTitle) { minTitle = title.getLevel(); + minTitleCount = 1; + } else if (title.getLevel() == minTitle) { + minTitleCount++; } } if (minTitle > 1) { return contents; } + if ((minTitleCount == 1) && (titles.size() > 1)) { + return fixUsingAutomaticReplacement(analysis); + } // Replace titles StringBuilder tmp = new StringBuilder();