1
2
3
4 from translate.storage import po
5 from translate.storage import xliff
6 from translate.tools import pogrep
7 from translate.misc import wStringIO
8
15
16 - def pogrep(self, posource, searchstring, cmdlineoptions=None):
25
27 """grep for a string in the source"""
28 posource = '#: test.c\nmsgid "test"\nmsgstr "rest"\n'
29 poresult = self.pogrep(posource, "test", ["--search=msgid"])
30 assert poresult == posource
31 poresult = self.pogrep(posource, "rest", ["--search=msgid"])
32 assert poresult == ""
33
35 """grep for a string in the target"""
36 posource = '#: test.c\nmsgid "test"\nmsgstr "rest"\n'
37 poresult = self.pogrep(posource, "rest", ["--search=msgstr"])
38 assert poresult == posource
39 poresult = self.pogrep(posource, "test", ["--search=msgstr"])
40 assert poresult == ""
41
43 """grep for a string in the location comments"""
44 posource = '#: test.c\nmsgid "test"\nmsgstr "rest"\n'
45 poresult = self.pogrep(posource, "test.c", ["--search=locations"])
46 assert poresult == posource
47 poresult = self.pogrep(posource, "rest.c", ["--search=locations"])
48 assert poresult == ""
49
57
59 """check that we can grep unicode messages and use unicode search strings"""
60 poascii = '# comment\n#: test.c\nmsgid "test"\nmsgstr "rest"\n'
61 pounicode = '# comment\n#: test.c\nmsgid "test"\nmsgstr "rešṱ"\n'
62 queryascii = 'rest'
63 queryunicode = 'rešṱ'
64 for source, search, expected in [(poascii, queryascii, poascii),
65 (poascii, queryunicode, ''),
66 (pounicode, queryascii, ''),
67 (pounicode, queryunicode, pounicode)]:
68 print "Source:\n%s\nSearch: %s\n" % (source, search)
69 poresult = self.pogrep(source, search)
70 assert poresult == expected
71
73 """check that we can grep unicode messages and use unicode regex search strings"""
74 poascii = '# comment\n#: test.c\nmsgid "test"\nmsgstr "rest"\n'
75 pounicode = '# comment\n#: test.c\nmsgid "test"\nmsgstr "rešṱ"\n'
76 queryascii = 'rest'
77 queryunicode = 'rešṱ'
78 for source, search, expected in [(poascii, queryascii, poascii),
79 (poascii, queryunicode, ''),
80 (pounicode, queryascii, ''),
81 (pounicode, queryunicode, pounicode)]:
82 print "Source:\n%s\nSearch: %s\n" % (source, search)
83 poresult = self.pogrep(source, search, ["--regexp"])
84 assert poresult == expected
85
87 """check that we normlise unicode strings before comparing"""
88 source_template = u'# comment\n#: test.c\nmsgid "test"\nmsgstr "t%sst"\n'
89
90
91
92 groups = [(u"\u00e9", u"\u0065\u0301"), \
93 (u"\u1e3c", u"\u004c\u032d"), \
94 (u"\u1e4e", u"\u004f\u0303\u0308", u"\u00d5\u0308")]
95 for letters in groups:
96 for source_letter in letters:
97 source = source_template % source_letter
98 for search_letter in letters:
99 print search_letter.encode('utf-8')
100 poresult = self.pogrep(source, search_letter)
101 assert poresult == source.encode('utf-8')
102
104 xliff_skeleton = '''<?xml version="1.0" ?>
105 <xliff version="1.1" xmlns="urn:oasis:names:tc:xliff:document:1.1">
106 <file original="filename.po" source-language="en-US" datatype="po">
107 <body>
108 %s
109 </body>
110 </file>
111 </xliff>'''
112
113 xliff_text = xliff_skeleton % '''<trans-unit>
114 <source>rêd</source>
115 <target>rooi</target>
116 </trans-unit>'''
117
123
124 - def xliff_grep(self, xliff_text, searchstring, cmdlineoptions=None):
132
143