diff options
Diffstat (limited to 'site_scons')
-rw-r--r-- | site_scons/site_tools/jstoh.py | 50 |
1 files changed, 25 insertions, 25 deletions
diff --git a/site_scons/site_tools/jstoh.py b/site_scons/site_tools/jstoh.py index 5ae9471f108..62424a6cd4f 100644 --- a/site_scons/site_tools/jstoh.py +++ b/site_scons/site_tools/jstoh.py @@ -1,55 +1,55 @@ import os import sys + def jsToHeader(target, source): outFile = target - h = ['#include "mongo/base/string_data.h"' - ,'namespace mongo {' - ,'struct JSFile{ const char* name; const StringData& source; };' - ,'namespace JSFiles{' - ] + h = [ + '#include "mongo/base/string_data.h"', + 'namespace mongo {', + 'struct JSFile{ const char* name; const StringData& source; };', + 'namespace JSFiles{', + ] - def cppEscape(s): - s = s.rstrip() - s = s.replace( '\\', '\\\\' ) - s = s.replace( '"', r'\"' ) - return s + def lineToChars(s): + return ','.join(str(ord(c)) for c in (s.rstrip() + '\n')) + ',' for s in source: filename = str(s) objname = os.path.split(filename)[1].split('.')[0] stringname = '_jscode_raw_' + objname - h.append('const StringData ' + stringname + " = ") + h.append('const char ' + stringname + "[] = {") - for l in open( filename, 'r' ): - h.append( '"' + cppEscape(l) + r'\n" ' ) + with open(filename, 'r') as f: + for line in f: + h.append(lineToChars(line)) - h.append(";") - h.append('extern const JSFile %s;'%objname) #symbols aren't exported w/o this - h.append('const JSFile %s = { "%s", %s };'%(objname, filename.replace('\\', '/'), stringname)) + h.append("0};") + # symbols aren't exported w/o this + h.append('extern const JSFile %s;' % objname) + h.append('const JSFile %s = { "%s", StringData(%s) };' % + (objname, filename.replace('\\', '/'), stringname)) h.append("} // namespace JSFiles") h.append("} // namespace mongo") h.append("") - text = '\n'.join(h); + text = '\n'.join(h) print "writing: %s" % outFile - out = open( outFile, 'wb' ) - try: - out.write( text ) - finally: - out.close() + with open(outFile, 'wb') as out: + try: + out.write(text) + finally: + out.close() if __name__ == "__main__": if len(sys.argv) < 3: print "Must specify [target] [source] " - sys.exit(1); + sys.exit(1) jsToHeader(sys.argv[1], sys.argv[2:]) - - |