diff options
Diffstat (limited to 'source4/scripting/libjs/base.js')
-rw-r--r-- | source4/scripting/libjs/base.js | 50 |
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); +} |