summaryrefslogtreecommitdiff
path: root/packages/gwt-chromium/resources/rewrite-locale
diff options
context:
space:
mode:
authorYves Fischer <yvesf-git@xapek.org>2015-12-20 18:47:45 +0100
committerYves Fischer <yvesf-git@xapek.org>2015-12-20 18:47:45 +0100
commit570c0a93fb24a393a2bf013a5aad5b6759713ce7 (patch)
tree430499b41b4defac779fa3f3967bf0fa7af9f418 /packages/gwt-chromium/resources/rewrite-locale
downloaddebian-packages-570c0a93fb24a393a2bf013a5aad5b6759713ce7.tar.gz
debian-packages-570c0a93fb24a393a2bf013a5aad5b6759713ce7.zip
start migrating from shell scripts
Diffstat (limited to 'packages/gwt-chromium/resources/rewrite-locale')
-rwxr-xr-xpackages/gwt-chromium/resources/rewrite-locale/data_pack.py115
-rw-r--r--packages/gwt-chromium/resources/rewrite-locale/input.pakbin0 -> 196003 bytes
-rw-r--r--packages/gwt-chromium/resources/rewrite-locale/output.pakbin0 -> 196603 bytes
3 files changed, 115 insertions, 0 deletions
diff --git a/packages/gwt-chromium/resources/rewrite-locale/data_pack.py b/packages/gwt-chromium/resources/rewrite-locale/data_pack.py
new file mode 100755
index 0000000..ba9790b
--- /dev/null
+++ b/packages/gwt-chromium/resources/rewrite-locale/data_pack.py
@@ -0,0 +1,115 @@
+#!/usr/bin/env python
+# Copyright (c) 2012 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+"""Support for formatting a data pack file used for platform agnostic resource
+files.
+"""
+
+import collections
+import exceptions
+import os
+import struct
+import sys
+if __name__ == '__main__':
+ sys.path.append(os.path.join(os.path.dirname(__file__), '../..'))
+
+
+PACK_FILE_VERSION = 4
+HEADER_LENGTH = 2 * 4 + 1 # Two uint32s. (file version, number of entries) and
+ # one uint8 (encoding of text resources)
+BINARY, UTF8, UTF16 = range(3)
+
+
+class WrongFileVersion(Exception):
+ pass
+
+
+DataPackContents = collections.namedtuple(
+ 'DataPackContents', 'resources encoding')
+
+
+def ReadDataPack(input_file):
+ """Reads a data pack file and returns a dictionary."""
+ data = open(input_file, "rb").read()
+ original_data = data
+
+ # Read the header.
+ version, num_entries, encoding = struct.unpack('<IIB', data[:HEADER_LENGTH])
+ if version != PACK_FILE_VERSION:
+ print 'Wrong file version in ', input_file
+ raise WrongFileVersion
+
+ resources = {}
+ if num_entries == 0:
+ return DataPackContents(resources, encoding)
+
+ # Read the index and data.
+ data = data[HEADER_LENGTH:]
+ kIndexEntrySize = 2 + 4 # Each entry is a uint16 and a uint32.
+ for _ in range(num_entries):
+ id, offset = struct.unpack('<HI', data[:kIndexEntrySize])
+ data = data[kIndexEntrySize:]
+ next_id, next_offset = struct.unpack('<HI', data[:kIndexEntrySize])
+ resources[id] = original_data[offset:next_offset]
+
+ return DataPackContents(resources, encoding)
+
+
+def WriteDataPackToString(resources, encoding):
+ """Returns a string with a map of id=>data in the data pack format."""
+ ids = sorted(resources.keys())
+ ret = []
+
+ # Write file header.
+ ret.append(struct.pack('<IIB', PACK_FILE_VERSION, len(ids), encoding))
+ HEADER_LENGTH = 2 * 4 + 1 # Two uint32s and one uint8.
+
+ # Each entry is a uint16 + a uint32s. We have one extra entry for the last
+ # item.
+ index_length = (len(ids) + 1) * (2 + 4)
+
+ # Write index.
+ data_offset = HEADER_LENGTH + index_length
+ for id in ids:
+ ret.append(struct.pack('<HI', id, data_offset))
+ data_offset += len(resources[id])
+
+ ret.append(struct.pack('<HI', 0, data_offset))
+
+ # Write data.
+ for id in ids:
+ ret.append(resources[id])
+ return ''.join(ret)
+
+
+def WriteDataPack(resources, output_file, encoding):
+ """Writes a map of id=>data into output_file as a data pack."""
+ content = WriteDataPackToString(resources, encoding)
+ with open(output_file, 'wb') as file:
+ file.write(content)
+
+
+
+
+
+# Temporary hack for external programs that import data_pack.
+# TODO(benrg): Remove this.
+class DataPack(object):
+ pass
+DataPack.ReadDataPack = staticmethod(ReadDataPack)
+DataPack.WriteDataPackToString = staticmethod(WriteDataPackToString)
+DataPack.WriteDataPack = staticmethod(WriteDataPack)
+
+
+def main():
+ data = ReadDataPack("input.pak").resources
+ for (key,val) in data.items():
+ if "Chromium" in val:
+ data[key] = val.replace("Chromium", "GWT-Chromium")
+ WriteDataPack(data, "output.pak", UTF8)
+
+
+if __name__ == '__main__':
+ main()
diff --git a/packages/gwt-chromium/resources/rewrite-locale/input.pak b/packages/gwt-chromium/resources/rewrite-locale/input.pak
new file mode 100644
index 0000000..689c22f
--- /dev/null
+++ b/packages/gwt-chromium/resources/rewrite-locale/input.pak
Binary files differ
diff --git a/packages/gwt-chromium/resources/rewrite-locale/output.pak b/packages/gwt-chromium/resources/rewrite-locale/output.pak
new file mode 100644
index 0000000..fe141a2
--- /dev/null
+++ b/packages/gwt-chromium/resources/rewrite-locale/output.pak
Binary files differ