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

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

Issue 375523002: Experimenting with rjsmin in grit. Base URL: https://chromium.googlesource.com/external/grit-i18n.git@master
Patch Set: Cleaned up and moved rjsmin. Created 6 years, 5 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/rjsmin.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 os
11 import sys
12
13 import rjsmin
14
10 import collections 15 import collections
11 import exceptions 16 import exceptions
12 import os 17 import os
13 import struct 18 import struct
14 import sys 19 import sys
15 if __name__ == '__main__': 20 if __name__ == '__main__':
16 sys.path.append(os.path.join(os.path.dirname(__file__), '../..')) 21 sys.path.append(os.path.join(os.path.dirname(__file__), '../..'))
17 22
18 from grit import util 23 from grit import util
19 from grit.node import include 24 from grit.node import include
(...skipping 16 matching lines...) Expand all
36 41
37 42
38 def Format(root, lang='en', output_dir='.'): 43 def Format(root, lang='en', output_dir='.'):
39 """Writes out the data pack file format (platform agnostic resource file).""" 44 """Writes out the data pack file format (platform agnostic resource file)."""
40 data = {} 45 data = {}
41 for node in root.ActiveDescendants(): 46 for node in root.ActiveDescendants():
42 with node: 47 with node:
43 if isinstance(node, (include.IncludeNode, message.MessageNode, 48 if isinstance(node, (include.IncludeNode, message.MessageNode,
44 structure.StructureNode)): 49 structure.StructureNode)):
45 id, value = node.GetDataPackPair(lang, UTF8) 50 id, value = node.GetDataPackPair(lang, UTF8)
51 txt_id = node.GetTextualIds()[0]
52
53 # Use rjsmin to compress JavaScript resources. Closure would
54 # be even better but is tricky to integrate into the build
55 # system since it is Java.
56 if "_JS" in txt_id[-3:]:
57 size = len(value)
58 packed_value = rjsmin.jsmin(value)
59 packed_size = len(packed_value)
60 if packed_size < size:
61 value = packed_value
46 if value is not None: 62 if value is not None:
47 data[id] = value 63 data[id] = value
48 return WriteDataPackToString(data, UTF8) 64 return WriteDataPackToString(data, UTF8)
49 65
50 66
51 def ReadDataPack(input_file): 67 def ReadDataPack(input_file):
52 """Reads a data pack file and returns a dictionary.""" 68 """Reads a data pack file and returns a dictionary."""
53 data = util.ReadFile(input_file, util.BINARY) 69 data = util.ReadFile(input_file, util.BINARY)
54 original_data = data 70 original_data = data
55 71
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
203 # Just write a simple file. 219 # Just write a simple file.
204 data = {1: '', 4: 'this is id 4', 6: 'this is id 6', 10: ''} 220 data = {1: '', 4: 'this is id 4', 6: 'this is id 6', 10: ''}
205 WriteDataPack(data, 'datapack1.pak', UTF8) 221 WriteDataPack(data, 'datapack1.pak', UTF8)
206 data2 = {1000: 'test', 5: 'five'} 222 data2 = {1000: 'test', 5: 'five'}
207 WriteDataPack(data2, 'datapack2.pak', UTF8) 223 WriteDataPack(data2, 'datapack2.pak', UTF8)
208 print 'wrote datapack1 and datapack2 to current directory.' 224 print 'wrote datapack1 and datapack2 to current directory.'
209 225
210 226
211 if __name__ == '__main__': 227 if __name__ == '__main__':
212 main() 228 main()
OLDNEW
« no previous file with comments | « no previous file | grit/format/rjsmin.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698