Exemplo n.º 1
0
    def multistring_to_rich(cls, mulstring):
        """Convert a multistring to a list of "rich" string trees:

           >>> target = multistring([u'foo', u'bar', u'baz'])
           >>> TranslationUnit.multistring_to_rich(target)
           [<StringElem([<StringElem([u'foo'])>])>,
            <StringElem([<StringElem([u'bar'])>])>,
            <StringElem([<StringElem([u'baz'])>])>]
        """
        if isinstance(mulstring, multistring):
            return [rich_parse(s, cls.rich_parsers) for s in mulstring.strings]
        return [rich_parse(mulstring, cls.rich_parsers)]
Exemplo n.º 2
0
    def test_rich_set(self):
        """Basic test for converting from multistrings to StringElem trees."""
        elems = [
            rich_parse(u'Tëst <x>string</x>', general.parsers),
            rich_parse(u'Another test string.', general.parsers),
        ]
        unit = self.UnitClass(multistring([u'a', u'b']))
        unit.rich_target = elems

        if unit.hasplural():
            assert unit.target.strings[0] == u'Tëst <x>string</x>'
            assert unit.target.strings[1] == u'Another test string.'
        else:
            assert unit.target == u'Tëst <x>string</x>'
Exemplo n.º 3
0
    def test_rich_set(self):
        """Basic test for converting from multistrings to StringElem trees."""
        elems = [
            rich_parse(u'Tëst <x>string</x>', general.parsers),
            rich_parse(u'Another test string.', general.parsers),
        ]
        unit = self.UnitClass(multistring([u'a', u'b']))
        unit.rich_target = elems

        if unit.hasplural():
            assert unit.target.strings[0] == u'Tëst <x>string</x>'
            assert unit.target.strings[1] == u'Another test string.'
        else:
            assert unit.target == u'Tëst <x>string</x>'
Exemplo n.º 4
0
    def test_rich_set(self):
        """Basic test for converting from multistrings to StringElem trees."""
        elems = [
            rich_parse("Tëst <x>string</x>", general.parsers),
            rich_parse("Another test string.", general.parsers),
        ]
        unit = self.UnitClass(multistring(["a", "b"]))
        unit.rich_target = elems

        if unit.hasplural():
            assert unit.target.strings[0] == "Tëst <x>string</x>"
            assert unit.target.strings[1] == "Another test string."
        else:
            assert unit.target == "Tëst <x>string</x>"
Exemplo n.º 5
0
 def convertunit(self, unit, prefix):
     if self.ignorefunc:
         if self.ignorefunc(unit):
             return unit
     if prefix.find("@hash_placeholder@") != -1:
         if unit.getlocations():
             hashable = unit.getlocations()[0]
         else:
             hashable = unit.source
         prefix = prefix.replace(
             "@hash_placeholder@",
             md5(hashable.encode('utf-8')).hexdigest()[:self.hash_len])
     if unit.istranslated():
         rich_string = unit.rich_target
     else:
         rich_string = unit.rich_source
     if not isinstance(rich_string, StringElem):
         rich_string = [
             rich_parse(string, podebug_parsers) for string in rich_string
         ]
     if self.rewritefunc:
         rewritten = [self.rewritefunc(string) for string in rich_string]
         if rewritten:
             rich_string = rewritten
     unit.rich_target = add_prefix(prefix, rich_string)
     return unit
Exemplo n.º 6
0
    def transform_characters_preserving_placeholders(self, s, transform):
        rich_string = rich_parse(s, self.PRESERVE_PLACEABLE_PARSERS)
        string_elements = rich_string.depth_first(filter=lambda e: e.isleaf())

        transformed = []

        for element in string_elements:
            if element.istranslatable:
                for character in str(element):
                    transformed.append(transform(character))
            else:
                transformed.append(element.sub[0])

        return u''.join(transformed)
Exemplo n.º 7
0
    def transform_characters_preserving_placeholders(self, s, transform):
        rich_string = rich_parse(s, self.PRESERVE_PLACEABLE_PARSERS)
        string_elements = rich_string.depth_first(filter=lambda e: e.isleaf())

        transformed = []

        for element in string_elements:
            if element.istranslatable:
                for character in str(element):
                    transformed.append(transform(character))
            else:
                transformed.append(element.sub[0])

        return u''.join(transformed)
Exemplo n.º 8
0
 def convertunit(self, unit, prefix):
     if self.ignorefunc:
         if self.ignorefunc(unit):
             return unit
     if prefix.find("@hash_placeholder@") != -1:
         if unit.getlocations():
             hashable = unit.getlocations()[0]
         else:
             hashable = unit.source
         prefix = prefix.replace("@hash_placeholder@", hash.md5_f(hashable).hexdigest()[:self.hash_len])
     rich_source = unit.rich_source
     if not isinstance(rich_source, StringElem):
         rich_source = [rich_parse(string, podebug_parsers) for string in rich_source]
     if self.rewritefunc:
         rewritten = [self.rewritefunc(string) for string in rich_source]
         if rewritten:
             unit.rich_target = rewritten
     elif not unit.istranslated():
         unit.rich_target = unit.rich_source
     unit.rich_target = add_prefix(prefix, unit.rich_target)
     return unit