summaryrefslogtreecommitdiff
path: root/source4/scripting/libjs/base.js
diff options
context:
space:
mode:
Diffstat (limited to 'source4/scripting/libjs/base.js')
-rw-r--r--source4/scripting/libjs/base.js50
1 files changed, 50 insertions, 0 deletions
diff --git a/source4/scripting/libjs/base.js b/source4/scripting/libjs/base.js
new file mode 100644
index 0000000000..790dfeb3e0
--- /dev/null
+++ b/source4/scripting/libjs/base.js
@@ -0,0 +1,50 @@
+/*
+ base js library functions
+ Copyright Andrew Tridgell 2005
+ released under the GNU GPL version 3 or later
+*/
+
+if (global["HAVE_BASE_JS"] != undefined) {
+ return;
+}
+HAVE_BASE_JS=1
+
+/* bring the string functions into the global frame */
+string_init(global);
+
+/*
+ an essential function!
+*/
+function printf()
+{
+ print(vsprintf(arguments));
+}
+
+/*
+ substitute strings of the form ${NAME} in str, replacing
+ with substitutions from subobj
+*/
+function substitute_var(str, subobj)
+{
+ var list = split("${", str);
+ var i;
+ for (i=1;i<list.length;i++) {
+ var list2 = split("}", list[i], 1);
+ if ((list2.length < 2) && (list2[0] + "}" != list[i])) {
+ return undefined;
+ }
+ var key = list2[0];
+ var val;
+ if (typeof(subobj[key]) == "undefined") {
+ val = "${" + key + "}";
+ } else if (typeof(subobj[key]) == "string") {
+ val = subobj[key];
+ } else {
+ var fn = subobj[key];
+ val = fn(key);
+ }
+ list2[0] = "" + val;
+ list[i] = join("", list2);
+ }
+ return join("", list);
+}