Esempio n. 1
0
 def _read_patterns_from_file(self, path, encoding):
     """Read all patterns from file at `path`."""
     if not os.path.isfile(path): return
     basename = os.path.basename(path)
     extension = ".{}".format(self.pattern_type)
     if basename.endswith(".in"):
         extension = ".{}.in".format(self.pattern_type)
     code = basename.replace(extension, "")
     local = path.startswith(aeidon.DATA_HOME_DIR)
     patterns = self._patterns.setdefault(code, [])
     lines = aeidon.util.readlines(path, encoding)
     lines = [self._re_comment.sub("", x) for x in lines]
     lines = [x.strip() for x in lines]
     for line in (x for x in lines if x):
         if line.startswith("["):  # [HEADER]
             patterns.append(aeidon.Pattern())
             patterns[-1].local = local
         else:  # [_]KEY=VALUE
             name, value = line.split("=", 1)
             # Translatable fields used to be marked with a leading
             # underscore prior to version 1.3. We continue to support that
             # syntax in case users have local pattern files.
             name = name[1:] if name.startswith("_") else name
             # Regular expression patterns and replacements use null
             # character to avoid syntax issues that go against the GKeyFile
             # spec and would be "fixed" by msgfmt when merging translations.
             # https://github.com/otsaloma/gaupol/issues/70
             value = re.sub(r"\\0(?!\d)", "", value)
             patterns[-1].set_field(name, value)
Esempio n. 2
0
 def _read_patterns_from_file(self, path, encoding):
     """Read all patterns from file at `path`."""
     if not os.path.isfile(path): return
     basename = os.path.basename(path)
     extension = ".{}".format(self.pattern_type)
     if basename.endswith(".in"):
         extension = ".{}.in".format(self.pattern_type)
     code = basename.replace(extension, "")
     local = path.startswith(aeidon.DATA_HOME_DIR)
     patterns = self._patterns.setdefault(code, [])
     lines = aeidon.util.readlines(path, encoding)
     lines = [self._re_comment.sub("", x) for x in lines]
     lines = [x.strip() for x in lines]
     for line in (x for x in lines if x):
         if line.startswith("["): # [HEADER]
             patterns.append(aeidon.Pattern())
             patterns[-1].local = local
         else: # [_]KEY=VALUE
             name, value = line.split("=", 1)
             name = (name[1:] if name.startswith("_") else name)
             patterns[-1].set_field(name, value)
Esempio n. 3
0
 def setup_method(self, method):
     self.pattern = aeidon.Pattern()