aboutsummaryrefslogtreecommitdiffhomepage
path: root/js/commonjs/rewrite_tests_for_commonjs.js
diff options
context:
space:
mode:
authorGravatar Josh Haberman <jhaberman@gmail.com>2016-02-04 16:11:07 -0800
committerGravatar Josh Haberman <jhaberman@gmail.com>2016-02-18 10:30:21 -0800
commit77af5d04b1897baeda2ebd753d138c99afe72c50 (patch)
tree60a26239352658db80b87262315659c5202e31f6 /js/commonjs/rewrite_tests_for_commonjs.js
parentd6a186a8f18c1b14979e0244c0434b5b89c0f8a9 (diff)
Fixed nested message scopes for CommonJS.
Diffstat (limited to 'js/commonjs/rewrite_tests_for_commonjs.js')
-rw-r--r--js/commonjs/rewrite_tests_for_commonjs.js28
1 files changed, 16 insertions, 12 deletions
diff --git a/js/commonjs/rewrite_tests_for_commonjs.js b/js/commonjs/rewrite_tests_for_commonjs.js
index d49f8a93..6a655c1e 100644
--- a/js/commonjs/rewrite_tests_for_commonjs.js
+++ b/js/commonjs/rewrite_tests_for_commonjs.js
@@ -27,34 +27,38 @@ var lineReader = require('readline').createInterface({
output: process.stdout
});
+function tryStripPrefix(str, prefix) {
+ if (str.lastIndexOf(prefix) !== 0) {
+ throw "String: " + str + " didn't start with: " + prefix;
+ }
+ return str.substr(prefix.length);
+}
+
var module = null;
+var pkg = null;
lineReader.on('line', function(line) {
- var is_require = line.match(/goog\.require\('([^']*\.)([^'.]+)'\)/);
- var is_loadfromfile = line.match(/CommonJS-LoadFromFile: (.*)/);
+ var is_require = line.match(/goog\.require\('([^']*)'\)/);
+ var is_loadfromfile = line.match(/CommonJS-LoadFromFile: ([^ ]*) (.*)/);
var is_settestonly = line.match(/goog.setTestOnly()/);
if (is_settestonly) {
// Remove this line.
} else if (is_require) {
if (module) { // Skip goog.require() lines before the first directive.
- var pkg = is_require[1];
- var sym = is_require[2];
- console.log("google_protobuf.exportSymbol('" + pkg + sym + "', " + module + "." + sym + ', global);');
+ var full_sym = is_require[1];
+ var sym = tryStripPrefix(full_sym, pkg);
+ console.log("google_protobuf.exportSymbol('" + full_sym + "', " + module + sym + ', global);');
}
} else if (is_loadfromfile) {
if (!module) {
+ console.log("var google_protobuf = require('google-protobuf');");
console.log("var asserts = require('closure_asserts_commonjs');");
console.log("var global = Function('return this')();");
console.log("");
console.log("// Bring asserts into the global namespace.");
- console.log("for (var key in asserts) {");
- console.log(" if (asserts.hasOwnProperty(key)) {");
- console.log(" global[key] = asserts[key];");
- console.log(" }");
- console.log("}");
- console.log("");
- console.log("var google_protobuf = require('google-protobuf');");
+ console.log("google_protobuf.object.extend(global, asserts);");
}
module = is_loadfromfile[1].replace("-", "_");
+ pkg = is_loadfromfile[2];
if (module != "google_protobuf") { // We unconditionally require this in the header.
console.log("var " + module + " = require('" + is_loadfromfile[1] + "');");