]> git.parisson.com Git - docker-django-scripts.git/commitdiff
use python replace instead of sed
authorGuillaume Pellerin <guillaume.pellerin@ircam.fr>
Fri, 29 Oct 2021 14:27:00 +0000 (16:27 +0200)
committerGuillaume Pellerin <guillaume.pellerin@ircam.fr>
Fri, 29 Oct 2021 14:27:00 +0000 (16:27 +0200)
misc/statifier.py

index b4bdb715f9f933975042f3d440de47e04f36ec1e..b2cfe9bbd7d9b2ed43570131c4fcefd47940d673 100644 (file)
@@ -9,6 +9,8 @@ class Statifier:
   def __init__(self, domain, languages):
     self.domain = domain
     self.languages = languages
+    self.replace_dict = {
+    }
 
   def wget(self, language, dir):
     command = 'wget -q --mirror -p --adjust-extension --header="Accept-Language: %s" -e robots=off --base=./ -k -P %s https://%s' % (language, dir, self.domain)
@@ -20,25 +22,38 @@ class Statifier:
     # print(command)
     os.system(command)
 
-  def fix_languages(self, dir, language):
-    rule = 's,<form action="https://%s/i18n/" method="post" class="c-header__languages">,,g' % self.domain
-    self.sed(dir, rule)
-
-    rule = 's,<button class="c-header__language is-active" type="submit" name="language" value="%s">%s</button>,<a href="/%s/"><button class="c-header__language\" type="button" name="language" value="%s">\&nbsp\; %s \&nbsp\;</button></a>,g' \
-      % (language, language.upper(), language, language, language.upper())
-    self.sed(dir, rule)
-
-    rule = 's,<button class="c-header__language" type="submit" name="language" value="%s">%s</button>,<a href="/%s/"><button class="c-header__language\" type="button" name="language" value="%s">\&nbsp\; %s \&nbsp\;</button></a>,g' \
-      % (language, language.upper(), language, language, language.upper())
-    self.sed(dir, rule)
-
-    rule = 's,<button class="c-header__language is-active" type="submit" name="language" value="%s">%s</button></form>,<a href="/%s/"><button class="c-header__language\" type="button" name="language" value="%s">\&nbsp\; %s \&nbsp\;</button></a>,g' \
-      % (language, language.upper(), language, language, language.upper())
-    self.sed(dir, rule)
-
-    rule = 's,<button class="c-header__language" type="submit" name="language" value="%s">%s</button></form>,<a href="/%s/"><button class="c-header__language\" type="button" name="language" value="%s">\&nbsp\; %s \&nbsp\;</button></a>,g' \
-      % (language, language.upper(), language, language, language.upper())
-    self.sed(dir, rule)
+  def fix_languages(self, language):
+    for root, dirs, files in os.walk(self.domain):
+      for filename in files:
+        name = os.path.splitext(filename)[0]
+        ext = os.path.splitext(filename)[1][1:]
+        if ext == 'html':
+          path = root + os.sep + filename
+          rel_root = root.split('/')[2:]
+          rel_root = language + '/' + '/'.join(rel_root)
+          print(rel_root)
+
+          f = open(path, 'rt')
+          content = f.read()
+          f.close()
+
+          s_in = '<form action="https://%s/i18n/" method="post" class="c-header__languages">' % self.domain
+          s_out = ''
+          content = content.replace(s_in, s_out)
+
+          s_in = '<button class="c-header__language is-active" type="submit" name="language" value="%s">%s</button>' % (language, language.upper())
+          s_out = '<a href="/%s/">' + s_in + '</a>'
+          s_out = s_out % rel_root
+          content = content.replace(s_in, s_out)
+
+          s_in = '<button class="c-header__language" type="submit" name="language" value="%s">%s</button>' % (language, language.upper())
+          s_out = '<a href="/%s/">' + s_in + '</a>'
+          s_out = s_out % rel_root
+          content = content.replace(s_in, s_out)
+
+          f = open(path, 'wt')
+          f.write(content)
+          f.close()
 
   def main(self):
     for language in self.languages:
@@ -46,7 +61,7 @@ class Statifier:
       shutil.move(self.domain + os.sep + self.domain, self.domain + os.sep + language)
 
     for language in self.languages:
-      self.fix_languages(self.domain, language)
+      self.fix_languages(language)
 
 
 def main():