package com.atlassian.labs.speakeasy.commonjs.util; import java.util.Map; /** * */ public class ModuleWrapper { public static String wrapModule(String moduleName, String rawJs, Iterable<String> requiredModules, Map<String,String> moduleProperties) { StringBuffer wrappedJs = new StringBuffer(); // require.def("alpha", ["require", "exports", "beta"], function (require, exports, beta) { wrappedJs.append("speakeasyRequire.def('").append(moduleName).append("', ['require','exports','module',"); for (String requiredModule : requiredModules) { wrappedJs.append("'").append(requiredModule).append("',"); } wrappedJs.deleteCharAt(wrappedJs.length() - 1); wrappedJs.append("], function(require, exports, module) { "); for (Map.Entry<String,String> property : moduleProperties.entrySet()) { wrappedJs.append("module.").append(property.getKey()).append("='").append(property.getValue()).append("';"); } wrappedJs.append("\n"); // strip off the first line, which should be a comment to preserve line numbers //wrappedJs.append(rawJs.substring(rawJs.indexOf('\n') + 1)); wrappedJs.append(rawJs); wrappedJs.append("\n});"); return wrappedJs.toString(); } }