summaryrefslogtreecommitdiff
path: root/site_scons
diff options
context:
space:
mode:
authorMatt Cotter <matt.cotter@mongodb.com>2016-11-07 14:41:29 -0500
committerMatt Cotter <matt.cotter@mongodb.com>2016-11-17 11:44:59 -0500
commit47653843a0d97cb37ffb736febfeb139c532cd23 (patch)
tree512128ace092a324d468de6634f3f56483c70576 /site_scons
parent229574021f47ec966ba39989b8737ab30400c19c (diff)
downloadmongo-47653843a0d97cb37ffb736febfeb139c532cd23.tar.gz
SERVER-26642 use char arrays instead of str literals for js code
Diffstat (limited to 'site_scons')
-rw-r--r--site_scons/site_tools/jstoh.py50
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:])
-
-