OLD | NEW |
1 # This Source Code Form is subject to the terms of the Mozilla Public | 1 # This Source Code Form is subject to the terms of the Mozilla Public |
2 # License, v. 2.0. If a copy of the MPL was not distributed with this | 2 # License, v. 2.0. If a copy of the MPL was not distributed with this |
3 # file, You can obtain one at http://mozilla.org/MPL/2.0/. | 3 # file, You can obtain one at http://mozilla.org/MPL/2.0/. |
4 | 4 |
5 import re | 5 import re |
6 import os | 6 import os |
7 import sys | 7 import sys |
8 import codecs | 8 import codecs |
9 import json | 9 import json |
10 import urllib | 10 import urllib |
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
194 return parseString(data, path) | 194 return parseString(data, path) |
195 | 195 |
196 | 196 |
197 def generateStringEntry(key, value, path): | 197 def generateStringEntry(key, value, path): |
198 if path.endswith('.dtd'): | 198 if path.endswith('.dtd'): |
199 return '<!ENTITY %s "%s">\n' % (escapeEntity(key), escapeEntity(value)) | 199 return '<!ENTITY %s "%s">\n' % (escapeEntity(key), escapeEntity(value)) |
200 else: | 200 else: |
201 return '%s=%s\n' % (escapeProperty(key), escapeProperty(value)) | 201 return '%s=%s\n' % (escapeProperty(key), escapeProperty(value)) |
202 | 202 |
203 | 203 |
204 def appendToFile(path, key, value): | |
205 fileHandle = codecs.open(path, 'ab', encoding='utf-8') | |
206 fileHandle.write(generateStringEntry(key, value, path)) | |
207 fileHandle.close() | |
208 | |
209 | |
210 def removeFromFile(path, key): | |
211 fileHandle = codecs.open(path, 'rb', encoding='utf-8') | |
212 data = fileHandle.read() | |
213 fileHandle.close() | |
214 | |
215 if path.endswith('.dtd'): | |
216 data = re.sub(r'<!ENTITY\s+%s\s+"[^"]*">\s*' % key, '', data, re.S) | |
217 else: | |
218 data = re.sub(r'(^|\n)%s=[^\n]*\n' % key, r'\1', data, re.S) | |
219 | |
220 fileHandle = codecs.open(path, 'wb', encoding='utf-8') | |
221 fileHandle.write(data) | |
222 fileHandle.close() | |
223 | |
224 | |
225 def toJSON(path): | 204 def toJSON(path): |
226 fileHandle = codecs.open(path, 'rb', encoding='utf-8') | 205 fileHandle = codecs.open(path, 'rb', encoding='utf-8') |
227 data = fileHandle.read() | 206 data = fileHandle.read() |
228 fileHandle.close() | 207 fileHandle.close() |
229 | 208 |
230 if path.endswith('.dtd'): | 209 if path.endswith('.dtd'): |
231 it = parseDTDString(data, path) | 210 it = parseDTDString(data, path) |
232 elif path.endswith('.properties'): | 211 elif path.endswith('.properties'): |
233 it = parsePropertiesString(data, path) | 212 it = parsePropertiesString(data, path) |
234 else: | 213 else: |
(...skipping 249 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
484 | 463 |
485 # Remove any extra files | 464 # Remove any extra files |
486 for dir, files in dirs.iteritems(): | 465 for dir, files in dirs.iteritems(): |
487 baseDir = os.path.join(localeConfig['base_path'], dir) | 466 baseDir = os.path.join(localeConfig['base_path'], dir) |
488 if not os.path.exists(baseDir): | 467 if not os.path.exists(baseDir): |
489 continue | 468 continue |
490 for file in os.listdir(baseDir): | 469 for file in os.listdir(baseDir): |
491 path = os.path.join(baseDir, file) | 470 path = os.path.join(baseDir, file) |
492 if os.path.isfile(path) and (file.endswith('.json') or file.endswith
('.properties') or file.endswith('.dtd')) and not file in files: | 471 if os.path.isfile(path) and (file.endswith('.json') or file.endswith
('.properties') or file.endswith('.dtd')) and not file in files: |
493 os.remove(path) | 472 os.remove(path) |
OLD | NEW |