Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(123)

Side by Side Diff: grit/format/data_pack.py

Issue 10386189: Add chrome_html gatherer, which inlines html and automatically generates image set… (Closed) Base URL: http://git.chromium.org/external/grit-i18n.git@master
Patch Set: Add chrome_html_unittest to test_suite_all. Created 8 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | grit/format/html_inline.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 '''Support for formatting a data pack file used for platform agnostic resource 6 '''Support for formatting a data pack file used for platform agnostic resource
7 files. 7 files.
8 ''' 8 '''
9 9
10 import exceptions 10 import exceptions
11 import os 11 import os
12 import struct 12 import struct
13 import sys 13 import sys
14 14
15 sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..')) 15 sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..'))
16 from grit.format import interface 16 from grit.format import interface
17 from grit.node import include 17 from grit.node import include
18 from grit.node import message 18 from grit.node import message
19 from grit.node import structure
19 from grit.node import misc 20 from grit.node import misc
20 21
21 22
22 PACK_FILE_VERSION = 4 23 PACK_FILE_VERSION = 4
23 HEADER_LENGTH = 2 * 4 + 1 # Two uint32s. (file version, number of entries) and 24 HEADER_LENGTH = 2 * 4 + 1 # Two uint32s. (file version, number of entries) and
24 # one uint8 (encoding of text resources) 25 # one uint8 (encoding of text resources)
25 BINARY, UTF8, UTF16 = range(3) 26 BINARY, UTF8, UTF16 = range(3)
26 27
27 class WrongFileVersion(Exception): 28 class WrongFileVersion(Exception):
28 pass 29 pass
29 30
30 class DataPackContents: 31 class DataPackContents:
31 def __init__(self, resources, encoding): 32 def __init__(self, resources, encoding):
32 self.resources = resources 33 self.resources = resources
33 self.encoding = encoding 34 self.encoding = encoding
34 35
35 class DataPack(interface.ItemFormatter): 36 class DataPack(interface.ItemFormatter):
36 '''Writes out the data pack file format (platform agnostic resource file).''' 37 '''Writes out the data pack file format (platform agnostic resource file).'''
37 def Format(self, item, lang='en', output_dir='.'): 38 def Format(self, item, lang='en', output_dir='.'):
38 assert isinstance(item, misc.ReleaseNode) 39 assert isinstance(item, misc.ReleaseNode)
39 40
40 nodes = DataPack.GetDataNodes(item) 41 nodes = DataPack.GetDataNodes(item)
41 data = {} 42 data = {}
42 for node in nodes: 43 for node in nodes:
43 id, value = node.GetDataPackPair(lang, UTF8) 44 id, value = node.GetDataPackPair(lang, UTF8)
44 data[id] = value 45 if value is not None:
46 data[id] = value
45 return DataPack.WriteDataPackToString(data, UTF8) 47 return DataPack.WriteDataPackToString(data, UTF8)
46 48
47 @staticmethod 49 @staticmethod
48 def GetDataNodes(item): 50 def GetDataNodes(item):
49 '''Returns a list of nodes that can be packed into the data pack file.''' 51 '''Returns a list of nodes that can be packed into the data pack file.'''
50 nodes = [] 52 nodes = []
51 if (isinstance(item, misc.IfNode) and not item.IsConditionSatisfied()): 53 if (isinstance(item, misc.IfNode) and not item.IsConditionSatisfied()):
52 return nodes 54 return nodes
53 if (isinstance(item, include.IncludeNode) or 55 if (isinstance(item, include.IncludeNode) or
54 isinstance(item, message.MessageNode)): 56 isinstance(item, message.MessageNode) or
57 isinstance(item, structure.StructureNode)):
55 # Include this node if it wasn't marked as skipped by a whitelist. 58 # Include this node if it wasn't marked as skipped by a whitelist.
56 if not item.WhitelistMarkedAsSkip(): 59 if not item.WhitelistMarkedAsSkip():
57 return [item] 60 return [item]
58 return nodes 61 return nodes
59 for child in item.children: 62 for child in item.children:
60 nodes.extend(DataPack.GetDataNodes(child)) 63 nodes.extend(DataPack.GetDataNodes(child))
61 return nodes 64 return nodes
62 65
63 @staticmethod 66 @staticmethod
64 def ReadDataPack(input_file): 67 def ReadDataPack(input_file):
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
164 else: 167 else:
165 # Just write a simple file. 168 # Just write a simple file.
166 data = { 1: "", 4: "this is id 4", 6: "this is id 6", 10: "" } 169 data = { 1: "", 4: "this is id 4", 6: "this is id 6", 10: "" }
167 DataPack.WriteDataPack(data, "datapack1.pak", UTF8) 170 DataPack.WriteDataPack(data, "datapack1.pak", UTF8)
168 data2 = { 1000: "test", 5: "five" } 171 data2 = { 1000: "test", 5: "five" }
169 DataPack.WriteDataPack(data2, "datapack2.pak", UTF8) 172 DataPack.WriteDataPack(data2, "datapack2.pak", UTF8)
170 print "wrote datapack1 and datapack2 to current directory." 173 print "wrote datapack1 and datapack2 to current directory."
171 174
172 if __name__ == '__main__': 175 if __name__ == '__main__':
173 main() 176 main()
OLDNEW
« no previous file with comments | « no previous file | grit/format/html_inline.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698