i18n: fix "% inside _()" problems stable
authorFUJIWARA Katsunori <foozy@lares.dti.ne.jp>
Tue, 01 Apr 2014 02:46:03 +0900
branchstable
changeset 20869 9658a79968c6
parent 20868 5db105f216c3
child 20870 6500a2eebee8
child 20871 e01cff65f4c5
i18n: fix "% inside _()" problems Before this patch, "contrib/check-code.py" can't detect these problems, because the regexp pattern to detect "% inside _()" doesn't suppose the case that format string consists of multiple string components concatenated implicitly or explicitly, This patch does below for that regexp pattern to detect "% inside _()" problems in such case. - put "+" into separator part ("[ \t\n]") for explicit concatenation ("...." + "...." style) - enclose "component and separator" part by "(?:....)+" for concatenation itself ("...." "...." or "...." + "....")
contrib/check-code.py
hgext/eol.py
mercurial/patch.py
mercurial/subrepo.py
--- a/contrib/check-code.py	Tue Apr 01 02:46:03 2014 +0900
+++ b/contrib/check-code.py	Tue Apr 01 02:46:03 2014 +0900
@@ -198,8 +198,8 @@
     (r'\s<>\s', '<> operator is not available in Python 3+, use !='),
     (r'^\s*\t', "don't use tabs"),
     (r'\S;\s*\n', "semicolon"),
-    (r'[^_]_\("[^"]+"[ \t\n]*%', "don't use % inside _()"),
-    (r"[^_]_\('[^']+'[ \t\n]*%", "don't use % inside _()"),
+    (r'[^_]_\((?:"[^"]+"[ \t\n+]*)+%', "don't use % inside _()"),
+    (r"[^_]_\((?:'[^']+'[ \t\n+]*)+%", "don't use % inside _()"),
     (r'(\w|\)),\w', "missing whitespace after ,"),
     (r'(\w|\))[+/*\-<>]\w', "missing whitespace in expression"),
     (r'^\s+(\w|\.)+=\w[^,()\n]*$', "missing whitespace in assignment"),
--- a/hgext/eol.py	Tue Apr 01 02:46:03 2014 +0900
+++ b/hgext/eol.py	Tue Apr 01 02:46:03 2014 +0900
@@ -344,7 +344,7 @@
                     continue
                 if inconsistenteol(data):
                     raise util.Abort(_("inconsistent newline style "
-                                       "in %s\n" % f))
+                                       "in %s\n") % f)
             return super(eolrepo, self).commitctx(ctx, error)
     repo.__class__ = eolrepo
     repo._hgcleardirstate()
--- a/mercurial/patch.py	Tue Apr 01 02:46:03 2014 +0900
+++ b/mercurial/patch.py	Tue Apr 01 02:46:03 2014 +0900
@@ -711,7 +711,7 @@
         if self.exists and self.create:
             if self.copysource:
                 self.ui.warn(_("cannot create %s: destination already "
-                               "exists\n" % self.fname))
+                               "exists\n") % self.fname)
             else:
                 self.ui.warn(_("file %s already exists\n") % self.fname)
             self.rej.append(h)
--- a/mercurial/subrepo.py	Tue Apr 01 02:46:03 2014 +0900
+++ b/mercurial/subrepo.py	Tue Apr 01 02:46:03 2014 +0900
@@ -1021,7 +1021,7 @@
     def remove(self):
         if self.dirty():
             self._ui.warn(_('not removing repo %s because '
-                            'it has changes.\n' % self._path))
+                            'it has changes.\n') % self._path)
             return
         self._ui.note(_('removing subrepo %s\n') % self._path)