diff options
author | Sylvain Viollon <sviollon@minddistrict.com> | 2018-10-18 12:28:45 +0200 |
---|---|---|
committer | Sylvain Viollon <sviollon@minddistrict.com> | 2018-10-18 12:28:45 +0200 |
commit | 13a729411191c94c4384f33c5daed1f408b352fc (patch) | |
tree | d3f598e591009a638c62c968ecf52edcf2e85c10 | |
parent | d73a4b79c31f931a0c73f8364ca82153d3845215 (diff) | |
download | zope-i18nmessageid-13a729411191c94c4384f33c5daed1f408b352fc.tar.gz |
Fix override with None.
-rw-r--r-- | src/zope/i18nmessageid/message.py | 29 | ||||
-rw-r--r-- | src/zope/i18nmessageid/tests.py | 17 |
2 files changed, 28 insertions, 18 deletions
diff --git a/src/zope/i18nmessageid/message.py b/src/zope/i18nmessageid/message.py index 72c8441..4bfcb19 100644 --- a/src/zope/i18nmessageid/message.py +++ b/src/zope/i18nmessageid/message.py @@ -14,6 +14,7 @@ """I18n Messages and factories. """ __docformat__ = "reStructuredText" +_marker = object() import six @@ -32,21 +33,29 @@ class Message(six.text_type): 'domain', 'default', 'mapping', '_readonly', 'msgid_plural', 'default_plural', 'number') - def __new__(cls, ustr, domain=None, default=None, mapping=None, - msgid_plural=None, default_plural=None, number=None): + def __new__(cls, ustr, domain=_marker, default=_marker, mapping=_marker, + msgid_plural=_marker, default_plural=_marker, number=_marker): self = six.text_type.__new__(cls, ustr) if isinstance(ustr, self.__class__): - domain = domain if ustr.domain is None else ustr.domain[:] - default = default if ustr.default is None else ustr.default[:] - mapping = mapping if ustr.mapping is None else ustr.mapping.copy() + domain = ustr.domain[:] if domain is _marker else domain + default = ustr.default[:] if default is _marker else default + mapping = ustr.mapping.copy() if mapping is _marker else mapping msgid_plural = ( - msgid_plural if ustr.msgid_plural is None else - ustr.msgid_plural[:]) + ustr.msgid_plural[:] if msgid_plural is _marker else + msgid_plural) default_plural = ( - default_plural if ustr.default_plural is None else - ustr.default_plural[:]) - number = number if ustr.number is None else ustr.number + ustr.default_plural[:] if default_plural is _marker else + default_plural) + number = ustr.number if number is _marker else number ustr = six.text_type(ustr) + else: + domain = None if domain is _marker else domain + default = None if default is _marker else default + mapping = None if mapping is _marker else mapping + msgid_plural = None if msgid_plural is _marker else msgid_plural + default_plural = (None if default_plural is _marker else + default_plural) + number = None if number is _marker else number self.domain = domain self.default = default diff --git a/src/zope/i18nmessageid/tests.py b/src/zope/i18nmessageid/tests.py index 13200f4..56074c1 100644 --- a/src/zope/i18nmessageid/tests.py +++ b/src/zope/i18nmessageid/tests.py @@ -118,17 +118,18 @@ class PyMessageTests(unittest.TestCase): def test_copy_with_overrides(self): mapping = {'key': 'value'} - source = self._makeOne('testing') + source = self._makeOne( + 'testing', 'domain', default='other', mapping=mapping, + msgid_plural='workings', default_plural='others', number=3) message = self._makeOne( - source, 'domain', 'default', mapping, - msgid_plural='testings', default_plural="defaults", number=2) + source, mapping=None, msgid_plural='override', number=0) self.assertEqual(message, 'testing') self.assertEqual(message.domain, 'domain') - self.assertEqual(message.default, 'default') - self.assertEqual(message.mapping, mapping) - self.assertEqual(message.msgid_plural, 'testings') - self.assertEqual(message.default_plural, 'defaults') - self.assertEqual(message.number, 2) + self.assertEqual(message.default, 'other') + self.assertEqual(message.mapping, None) + self.assertEqual(message.msgid_plural, 'override') + self.assertEqual(message.default_plural, 'others') + self.assertEqual(message.number, 0) if self._TEST_READONLY: self.assertTrue(message._readonly) |