From 642a29b022ade48b8e9e11d93d3ff380b0de737b Mon Sep 17 00:00:00 2001 From: Jonathan Golder Date: Thu, 24 Aug 2017 18:47:18 +0200 Subject: [PATCH 1/2] Improve regex for blank lines Do not match consecutive linebreaks as one Related Task: [FS#141](https://fs.golderweb.de/index.php?do=details&task_id=141) --- bots/markpages.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bots/markpages.py b/bots/markpages.py index 81891c7..c6b5e18 100644 --- a/bots/markpages.py +++ b/bots/markpages.py @@ -227,7 +227,7 @@ class MarkPagesBot( CurrentPageBot ): # sets 'current_page' on each treat() # Filter one linebreak if isinstance( self.current_wikicode.get( insert_after_index + 1), mwparser.nodes.text.Text ) and \ - re.search( r"^\n\s+$", self.current_wikicode.get( + re.search( r"^\n[^\n\S]+$", self.current_wikicode.get( insert_after_index + 1 ).value ): insert_after_index += 1 From 31c10073a2313a1d337d7bde51229765d78da3b9 Mon Sep 17 00:00:00 2001 From: Jonathan Golder Date: Fri, 25 Aug 2017 17:09:38 +0200 Subject: [PATCH 2/2] Prevent index errors searching for comments Make sure not to exceed existing indexes of wikicode object while trying to search for comments Related Task: [FS#141](https://fs.golderweb.de/index.php?do=details&task_id=141) --- bots/markpages.py | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/bots/markpages.py b/bots/markpages.py index c6b5e18..5fa7f36 100644 --- a/bots/markpages.py +++ b/bots/markpages.py @@ -224,25 +224,28 @@ class MarkPagesBot( CurrentPageBot ): # sets 'current_page' on each treat() insert_after_index = self.current_wikicode.index( ltemplates[-1] ) - # Filter one linebreak - if isinstance( self.current_wikicode.get( - insert_after_index + 1), mwparser.nodes.text.Text ) and \ - re.search( r"^\n[^\n\S]+$", self.current_wikicode.get( - insert_after_index + 1 ).value ): + # If there is more content + if len(self.current_wikicode.nodes) > (insert_after_index + 1): + # Filter one linebreak + if isinstance( self.current_wikicode.get( + insert_after_index + 1), + mwparser.nodes.text.Text) and \ + re.search( r"^\n[^\n\S]+$", self.current_wikicode.get( + insert_after_index + 1 ).value ): - insert_after_index += 1 + insert_after_index += 1 - while isinstance( - self.current_wikicode.get(insert_after_index + 1), - mwparser.nodes.comment.Comment ): + while len(self.current_wikicode.nodes) > \ + (insert_after_index + 1) and \ + isinstance( + self.current_wikicode.get(insert_after_index + 1), + mwparser.nodes.comment.Comment ): - insert_after_index += 1 + insert_after_index += 1 - else: - - self.current_wikicode.insert_after( - self.current_wikicode.get(insert_after_index), - self.disc_notice ) + self.current_wikicode.insert_after( + self.current_wikicode.get(insert_after_index), + self.disc_notice ) # To have it in its own line we need to add a linbreak before self.current_wikicode.insert_before(self.disc_notice, "\n" )