49 lines
1.1 KiB
Python
49 lines
1.1 KiB
Python
#!/usr/bin/env python2
|
|
#
|
|
# Create an array of C strings with Duktape built-in strings.
|
|
# Useful when using external strings.
|
|
#
|
|
|
|
import os
|
|
import sys
|
|
import json
|
|
|
|
def to_c_string(x):
|
|
res = '"'
|
|
term = False
|
|
for i, c in enumerate(x):
|
|
if term:
|
|
term = False
|
|
res += '" "'
|
|
|
|
o = ord(c)
|
|
if o < 0x20 or o > 0x7e or c in '\'"\\':
|
|
# Terminate C string so that escape doesn't become
|
|
# ambiguous
|
|
res += '\\x%02x' % o
|
|
term = True
|
|
else:
|
|
res += c
|
|
res += '"'
|
|
return res
|
|
|
|
def main():
|
|
f = open(sys.argv[1], 'rb')
|
|
d = f.read()
|
|
f.close()
|
|
meta = json.loads(d)
|
|
|
|
print('const char *duk_builtin_strings[] = {')
|
|
|
|
strlist = meta['builtin_strings_base64']
|
|
for i in xrange(len(strlist)):
|
|
s = strlist[i]
|
|
if i == len(strlist) - 1:
|
|
print(' %s' % to_c_string(s.decode('base64')))
|
|
else:
|
|
print(' %s,' % to_c_string(s.decode('base64')))
|
|
|
|
print('};')
|
|
|
|
if __name__ == '__main__':
|
|
main()
|