Skip to contentSkip to conversation

ScrapeTargets: use translate instead of regex

PATCH In review Stephano Cetola 2 participants 2 messages Jul 15, 2017 – Jul 17, 2017

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 ScrapeTargets: use translate instead of regex

From some quick tests the string translate function is comparable in efficiency and certainly more legible than regex. We should note that if we ever move this functionality to an environment running python3, the translate function takes one dictionary argument, but functions in much the same way.

---
 .../site-packages/autobuilder/buildsteps/ScrapeTargets.py          | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)
lib/python2.7/site-packages/autobuilder/buildsteps/ScrapeTargets.py +4 -3
index ceed0c709..0480f3de3 100644
@@ -57,9 +57,10 @@ class ScrapeTargets(ShellCommand):
             targets = res.group()
             # Try and ensure we scrape the target regardless of which
             # assignment operator is used and surrounding whitespace
-            targets = re.sub('%s *\??\??:?.?\+?=\+?\.? *\"' % self.targetsvar, '', targets, 1)
-            targets = targets.replace('\\', '')
-            targets = targets.replace('\n', '')
+            targets = targets.replace(self.targetsvar, '')
+            targets = targets.translate(None, ':+?="')
+            targets = targets.replace("\\", "")
+            targets = targets.replace ("\n", "")
         self.setProperty("scraped_targets",
                          targets,
                          'Targets "%s" scraped from %s' % (targets,
Signature · 1 line
2.13.2
#1 lore raw
Quoted 5 lines · Stephano Cetola

From some quick tests the string translate function is comparable in efficiency and certainly more legible than regex. We should note that if we ever move this functionality to an environment running python3, the translate function takes one dictionary argument, but functions in much the same way.

Oh, I didn't know about translate. Neat, thanks! Merged.

Joshua

Quoted 34 lines

---
 .../site-packages/autobuilder/buildsteps/ScrapeTargets.py          | 7 ++++---

 1 file changed, 4 insertions(+), 3 deletions(-)
(quoted diff) +0 -0

packages/autobuilder/buildsteps/ScrapeTargets.py b/lib/python2.7/site-packages/autobuilder/buildsteps/ScrapeTargets.py index ceed0c709..0480f3de3 100644
--- a/lib/python2.7/site- packages/autobuilder/buildsteps/ScrapeTargets.py
+++ b/lib/python2.7/site- packages/autobuilder/buildsteps/ScrapeTargets.py

(quoted diff) +0 -0
@@ -57,9 +57,10 @@ class ScrapeTargets(ShellCommand):
              targets = res.group()
              # Try and ensure we scrape the target regardless of

which

             # assignment operator is used and surrounding whitespace
-            targets = re.sub('%s *\??\??:?.?\+?=\+?\.? *\"' %
self.targetsvar, '', targets, 1)
-            targets = targets.replace('\\', '')
-            targets = targets.replace('\n', '')
+            targets = targets.replace(self.targetsvar, '')
+            targets = targets.translate(None, ':+?="')
+            targets = targets.replace("\\", "")
+            targets = targets.replace ("\n", "")
         self.setProperty("scraped_targets",
                          targets,
                          'Targets "%s" scraped from %s' % (targets,
-- 
2.13.2