66 lines
2.1 KiB
Python
66 lines
2.1 KiB
Python
#!/usr/bin/python
|
|
# -*- coding: utf-8 -*-
|
|
import os
|
|
import ox
|
|
import ox.js
|
|
import json
|
|
|
|
strings = {
|
|
'inside Ox._()': {},
|
|
'outside Ox._()': {}
|
|
}
|
|
lines = []
|
|
path = './dev/'
|
|
files = []
|
|
|
|
for f in ['Ox/json/Ox.json', 'Ox.UI/json/Ox.UI.json']:
|
|
with open(path + f) as fd:
|
|
for filename in json.load(fd)['files']:
|
|
if isinstance(filename, list):
|
|
files += filename
|
|
else:
|
|
files.append(filename)
|
|
|
|
files = [f for f in files if f.endswith('.js')]
|
|
|
|
for f in files:
|
|
f = os.path.join(path, f)
|
|
with open(f) as fd:
|
|
data = fd.read().decode('utf-8')
|
|
inside = False
|
|
level = 0
|
|
tokens = ox.js.tokenize(data)
|
|
for i, token in enumerate(tokens):
|
|
if i >= 3 and tokens[i - 3]['value'] + tokens[i - 2]['value'] \
|
|
+ tokens[i - 1]['value'] + tokens[i]['value'] == 'Ox._(':
|
|
inside = True
|
|
level = 0
|
|
elif inside:
|
|
if token['value'] == '(':
|
|
level +=1
|
|
elif token['value'] == ')':
|
|
level -= 1
|
|
inside = level > 0
|
|
if token['type'] == 'string' and len(token['value']) > 2:
|
|
key = inside and 'inside Ox._()' or 'outside Ox._()'
|
|
string = token['value'][1:-1].replace(
|
|
"\\'", "'"
|
|
).replace(
|
|
'\\]"', '\\"'
|
|
)
|
|
#.replace(/\\'/g, '\'')
|
|
#.replace(/([^\\]")/, '\\"')
|
|
if not string in strings[key]:
|
|
strings[key][string] = []
|
|
strings[key][string].append(
|
|
f.replace(path, '') + ':%d' % token['line']
|
|
)
|
|
|
|
for key in ox.sorted_strings(strings):
|
|
lines.append(key)
|
|
for string in ox.sorted_strings(strings[key]):
|
|
lines.append((' ' * 4) + '"%s"' % string)
|
|
for f in ox.sorted_strings(strings[key][string]):
|
|
lines.append((' ' * 8) + f)
|
|
|
|
print (u'\n'.join(lines)).encode('utf-8')
|