[add] lib:plankton
Christian Fraß authored 3 years ago
|
lib/plankton/string/logic-impl.js 5) <info@greenscale.de>
lib/plankton/string/logic-impl.js 6)
lib/plankton/string/logic-impl.js 7) »bacterio-plankton:string« is free software: you can redistribute it and/or modify
lib/plankton/string/logic-impl.js 8) it under the terms of the GNU Lesser General Public License as published by
lib/plankton/string/logic-impl.js 9) the Free Software Foundation, either version 3 of the License, or
lib/plankton/string/logic-impl.js 10) (at your option) any later version.
lib/plankton/string/logic-impl.js 11)
lib/plankton/string/logic-impl.js 12) »bacterio-plankton:string« is distributed in the hope that it will be useful,
lib/plankton/string/logic-impl.js 13) but WITHOUT ANY WARRANTY; without even the implied warranty of
lib/plankton/string/logic-impl.js 14) MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
lib/plankton/string/logic-impl.js 15) GNU Lesser General Public License for more details.
lib/plankton/string/logic-impl.js 16)
lib/plankton/string/logic-impl.js 17) You should have received a copy of the GNU Lesser General Public License
lib/plankton/string/logic-impl.js 18) along with »bacterio-plankton:string«. If not, see <http://www.gnu.org/licenses/>.
lib/plankton/string/logic-impl.js 19) */
lib/plankton/string/logic-impl.js 20) var plain_text_to_html = function (text) {
lib/plankton/string/logic-impl.js 21) var ret = text;
lib/plankton/string/logic-impl.js 22) ret = ret.replace(/ /g, " "); // convert multiple whitespace to forced ones
lib/plankton/string/logic-impl.js 23) ret = ret.split("\n").join("<br/>");
lib/plankton/string/logic-impl.js 24) return ret;
lib/plankton/string/logic-impl.js 25) };
lib/plankton/string/logic-impl.js 26) /**
lib/plankton/string/logic-impl.js 27) * @desc makes a valid
lib/plankton/string/logic-impl.js 28) */
lib/plankton/string/logic-impl.js 29) var format_sentence = function (str, rtl, caseSense) {
lib/plankton/string/logic-impl.js 30) if (rtl === void 0) { rtl = false; }
lib/plankton/string/logic-impl.js 31) if (caseSense === void 0) { caseSense = true; }
lib/plankton/string/logic-impl.js 32) if (str === "") {
lib/plankton/string/logic-impl.js 33) return str;
lib/plankton/string/logic-impl.js 34) }
lib/plankton/string/logic-impl.js 35) else {
lib/plankton/string/logic-impl.js 36) var marks = {
lib/plankton/string/logic-impl.js 37) ".": true,
lib/plankton/string/logic-impl.js 38) "?": true,
lib/plankton/string/logic-impl.js 39) "!": true
lib/plankton/string/logic-impl.js 40) };
lib/plankton/string/logic-impl.js 41) var default_mark = ".";
lib/plankton/string/logic-impl.js 42) var ret = str.split("");
lib/plankton/string/logic-impl.js 43) if (!rtl) {
lib/plankton/string/logic-impl.js 44) ret[0] = ret[0].toLocaleUpperCase();
lib/plankton/string/logic-impl.js 45) if (!(ret[ret.length - 1] in marks)) {
lib/plankton/string/logic-impl.js 46) ret.push(default_mark);
lib/plankton/string/logic-impl.js 47) }
lib/plankton/string/logic-impl.js 48) }
lib/plankton/string/logic-impl.js 49) else {
lib/plankton/string/logic-impl.js 50) ret[ret.length - 1] = ret[ret.length - 1].toLocaleUpperCase();
lib/plankton/string/logic-impl.js 51) if (!(ret[0] in marks)) {
lib/plankton/string/logic-impl.js 52) ret.unshift(default_mark);
lib/plankton/string/logic-impl.js 53) }
lib/plankton/string/logic-impl.js 54) }
lib/plankton/string/logic-impl.js 55) return ret.join("");
lib/plankton/string/logic-impl.js 56) }
lib/plankton/string/logic-impl.js 57) };
lib/plankton/string/logic-impl.js 58) var fill_string_template = function (template_string, object, fabric, delimiter, default_string, sloppy) {
lib/plankton/string/logic-impl.js 59) if (fabric === void 0) { fabric = function (object, key) { return object[key]; }; }
lib/plankton/string/logic-impl.js 60) if (delimiter === void 0) { delimiter = "%"; }
lib/plankton/string/logic-impl.js 61) if (default_string === void 0) { default_string = null; }
lib/plankton/string/logic-impl.js 62) function get_tags(str) {
lib/plankton/string/logic-impl.js 63) var r = new RegExp(delimiter + "[^\\s^" + delimiter + "]+" + delimiter, "gi");
lib/plankton/string/logic-impl.js 64) return ((str.match(r) || []).map(function (e) {
lib/plankton/string/logic-impl.js 65) return e.slice(delimiter.length, e.length - delimiter.length);
lib/plankton/string/logic-impl.js 66) }));
lib/plankton/string/logic-impl.js 67) }
lib/plankton/string/logic-impl.js 68) function replace_tag(str, tag, value) {
lib/plankton/string/logic-impl.js 69) var r = new RegExp(delimiter + tag + delimiter, "gi");
lib/plankton/string/logic-impl.js 70) return str.replace(r, value);
lib/plankton/string/logic-impl.js 71) }
lib/plankton/string/logic-impl.js 72) function replace_tags(str, obj) {
lib/plankton/string/logic-impl.js 73) return (get_tags(str).reduce(function (ret, key) {
lib/plankton/string/logic-impl.js 74) var value = "";
lib/plankton/string/logic-impl.js 75) try {
lib/plankton/string/logic-impl.js 76) value = fabric(obj, key);
lib/plankton/string/logic-impl.js 77) if ((!sloppy && (value === void 0)) || (sloppy && (value == void 0))) {
lib/plankton/string/logic-impl.js 78) value = default_string;
lib/plankton/string/logic-impl.js 79) }
lib/plankton/string/logic-impl.js 80) }
lib/plankton/string/logic-impl.js 81) catch (e) {
lib/plankton/string/logic-impl.js 82) console.warn("invalid placeholder " + key);
lib/plankton/string/logic-impl.js 83) value = default_string;
lib/plankton/string/logic-impl.js 84) }
lib/plankton/string/logic-impl.js 85) return replace_tag(ret, key, value);
lib/plankton/string/logic-impl.js 86) }, str));
lib/plankton/string/logic-impl.js 87) }
lib/plankton/string/logic-impl.js 88) return replace_tags(template_string, object);
lib/plankton/string/logic-impl.js 89) };
lib/plankton/string/logic-impl.js 90) var make_string_template = function (_template, _fabrics) {
lib/plankton/string/logic-impl.js 91) if (_fabrics === void 0) { _fabrics = {}; }
lib/plankton/string/logic-impl.js 92) function replace_tag(str, tag, value) {
lib/plankton/string/logic-impl.js 93) var r = new RegExp("%" + tag + "%", "gi");
lib/plankton/string/logic-impl.js 94) return str.replace(r, value);
lib/plankton/string/logic-impl.js 95) }
lib/plankton/string/logic-impl.js 96) function replace_tags(str, obj) {
lib/plankton/string/logic-impl.js 97) return (Object.keys(obj).reduce(function (ret, key) {
lib/plankton/string/logic-impl.js 98) return replace_tag(ret, key, _fabrics[key] || obj[key]);
lib/plankton/string/logic-impl.js 99) }, str));
lib/plankton/string/logic-impl.js 100) }
lib/plankton/string/logic-impl.js 101) return (function (tags) {
lib/plankton/string/logic-impl.js 102) return replace_tags(_template, tags);
lib/plankton/string/logic-impl.js 103) });
lib/plankton/string/logic-impl.js 104) };
lib/plankton/string/logic-impl.js 105) var make_eml_header = (function () {
lib/plankton/string/logic-impl.js 106) var _template = "";
lib/plankton/string/logic-impl.js 107) _template += "From: %from%\n";
lib/plankton/string/logic-impl.js 108) _template += "To: %recipient%\n";
lib/plankton/string/logic-impl.js 109) _template += "Subject: %subject%\n";
lib/plankton/string/logic-impl.js 110) _template += "X-Mailer: greenscale-plankton.emlgen\n";
lib/plankton/string/logic-impl.js 111) return make_string_template(_template);
lib/plankton/string/logic-impl.js 112) })();
lib/plankton/string/logic-impl.js 113) var make_eml_body = (function () {
lib/plankton/string/logic-impl.js 114) var exports = {};
lib/plankton/string/logic-impl.js 115) exports["simple_body"] = make_string_template("Content-Type: %contenttype%\n\n%body%\n\n");
lib/plankton/string/logic-impl.js 116) // very basic implementation
lib/plankton/string/logic-impl.js 117) // parts = [{contenttype:"text/html; charset=UTF-8", body: "<h1>foo</h1>" }, {...}]
lib/plankton/string/logic-impl.js 118) exports["body_boundrary"] = function (parts, boundrary) {
lib/plankton/string/logic-impl.js 119) var _template = "";
lib/plankton/string/logic-impl.js 120) _template += "--%boundrary%\n";
lib/plankton/string/logic-impl.js 121) _template += "Content-Type: %contenttype%\n\n%body%\n\n";
lib/plankton/string/logic-impl.js 122) //_template += "--%boundrary%--\n\n";
lib/plankton/string/logic-impl.js 123) var maker = make_string_template(_template);
lib/plankton/string/logic-impl.js 124) return (parts.reduce(function (prev, curr) {
lib/plankton/string/logic-impl.js 125) curr.boundrary = boundrary;
lib/plankton/string/logic-impl.js 126) return [prev, maker(curr)].join("");
lib/plankton/string/logic-impl.js 127) }, ""));
lib/plankton/string/logic-impl.js 128) };
lib/plankton/string/logic-impl.js 129) // body must be base64 encoded!
lib/plankton/string/logic-impl.js 130) exports["attachment_boundrary"] = function (parts, boundrary) {
lib/plankton/string/logic-impl.js 131) var _template = "";
lib/plankton/string/logic-impl.js 132) _template += "--%boundrary%\n";
lib/plankton/string/logic-impl.js 133) _template += "Content-Type: %contenttype%\n";
lib/plankton/string/logic-impl.js 134) _template += "Content-Transfer-Encoding: base64\n";
lib/plankton/string/logic-impl.js 135) _template += "Content-Disposition: %disposition%; filename=\"%name%\"\n\n";
lib/plankton/string/logic-impl.js 136) _template += "%body%\n\n";
lib/plankton/string/logic-impl.js 137) //_template += "--%boundrary%--\n\n";
lib/plankton/string/logic-impl.js 138) var maker = make_string_template(_template);
lib/plankton/string/logic-impl.js 139) return (parts.reduce(function (prev, curr) {
lib/plankton/string/logic-impl.js 140) curr.boundrary = boundrary;
lib/plankton/string/logic-impl.js 141) if (curr.disposition === void 0)
lib/plankton/string/logic-impl.js 142) curr.disposition = "inline";
lib/plankton/string/logic-impl.js 143) return [prev, maker(curr)].join("");
lib/plankton/string/logic-impl.js 144) }, ""));
lib/plankton/string/logic-impl.js 145) };
lib/plankton/string/logic-impl.js 146) exports["gen_boundrary"] = function () {
lib/plankton/string/logic-impl.js 147) return ("xxxxxxxxxxxxxxxxxxxxxx".replace(/[xy]/g, function (c) {
lib/plankton/string/logic-impl.js 148) var r = crypto.getRandomValues(new Uint8Array(1))[0] % 16 | 0, v = c == "x" ? r : (r & 0x3 | 0x8);
lib/plankton/string/logic-impl.js 149) return v.toString(16);
lib/plankton/string/logic-impl.js 150) }));
lib/plankton/string/logic-impl.js 151) };
lib/plankton/string/logic-impl.js 152) // simple implementation without alternatives (old rfc)
lib/plankton/string/logic-impl.js 153) exports["complete_boundrary"] = function (bodyparts, attachments) {
lib/plankton/string/logic-impl.js 154) var ret = "";
lib/plankton/string/logic-impl.js 155) var boundrary = exports["gen_boundrary"]();
lib/plankton/string/logic-impl.js 156) ret += exports["body_boundrary"](bodyparts, boundrary);
lib/plankton/string/logic-impl.js 157) ret += exports["attachment_boundrary"](attachments, boundrary);
lib/plankton/string/logic-impl.js 158) ret += "--" + boundrary + "--\n\nINVISIBLE!!!!";
lib/plankton/string/logic-impl.js 159) return (exports["simple_body"]({
lib/plankton/string/logic-impl.js 160) "contenttype": sprintf("multipart/mixed; boundary=%s", [boundrary]),
lib/plankton/string/logic-impl.js 161) "body": ret
lib/plankton/string/logic-impl.js 162) }));
lib/plankton/string/logic-impl.js 163) };
lib/plankton/string/logic-impl.js 164) return exports;
lib/plankton/string/logic-impl.js 165) })();
lib/plankton/string/logic-impl.js 166) /*
lib/plankton/string/logic-impl.js 167) This file is part of »bacterio-plankton:string«.
lib/plankton/string/logic-impl.js 168)
|
[add] lib:plankton
Christian Fraß authored 3 years ago
|
lib/plankton/string/logic-impl.js 170) <info@greenscale.de>
lib/plankton/string/logic-impl.js 171)
lib/plankton/string/logic-impl.js 172) »bacterio-plankton:string« is free software: you can redistribute it and/or modify
lib/plankton/string/logic-impl.js 173) it under the terms of the GNU Lesser General Public License as published by
lib/plankton/string/logic-impl.js 174) the Free Software Foundation, either version 3 of the License, or
lib/plankton/string/logic-impl.js 175) (at your option) any later version.
lib/plankton/string/logic-impl.js 176)
lib/plankton/string/logic-impl.js 177) »bacterio-plankton:string« is distributed in the hope that it will be useful,
lib/plankton/string/logic-impl.js 178) but WITHOUT ANY WARRANTY; without even the implied warranty of
lib/plankton/string/logic-impl.js 179) MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
lib/plankton/string/logic-impl.js 180) GNU Lesser General Public License for more details.
lib/plankton/string/logic-impl.js 181)
lib/plankton/string/logic-impl.js 182) You should have received a copy of the GNU Lesser General Public License
lib/plankton/string/logic-impl.js 183) along with »bacterio-plankton:string«. If not, see <http://www.gnu.org/licenses/>.
lib/plankton/string/logic-impl.js 184) */
lib/plankton/string/logic-impl.js 185) var lib_string;
lib/plankton/string/logic-impl.js 186) (function (lib_string) {
lib/plankton/string/logic-impl.js 187) /**
lib/plankton/string/logic-impl.js 188) * @author fenris
lib/plankton/string/logic-impl.js 189) */
lib/plankton/string/logic-impl.js 190) var hexdigits = 4;
lib/plankton/string/logic-impl.js 191) /**
lib/plankton/string/logic-impl.js 192) * @author fenris
lib/plankton/string/logic-impl.js 193) */
lib/plankton/string/logic-impl.js 194) var index_max = (1 << (4 * hexdigits));
lib/plankton/string/logic-impl.js 195) /**
lib/plankton/string/logic-impl.js 196) * @author fenris
lib/plankton/string/logic-impl.js 197) */
lib/plankton/string/logic-impl.js 198) var index_is = 0;
lib/plankton/string/logic-impl.js 199) /**
lib/plankton/string/logic-impl.js 200) * @author neuc,frac
lib/plankton/string/logic-impl.js 201) */
lib/plankton/string/logic-impl.js 202) function empty(str) {
lib/plankton/string/logic-impl.js 203) return (str.trim() === "");
lib/plankton/string/logic-impl.js 204) }
lib/plankton/string/logic-impl.js 205) lib_string.empty = empty;
lib/plankton/string/logic-impl.js 206) /**
lib/plankton/string/logic-impl.js 207) * @desc returns a unique string
lib/plankton/string/logic-impl.js 208) * @param {string} prefix an optional prefix for the generated string
lib/plankton/string/logic-impl.js 209) * @return {string}
lib/plankton/string/logic-impl.js 210) * @author fenris
lib/plankton/string/logic-impl.js 211) */
lib/plankton/string/logic-impl.js 212) function generate(prefix) {
lib/plankton/string/logic-impl.js 213) if (prefix === void 0) { prefix = "string_"; }
lib/plankton/string/logic-impl.js 214) if (index_is > index_max) {
lib/plankton/string/logic-impl.js 215) throw (new Error("[string_generate] out of valid indices"));
lib/plankton/string/logic-impl.js 216) }
lib/plankton/string/logic-impl.js 217) else {
lib/plankton/string/logic-impl.js 218) return lib_string.sprintf(prefix + "%0" + hexdigits.toString() + "X", [index_is++]);
lib/plankton/string/logic-impl.js 219) }
lib/plankton/string/logic-impl.js 220) }
lib/plankton/string/logic-impl.js 221) lib_string.generate = generate;
lib/plankton/string/logic-impl.js 222) /**
lib/plankton/string/logic-impl.js 223) * @desc splits a string, but returns an empty list, if the string is empty
lib/plankton/string/logic-impl.js 224) * @param {string} chain
lib/plankton/string/logic-impl.js 225) * @param {string} separator
lib/plankton/string/logic-impl.js 226) * @return {Array<string>}
lib/plankton/string/logic-impl.js 227) * @author fenris
lib/plankton/string/logic-impl.js 228) */
lib/plankton/string/logic-impl.js 229) function split(chain, separator) {
lib/plankton/string/logic-impl.js 230) if (separator === void 0) { separator = " "; }
lib/plankton/string/logic-impl.js 231) if (chain.length == 0) {
lib/plankton/string/logic-impl.js 232) return [];
lib/plankton/string/logic-impl.js 233) }
lib/plankton/string/logic-impl.js 234) else {
lib/plankton/string/logic-impl.js 235) return chain.split(separator);
lib/plankton/string/logic-impl.js 236) }
lib/plankton/string/logic-impl.js 237) }
lib/plankton/string/logic-impl.js 238) lib_string.split = split;
lib/plankton/string/logic-impl.js 239) /**
lib/plankton/string/logic-impl.js 240) * @author neu3no
lib/plankton/string/logic-impl.js 241) */
lib/plankton/string/logic-impl.js 242) function explode(str, needle, max) {
lib/plankton/string/logic-impl.js 243) var temp = str.split(needle);
lib/plankton/string/logic-impl.js 244) var right = temp.splice(max - 1);
lib/plankton/string/logic-impl.js 245) temp.push(right.join(needle));
lib/plankton/string/logic-impl.js 246) return temp;
lib/plankton/string/logic-impl.js 247) }
lib/plankton/string/logic-impl.js 248) lib_string.explode = explode;
lib/plankton/string/logic-impl.js 249) /**
lib/plankton/string/logic-impl.js 250) * @desc concats a given word with itself n times
lib/plankton/string/logic-impl.js 251) * @param {string} word
lib/plankton/string/logic-impl.js 252) * @param {int}
lib/plankton/string/logic-impl.js 253) * @return {string}
lib/plankton/string/logic-impl.js 254) * @author fenris
lib/plankton/string/logic-impl.js 255) */
lib/plankton/string/logic-impl.js 256) function repeat(word, count) {
lib/plankton/string/logic-impl.js 257) // return ((count == 0) ? "" : (word + repeat(word, count-1)));
lib/plankton/string/logic-impl.js 258) var result = "";
lib/plankton/string/logic-impl.js 259) for (var n = 0; n < count; n += 1) {
lib/plankton/string/logic-impl.js 260) result += word;
lib/plankton/string/logic-impl.js 261) }
lib/plankton/string/logic-impl.js 262) return result;
lib/plankton/string/logic-impl.js 263) }
lib/plankton/string/logic-impl.js 264) lib_string.repeat = repeat;
lib/plankton/string/logic-impl.js 265) /**
lib/plankton/string/logic-impl.js 266) * @desc lengthens a string by repeatedly appending or prepending another string
lib/plankton/string/logic-impl.js 267) * @param {string} word the string to pad
lib/plankton/string/logic-impl.js 268) * @param {int} length the length, which the result shall have
lib/plankton/string/logic-impl.js 269) * @param {string} symbol the string, which will be added (multiple times)
lib/plankton/string/logic-impl.js 270) * @param {boolean} [prepend]; whether to prepend (~true) or append (~false); default: false
lib/plankton/string/logic-impl.js 271) * @return {string} the padded string
lib/plankton/string/logic-impl.js 272) * @author fenris
lib/plankton/string/logic-impl.js 273) */
lib/plankton/string/logic-impl.js 274) function pad(word, length, symbol, mode) {
lib/plankton/string/logic-impl.js 275) if (symbol === void 0) { symbol = " "; }
lib/plankton/string/logic-impl.js 276) if (mode === void 0) { mode = "append"; }
lib/plankton/string/logic-impl.js 277) switch (mode) {
lib/plankton/string/logic-impl.js 278) case "prepend": {
lib/plankton/string/logic-impl.js 279) // insert symbols only at the beginning
lib/plankton/string/logic-impl.js 280) while (word.length < length)
lib/plankton/string/logic-impl.js 281) word = symbol + word;
lib/plankton/string/logic-impl.js 282) return word.substring(word.length - length);
lib/plankton/string/logic-impl.js 283) break;
lib/plankton/string/logic-impl.js 284) }
lib/plankton/string/logic-impl.js 285) case "append": {
lib/plankton/string/logic-impl.js 286) // insert symbols only at the end
lib/plankton/string/logic-impl.js 287) while (word.length < length)
lib/plankton/string/logic-impl.js 288) word = word + symbol;
lib/plankton/string/logic-impl.js 289) return word.substring(0, length);
lib/plankton/string/logic-impl.js 290) break;
lib/plankton/string/logic-impl.js 291) }
lib/plankton/string/logic-impl.js 292) case "widen": {
lib/plankton/string/logic-impl.js 293) // insert symbols at both sides
lib/plankton/string/logic-impl.js 294) var left = (((length - word.length) & 1) === 0);
lib/plankton/string/logic-impl.js 295) while (word.length < length) {
lib/plankton/string/logic-impl.js 296) word = (left
lib/plankton/string/logic-impl.js 297) ? (symbol + word)
lib/plankton/string/logic-impl.js 298) : (word + symbol));
lib/plankton/string/logic-impl.js 299) left = (!left);
lib/plankton/string/logic-impl.js 300) }
lib/plankton/string/logic-impl.js 301) return word.substring(0, length);
lib/plankton/string/logic-impl.js 302) break;
lib/plankton/string/logic-impl.js 303) }
lib/plankton/string/logic-impl.js 304) default: {
lib/plankton/string/logic-impl.js 305) var message = ("unhandled mode '" + mode + "'");
lib/plankton/string/logic-impl.js 306) console.warn(message);
lib/plankton/string/logic-impl.js 307) return word;
lib/plankton/string/logic-impl.js 308) break;
lib/plankton/string/logic-impl.js 309) }
lib/plankton/string/logic-impl.js 310) }
lib/plankton/string/logic-impl.js 311) }
lib/plankton/string/logic-impl.js 312) lib_string.pad = pad;
lib/plankton/string/logic-impl.js 313) /**
lib/plankton/string/logic-impl.js 314) * @desc checks if a given string conttains a certain substring
lib/plankton/string/logic-impl.js 315) * @param {string} string
lib/plankton/string/logic-impl.js 316) * @param {string} part
lib/plankton/string/logic-impl.js 317) * @return {boolean}
lib/plankton/string/logic-impl.js 318) * @author fenris
lib/plankton/string/logic-impl.js 319) */
lib/plankton/string/logic-impl.js 320) function contains(chain, part) {
lib/plankton/string/logic-impl.js 321) if (typeof (chain) !== "string") {
lib/plankton/string/logic-impl.js 322) return false;
lib/plankton/string/logic-impl.js 323) }
lib/plankton/string/logic-impl.js 324) return (chain.indexOf(part) >= 0);
lib/plankton/string/logic-impl.js 325) }
lib/plankton/string/logic-impl.js 326) lib_string.contains = contains;
lib/plankton/string/logic-impl.js 327) /**
lib/plankton/string/logic-impl.js 328) * @desc checks if a given string starts with a certain substring
lib/plankton/string/logic-impl.js 329) * @param {string} string
lib/plankton/string/logic-impl.js 330) * @param {string} part
lib/plankton/string/logic-impl.js 331) * @return {boolean}
lib/plankton/string/logic-impl.js 332) * @author fenris
lib/plankton/string/logic-impl.js 333) */
lib/plankton/string/logic-impl.js 334) function startsWith(chain, part) {
lib/plankton/string/logic-impl.js 335) if (typeof (chain) !== "string") {
lib/plankton/string/logic-impl.js 336) return false;
lib/plankton/string/logic-impl.js 337) }
lib/plankton/string/logic-impl.js 338) // return (string.indexOf(part) === 0);
lib/plankton/string/logic-impl.js 339) return ((function (m, n) {
lib/plankton/string/logic-impl.js 340) if (n === 0) {
lib/plankton/string/logic-impl.js 341) return true;
lib/plankton/string/logic-impl.js 342) }
lib/plankton/string/logic-impl.js 343) else {
lib/plankton/string/logic-impl.js 344) if (m === 0) {
lib/plankton/string/logic-impl.js 345) return false;
lib/plankton/string/logic-impl.js 346) }
lib/plankton/string/logic-impl.js 347) else {
lib/plankton/string/logic-impl.js 348) return ((chain[0] == part[0])
lib/plankton/string/logic-impl.js 349) &&
lib/plankton/string/logic-impl.js 350) startsWith(chain.substring(1), part.substring(1)));
lib/plankton/string/logic-impl.js 351) }
lib/plankton/string/logic-impl.js 352) }
lib/plankton/string/logic-impl.js 353) })(chain.length, part.length));
lib/plankton/string/logic-impl.js 354) }
lib/plankton/string/logic-impl.js 355) lib_string.startsWith = startsWith;
lib/plankton/string/logic-impl.js 356) /**
lib/plankton/string/logic-impl.js 357) * @desc checks if a given string ends with a certain substring
lib/plankton/string/logic-impl.js 358) * @param {string} string
lib/plankton/string/logic-impl.js 359) * @param {string} part
lib/plankton/string/logic-impl.js 360) * @return {boolean}
lib/plankton/string/logic-impl.js 361) * @author fenris
lib/plankton/string/logic-impl.js 362) */
lib/plankton/string/logic-impl.js 363) function endsWith(chain, part) {
lib/plankton/string/logic-impl.js 364) if (typeof (chain) !== "string") {
lib/plankton/string/logic-impl.js 365) return false;
lib/plankton/string/logic-impl.js 366) }
lib/plankton/string/logic-impl.js 367) // return (string.lastIndexOf(part) === string.length-part.length);
lib/plankton/string/logic-impl.js 368) return ((function (m, n) {
lib/plankton/string/logic-impl.js 369) if (n === 0) {
lib/plankton/string/logic-impl.js 370) return true;
lib/plankton/string/logic-impl.js 371) }
lib/plankton/string/logic-impl.js 372) else {
lib/plankton/string/logic-impl.js 373) if (m === 0) {
lib/plankton/string/logic-impl.js 374) return false;
lib/plankton/string/logic-impl.js 375) }
lib/plankton/string/logic-impl.js 376) else {
lib/plankton/string/logic-impl.js 377) // console.info(("(" + string[m-1] + " == " + part[n-1] + ")") + " = " + String(string[m-1] == part[n-1]));
lib/plankton/string/logic-impl.js 378) return ((chain[m - 1] === part[n - 1])
lib/plankton/string/logic-impl.js 379) &&
lib/plankton/string/logic-impl.js 380) endsWith(chain.substring(0, m - 1), part.substring(0, n - 1)));
lib/plankton/string/logic-impl.js 381) }
lib/plankton/string/logic-impl.js 382) }
lib/plankton/string/logic-impl.js 383) })(chain.length, part.length));
lib/plankton/string/logic-impl.js 384) }
lib/plankton/string/logic-impl.js 385) lib_string.endsWith = endsWith;
lib/plankton/string/logic-impl.js 386) /**
lib/plankton/string/logic-impl.js 387) * @desc count the occourrences of a string in a string
lib/plankton/string/logic-impl.js 388) * @param string haystack_string the string wich should be examined
lib/plankton/string/logic-impl.js 389) * @param string needle_string the string which should be counted
lib/plankton/string/logic-impl.js 390) * @author neuc
lib/plankton/string/logic-impl.js 391) */
lib/plankton/string/logic-impl.js 392) function count_occourrences(haystack_string, needle_string, check_escape) {
lib/plankton/string/logic-impl.js 393) var cnt = 0;
lib/plankton/string/logic-impl.js 394) var pos = -1;
lib/plankton/string/logic-impl.js 395) do {
lib/plankton/string/logic-impl.js 396) pos = haystack_string.indexOf(needle_string, pos + 1);
lib/plankton/string/logic-impl.js 397) if ((!check_escape) || (haystack_string[pos - 1] != "\\")) {
lib/plankton/string/logic-impl.js 398) cnt++;
lib/plankton/string/logic-impl.js 399) }
lib/plankton/string/logic-impl.js 400) } while (pos >= 0);
lib/plankton/string/logic-impl.js 401) return (cnt - 1);
lib/plankton/string/logic-impl.js 402) }
lib/plankton/string/logic-impl.js 403) lib_string.count_occourrences = count_occourrences;
lib/plankton/string/logic-impl.js 404) /**
lib/plankton/string/logic-impl.js 405) * @desc replaces occurences of "${name}" in a string by the corresponding values of an argument object
lib/plankton/string/logic-impl.js 406) * @author fenris
lib/plankton/string/logic-impl.js 407) */
lib/plankton/string/logic-impl.js 408) function coin(str, args) {
lib/plankton/string/logic-impl.js 409) Object.keys(args).forEach(function (key) {
lib/plankton/string/logic-impl.js 410) // old syntax
lib/plankton/string/logic-impl.js 411) {
lib/plankton/string/logic-impl.js 412) var value = args[key];
lib/plankton/string/logic-impl.js 413) var regexp_argument = new RegExp("\\${" + key + "}");
lib/plankton/string/logic-impl.js 414) str = str.replace(regexp_argument, value);
lib/plankton/string/logic-impl.js 415) }
lib/plankton/string/logic-impl.js 416) // new syntax
lib/plankton/string/logic-impl.js 417) {
lib/plankton/string/logic-impl.js 418) var value = args[key];
lib/plankton/string/logic-impl.js 419) var regexp_argument = new RegExp("{{" + key + "}}");
lib/plankton/string/logic-impl.js 420) str = str.replace(regexp_argument, value);
lib/plankton/string/logic-impl.js 421) }
lib/plankton/string/logic-impl.js 422) });
lib/plankton/string/logic-impl.js 423) return str;
lib/plankton/string/logic-impl.js 424) }
lib/plankton/string/logic-impl.js 425) lib_string.coin = coin;
lib/plankton/string/logic-impl.js 426) /**
lib/plankton/string/logic-impl.js 427) * @author fenris
lib/plankton/string/logic-impl.js 428) */
lib/plankton/string/logic-impl.js 429) lib_string.stance = coin;
lib/plankton/string/logic-impl.js 430) /**
lib/plankton/string/logic-impl.js 431) * @author fenris
lib/plankton/string/logic-impl.js 432) */
lib/plankton/string/logic-impl.js 433) function url_encode(_a) {
lib/plankton/string/logic-impl.js 434) var _b = _a === void 0 ? {} : _a, _c = _b["protocol"], protocol = _c === void 0 ? null : _c, _d = _b["host"], host = _d === void 0 ? null : _d, _e = _b["port"], port = _e === void 0 ? null : _e, _f = _b["path"], path = _f === void 0 ? null : _f, _g = _b["arguments"], arguments_ = _g === void 0 ? null : _g;
lib/plankton/string/logic-impl.js 435) var url = "";
lib/plankton/string/logic-impl.js 436) // protocol
lib/plankton/string/logic-impl.js 437) {
lib/plankton/string/logic-impl.js 438) if (protocol != null) {
lib/plankton/string/logic-impl.js 439) url = protocol + ":" + url;
lib/plankton/string/logic-impl.js 440) }
lib/plankton/string/logic-impl.js 441) }
lib/plankton/string/logic-impl.js 442) // host
lib/plankton/string/logic-impl.js 443) {
lib/plankton/string/logic-impl.js 444) if (host != null) {
lib/plankton/string/logic-impl.js 445) url = url + "//" + host;
lib/plankton/string/logic-impl.js 446) }
lib/plankton/string/logic-impl.js 447) }
lib/plankton/string/logic-impl.js 448) // port
lib/plankton/string/logic-impl.js 449) {
lib/plankton/string/logic-impl.js 450) if (port != null) {
lib/plankton/string/logic-impl.js 451) url = url + ":" + port.toString();
lib/plankton/string/logic-impl.js 452) }
lib/plankton/string/logic-impl.js 453) }
lib/plankton/string/logic-impl.js 454) // path
lib/plankton/string/logic-impl.js 455) {
lib/plankton/string/logic-impl.js 456) if (path != null) {
lib/plankton/string/logic-impl.js 457) var path_ = encodeURI(path);
lib/plankton/string/logic-impl.js 458) url = "" + url + path_;
lib/plankton/string/logic-impl.js 459) }
lib/plankton/string/logic-impl.js 460) }
lib/plankton/string/logic-impl.js 461) // arguments
lib/plankton/string/logic-impl.js 462) {
lib/plankton/string/logic-impl.js 463) if (arguments_ != null) {
lib/plankton/string/logic-impl.js 464) var suffix = Object.keys(arguments_).map(function (key) { return key + "=" + arguments_[key]; }).join("&");
lib/plankton/string/logic-impl.js 465) var suffix_ = encodeURI(suffix);
lib/plankton/string/logic-impl.js 466) url = url + "?" + suffix_;
lib/plankton/string/logic-impl.js 467) }
lib/plankton/string/logic-impl.js 468) }
lib/plankton/string/logic-impl.js 469) return url;
lib/plankton/string/logic-impl.js 470) }
lib/plankton/string/logic-impl.js 471) lib_string.url_encode = url_encode;
lib/plankton/string/logic-impl.js 472) /**
lib/plankton/string/logic-impl.js 473) * @author fenris
lib/plankton/string/logic-impl.js 474) */
lib/plankton/string/logic-impl.js 475) lib_string.make_url = url_encode;
lib/plankton/string/logic-impl.js 476) /**
lib/plankton/string/logic-impl.js 477) * @author fenris
lib/plankton/string/logic-impl.js 478) * @todo arguments
lib/plankton/string/logic-impl.js 479) */
lib/plankton/string/logic-impl.js 480) function url_decode(url) {
lib/plankton/string/logic-impl.js 481) var regexp = new RegExp("^([^:]*)://([^:]*):([^/]*)/(.*)$");
lib/plankton/string/logic-impl.js 482) var matching = regexp.exec(url);
lib/plankton/string/logic-impl.js 483) if (matching === null) {
lib/plankton/string/logic-impl.js 484) return null;
lib/plankton/string/logic-impl.js 485) }
lib/plankton/string/logic-impl.js 486) else {
lib/plankton/string/logic-impl.js 487) var components = {
lib/plankton/string/logic-impl.js 488) "protocol": matching[1],
lib/plankton/string/logic-impl.js 489) "host": matching[2],
lib/plankton/string/logic-impl.js 490) "port": parseInt(matching[3]),
lib/plankton/string/logic-impl.js 491) "path": ("/" + matching[4])
lib/plankton/string/logic-impl.js 492) };
lib/plankton/string/logic-impl.js 493) return components;
lib/plankton/string/logic-impl.js 494) }
lib/plankton/string/logic-impl.js 495) }
lib/plankton/string/logic-impl.js 496) lib_string.url_decode = url_decode;
lib/plankton/string/logic-impl.js 497) /**
lib/plankton/string/logic-impl.js 498) * @author fenris
lib/plankton/string/logic-impl.js 499) */
lib/plankton/string/logic-impl.js 500) function cut(str, length, delimiter) {
lib/plankton/string/logic-impl.js 501) if (delimiter === void 0) { delimiter = "…"; }
lib/plankton/string/logic-impl.js 502) if (str.length <= length) {
lib/plankton/string/logic-impl.js 503) return str;
lib/plankton/string/logic-impl.js 504) }
lib/plankton/string/logic-impl.js 505) else {
lib/plankton/string/logic-impl.js 506) return (str.slice(0, length - delimiter.length) + delimiter);
lib/plankton/string/logic-impl.js 507) }
lib/plankton/string/logic-impl.js 508) }
lib/plankton/string/logic-impl.js 509) lib_string.cut = cut;
lib/plankton/string/logic-impl.js 510) })(lib_string || (lib_string = {}));
lib/plankton/string/logic-impl.js 511) /*
lib/plankton/string/logic-impl.js 512) This file is part of »bacterio-plankton:string«.
lib/plankton/string/logic-impl.js 513)
|
[add] lib:plankton
Christian Fraß authored 3 years ago
|
lib/plankton/string/logic-impl.js 515) <info@greenscale.de>
lib/plankton/string/logic-impl.js 516)
lib/plankton/string/logic-impl.js 517) »bacterio-plankton:string« is free software: you can redistribute it and/or modify
lib/plankton/string/logic-impl.js 518) it under the terms of the GNU Lesser General Public License as published by
lib/plankton/string/logic-impl.js 519) the Free Software Foundation, either version 3 of the License, or
lib/plankton/string/logic-impl.js 520) (at your option) any later version.
lib/plankton/string/logic-impl.js 521)
lib/plankton/string/logic-impl.js 522) »bacterio-plankton:string« is distributed in the hope that it will be useful,
lib/plankton/string/logic-impl.js 523) but WITHOUT ANY WARRANTY; without even the implied warranty of
lib/plankton/string/logic-impl.js 524) MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
lib/plankton/string/logic-impl.js 525) GNU Lesser General Public License for more details.
lib/plankton/string/logic-impl.js 526)
lib/plankton/string/logic-impl.js 527) You should have received a copy of the GNU Lesser General Public License
lib/plankton/string/logic-impl.js 528) along with »bacterio-plankton:string«. If not, see <http://www.gnu.org/licenses/>.
lib/plankton/string/logic-impl.js 529) */
lib/plankton/string/logic-impl.js 530) var lib_string;
lib/plankton/string/logic-impl.js 531) (function (lib_string) {
lib/plankton/string/logic-impl.js 532) var pattern = /%([-+#0 ]*)([0-9]*)[\.]{0,1}([0-9]*)([\w]{1})/;
lib/plankton/string/logic-impl.js 533) var gpattern = /%([-+#0 ]*)([0-9]*)[\.]{0,1}([0-9]*)([\w]{1})/g;
lib/plankton/string/logic-impl.js 534) function split_format(format) {
lib/plankton/string/logic-impl.js 535) var tmp = format.match(pattern);
lib/plankton/string/logic-impl.js 536) if (tmp === null)
lib/plankton/string/logic-impl.js 537) return null;
lib/plankton/string/logic-impl.js 538) return {
lib/plankton/string/logic-impl.js 539) 'flags': tmp[1].split(""),
lib/plankton/string/logic-impl.js 540) 'width': Number(tmp[2]),
lib/plankton/string/logic-impl.js 541) 'precision': tmp[3] === '' ? null : Number(tmp[3]),
lib/plankton/string/logic-impl.js 542) 'specifier': tmp[4],
lib/plankton/string/logic-impl.js 543) 'string': format
lib/plankton/string/logic-impl.js 544) };
lib/plankton/string/logic-impl.js 545) }
lib/plankton/string/logic-impl.js 546) function make_err(format, arg, should) {
lib/plankton/string/logic-impl.js 547) return ("[sprintf]" + " " + "argument for '" + format.string + "' has to be '" + should + "' but '" + arg + "' is '" + typeof arg + "'!");
lib/plankton/string/logic-impl.js 548) }
lib/plankton/string/logic-impl.js 549) function test_arg(format, arg, should) {
lib/plankton/string/logic-impl.js 550) if (typeof arg !== should) {
lib/plankton/string/logic-impl.js 551) console.warn(make_err(format, arg, should));
lib/plankton/string/logic-impl.js 552) return false;
lib/plankton/string/logic-impl.js 553) }
lib/plankton/string/logic-impl.js 554) return true;
lib/plankton/string/logic-impl.js 555) }
lib/plankton/string/logic-impl.js 556) function string_fill(str, char, len, left) {
lib/plankton/string/logic-impl.js 557) while (str.length < len) {
lib/plankton/string/logic-impl.js 558) if (left) {
lib/plankton/string/logic-impl.js 559) str += char;
lib/plankton/string/logic-impl.js 560) }
lib/plankton/string/logic-impl.js 561) else {
lib/plankton/string/logic-impl.js 562) str = char + str;
lib/plankton/string/logic-impl.js 563) }
lib/plankton/string/logic-impl.js 564) }
lib/plankton/string/logic-impl.js 565) return str;
lib/plankton/string/logic-impl.js 566) }
lib/plankton/string/logic-impl.js 567) /**
lib/plankton/string/logic-impl.js 568) * the known_parameters are used to parse the different identifiers for the welln known syntax:
lib/plankton/string/logic-impl.js 569) * flag width precision identifier
lib/plankton/string/logic-impl.js 570) * %{[0#+- ]}{[0-9]*}.{[0-9]*}[fFdiueEgGsoxXaAsn]
lib/plankton/string/logic-impl.js 571) * flags:
lib/plankton/string/logic-impl.js 572) * 0 - fill with '0' instead of ' ' if the string length < width
lib/plankton/string/logic-impl.js 573) * # - not implemented
lib/plankton/string/logic-impl.js 574) * - - left-justified -> fill on the right side to reach width
lib/plankton/string/logic-impl.js 575) * + - force using '+' on positive numbers
lib/plankton/string/logic-impl.js 576) * ' ' - add a single space before positive numbers
lib/plankton/string/logic-impl.js 577) *
lib/plankton/string/logic-impl.js 578) * identifiers
lib/plankton/string/logic-impl.js 579) * %f, %F - interpret given number as float, width: the minimal total width (fill with ' ' or '0' if the
lib/plankton/string/logic-impl.js 580) * resulting string is too short, precision: cut more then given decimal places
lib/plankton/string/logic-impl.js 581) * %d, %i, %u - interpret number as integer, decimal places will be cut. width: like float, precision:
lib/plankton/string/logic-impl.js 582) * fill with '0' on right side until length given in precision is reached
lib/plankton/string/logic-impl.js 583) * %e - interpret as float and write as scientifical number, width & precision like in float
lib/plankton/string/logic-impl.js 584) * %E - same es %e but uppercase 'E'
lib/plankton/string/logic-impl.js 585) * %g - use the shortest string of %f or %e
lib/plankton/string/logic-impl.js 586) * %G - use the shortest string of %E or %E
lib/plankton/string/logic-impl.js 587) * %s - simply print a string
lib/plankton/string/logic-impl.js 588) * %o - print the given number in octal notation
lib/plankton/string/logic-impl.js 589) * %x - print the given number in hex notation
lib/plankton/string/logic-impl.js 590) * %X - same as %x but with uppercase characters
lib/plankton/string/logic-impl.js 591) * %a - alias to %x
lib/plankton/string/logic-impl.js 592) * %A - alias to %X
lib/plankton/string/logic-impl.js 593) * %n - just print nothing
lib/plankton/string/logic-impl.js 594) * @type {{}}
lib/plankton/string/logic-impl.js 595) */
lib/plankton/string/logic-impl.js 596) var known_params = {};
lib/plankton/string/logic-impl.js 597) known_params["f"] = function (format, arg) {
lib/plankton/string/logic-impl.js 598) if (!test_arg(format, arg, "number"))
lib/plankton/string/logic-impl.js 599) return "Ø";
lib/plankton/string/logic-impl.js 600) var tmp = Math.abs(arg);
lib/plankton/string/logic-impl.js 601) var sign = (arg < 0) ? -1 : 1;
lib/plankton/string/logic-impl.js 602) var tmp_result = null;
lib/plankton/string/logic-impl.js 603) if (format.precision !== null) {
lib/plankton/string/logic-impl.js 604) tmp = Math.floor(Math.pow(10, format.precision) * tmp) / Math.pow(10, format.precision);
lib/plankton/string/logic-impl.js 605) var tmp_ = (tmp * sign).toString().split(".");
lib/plankton/string/logic-impl.js 606) if (tmp_.length === 1)
lib/plankton/string/logic-impl.js 607) tmp_.push("");
lib/plankton/string/logic-impl.js 608) tmp_[1] = string_fill(tmp_[1], "0", format.precision, true);
lib/plankton/string/logic-impl.js 609) tmp_result = tmp_.join(".");
lib/plankton/string/logic-impl.js 610) }
lib/plankton/string/logic-impl.js 611) else {
lib/plankton/string/logic-impl.js 612) tmp_result = (sign * tmp).toString();
lib/plankton/string/logic-impl.js 613) }
lib/plankton/string/logic-impl.js 614) if ((format.flags.indexOf(" ") >= 0) && (arg >= 0)) {
lib/plankton/string/logic-impl.js 615) tmp_result = " " + tmp;
lib/plankton/string/logic-impl.js 616) }
lib/plankton/string/logic-impl.js 617) else if ((format.flags.indexOf("+") >= 0) && (arg >= 0)) {
lib/plankton/string/logic-impl.js 618) tmp_result = "+" + tmp;
lib/plankton/string/logic-impl.js 619) }
lib/plankton/string/logic-impl.js 620) tmp_result = string_fill(tmp, (format.flags.indexOf("0") >= 0) ? "0" : " ", format.width, (format.flags.indexOf("-") >= 0));
lib/plankton/string/logic-impl.js 621) return tmp_result;
lib/plankton/string/logic-impl.js 622) };
lib/plankton/string/logic-impl.js 623) known_params["F"] = known_params["f"];
lib/plankton/string/logic-impl.js 624) known_params["d"] = function (format, arg) {
lib/plankton/string/logic-impl.js 625) if (!test_arg(format, arg, 'number'))
lib/plankton/string/logic-impl.js 626) return 'Ø';
lib/plankton/string/logic-impl.js 627) var tmp = (((arg < 0 && format.specifier !== 'u') ? -1 : 1) * Math.floor(Math.abs(arg))).toString();
lib/plankton/string/logic-impl.js 628) if ((format.specifier === 'd' || format.specifier === 'i') && format.flags.indexOf(' ') >= 0 && arg >= 0) {
lib/plankton/string/logic-impl.js 629) tmp = ' ' + tmp;
lib/plankton/string/logic-impl.js 630) }
lib/plankton/string/logic-impl.js 631) else if ((format.specifier === 'd' || format.specifier === 'i') && format.flags.indexOf('+') >= 0 && arg >= 0) {
lib/plankton/string/logic-impl.js 632) tmp = '+' + tmp;
lib/plankton/string/logic-impl.js 633) }
lib/plankton/string/logic-impl.js 634) tmp = string_fill(tmp, format.flags.indexOf('0') >= 0 ? '0' : ' ', format.width, format.flags.indexOf('-') >= 0);
lib/plankton/string/logic-impl.js 635) tmp = string_fill(tmp, '0', format.precision === null ? 0 : format.precision, false);
lib/plankton/string/logic-impl.js 636) return tmp;
lib/plankton/string/logic-impl.js 637) };
lib/plankton/string/logic-impl.js 638) known_params["i"] = known_params["d"];
lib/plankton/string/logic-impl.js 639) known_params["u"] = known_params["d"];
lib/plankton/string/logic-impl.js 640) known_params["e"] = function (format, arg) {
lib/plankton/string/logic-impl.js 641) if (!test_arg(format, arg, 'number'))
lib/plankton/string/logic-impl.js 642) return 'Ø';
lib/plankton/string/logic-impl.js 643) var tmp = arg.toExponential(format.precision === null ? undefined : format.precision).toString();
lib/plankton/string/logic-impl.js 644) if (format.flags.indexOf(' ') >= 0 && arg >= 0) {
lib/plankton/string/logic-impl.js 645) tmp = ' ' + tmp;
lib/plankton/string/logic-impl.js 646) }
lib/plankton/string/logic-impl.js 647) else if (format.flags.indexOf('+') >= 0 && arg >= 0) {
lib/plankton/string/logic-impl.js 648) tmp = '+' + tmp;
lib/plankton/string/logic-impl.js 649) }
lib/plankton/string/logic-impl.js 650) tmp = string_fill(tmp, format.flags.indexOf('0') >= 0 ? '0' : ' ', format.width, format.flags.indexOf('-') >= 0);
lib/plankton/string/logic-impl.js 651) return tmp;
lib/plankton/string/logic-impl.js 652) };
lib/plankton/string/logic-impl.js 653) known_params["E"] = function (format, arg) {
lib/plankton/string/logic-impl.js 654) return known_params["e"](format, arg).toUpperCase();
lib/plankton/string/logic-impl.js 655) };
lib/plankton/string/logic-impl.js 656) known_params["g"] = function (format, arg) {
lib/plankton/string/logic-impl.js 657) if (!test_arg(format, arg, 'number'))
lib/plankton/string/logic-impl.js 658) return 'Ø';
lib/plankton/string/logic-impl.js 659) var tmpf = known_params["f"](format, arg);
lib/plankton/string/logic-impl.js 660) var tmpe = known_params["e"](format, arg);
lib/plankton/string/logic-impl.js 661) if (tmpf.length < tmpe.length) {
lib/plankton/string/logic-impl.js 662) return tmpf;
lib/plankton/string/logic-impl.js 663) }
lib/plankton/string/logic-impl.js 664) else {
lib/plankton/string/logic-impl.js 665) return tmpe;
lib/plankton/string/logic-impl.js 666) }
lib/plankton/string/logic-impl.js 667) };
lib/plankton/string/logic-impl.js 668) known_params["G"] = function (format, arg) {
lib/plankton/string/logic-impl.js 669) return known_params["g"](format, arg).toUpperCase();
lib/plankton/string/logic-impl.js 670) };
lib/plankton/string/logic-impl.js 671) known_params["s"] = function (format, arg) {
lib/plankton/string/logic-impl.js 672) if (!test_arg(format, arg, 'string'))
lib/plankton/string/logic-impl.js 673) return 'o.O';
lib/plankton/string/logic-impl.js 674) var tmp = format.precision !== null ? arg.substr(0, format.precision) : arg;
lib/plankton/string/logic-impl.js 675) tmp = string_fill(tmp, format.flags.indexOf('0') >= 0 ? '0' : ' ', format.width, format.flags.indexOf('-') >= 0);
lib/plankton/string/logic-impl.js 676) return tmp;
lib/plankton/string/logic-impl.js 677) };
lib/plankton/string/logic-impl.js 678) known_params["o"] = function (format, arg) {
lib/plankton/string/logic-impl.js 679) if (!test_arg(format, arg, 'number'))
lib/plankton/string/logic-impl.js 680) return 'Ø';
lib/plankton/string/logic-impl.js 681) var tmp = Math.floor(Math.round(Math.abs(arg))) * ((arg < 0) ? -1 : 1);
lib/plankton/string/logic-impl.js 682) return known_params["s"](format, tmp.toString(8));
lib/plankton/string/logic-impl.js 683) };
lib/plankton/string/logic-impl.js 684) known_params["x"] = function (format, arg) {
lib/plankton/string/logic-impl.js 685) if (!test_arg(format, arg, 'number'))
lib/plankton/string/logic-impl.js 686) return 'Ø';
lib/plankton/string/logic-impl.js 687) var tmp = Math.floor(Math.round(Math.abs(arg))) * ((arg < 0) ? -1 : 1);
lib/plankton/string/logic-impl.js 688) return known_params["s"](format, tmp.toString(16));
lib/plankton/string/logic-impl.js 689) };
lib/plankton/string/logic-impl.js 690) known_params["a"] = known_params["x"];
lib/plankton/string/logic-impl.js 691) known_params["X"] = function (format, arg) {
lib/plankton/string/logic-impl.js 692) if (!test_arg(format, arg, 'number'))
lib/plankton/string/logic-impl.js 693) return 'Ø';
lib/plankton/string/logic-impl.js 694) return known_params["x"](format, arg).toUpperCase();
lib/plankton/string/logic-impl.js 695) };
lib/plankton/string/logic-impl.js 696) known_params["A"] = known_params["X"];
lib/plankton/string/logic-impl.js 697) known_params["c"] = function (format, arg) {
lib/plankton/string/logic-impl.js 698) var tmp = "";
lib/plankton/string/logic-impl.js 699) if (typeof arg === "number") {
lib/plankton/string/logic-impl.js 700) tmp = String.fromCharCode(arg);
lib/plankton/string/logic-impl.js 701) }
lib/plankton/string/logic-impl.js 702) else if ((typeof arg === "string") && (arg.length === 1)) {
lib/plankton/string/logic-impl.js 703) tmp = arg[0];
lib/plankton/string/logic-impl.js 704) }
lib/plankton/string/logic-impl.js 705) else {
lib/plankton/string/logic-impl.js 706) console.warn(make_err(format, arg, "number|string") + " and if string it needs to have the length of 1!");
lib/plankton/string/logic-impl.js 707) }
lib/plankton/string/logic-impl.js 708) return known_params["s"](format, tmp);
lib/plankton/string/logic-impl.js 709) };
lib/plankton/string/logic-impl.js 710) known_params["n"] = function () {
lib/plankton/string/logic-impl.js 711) return "";
lib/plankton/string/logic-impl.js 712) };
lib/plankton/string/logic-impl.js 713) var decompose = function (chain, regexp) {
lib/plankton/string/logic-impl.js 714) var result = regexp.exec(chain);
lib/plankton/string/logic-impl.js 715) if (result == null) {
lib/plankton/string/logic-impl.js 716) return null;
lib/plankton/string/logic-impl.js 717) }
lib/plankton/string/logic-impl.js 718) else {
lib/plankton/string/logic-impl.js 719) var front = chain.substring(0, result.index);
lib/plankton/string/logic-impl.js 720) var back = chain.substring(result.index + result[0].length);
lib/plankton/string/logic-impl.js 721) return { "front": front, "match": result[0], "back": back };
lib/plankton/string/logic-impl.js 722) }
lib/plankton/string/logic-impl.js 723) };
lib/plankton/string/logic-impl.js 724) /**
lib/plankton/string/logic-impl.js 725) * an implementation of c sprintf
lib/plankton/string/logic-impl.js 726) * @param {string} string format string
lib/plankton/string/logic-impl.js 727) * @param {array} args arguments which should be filled into
lib/plankton/string/logic-impl.js 728) * @returns {string}
lib/plankton/string/logic-impl.js 729) */
lib/plankton/string/logic-impl.js 730) lib_string.sprintf = function (input, args, original) {
lib/plankton/string/logic-impl.js 731) if (args === void 0) { args = []; }
lib/plankton/string/logic-impl.js 732) if (original === void 0) { original = null; }
lib/plankton/string/logic-impl.js 733) if (original == null)
lib/plankton/string/logic-impl.js 734) original = input;
lib/plankton/string/logic-impl.js 735) var components = decompose(input, pattern);
lib/plankton/string/logic-impl.js 736) if (components == null) {
lib/plankton/string/logic-impl.js 737) if (args.length > 0) {
lib/plankton/string/logic-impl.js 738) console.warn("[sprintf] superfluous arguments while formatting '" + original + "': ", args);
lib/plankton/string/logic-impl.js 739) }
lib/plankton/string/logic-impl.js 740) return input;
lib/plankton/string/logic-impl.js 741) }
lib/plankton/string/logic-impl.js 742) else {
lib/plankton/string/logic-impl.js 743) var arg;
lib/plankton/string/logic-impl.js 744) var rest;
lib/plankton/string/logic-impl.js 745) if (args.length > 0) {
lib/plankton/string/logic-impl.js 746) arg = args[0];
lib/plankton/string/logic-impl.js 747) rest = args.slice(1);
lib/plankton/string/logic-impl.js 748) }
lib/plankton/string/logic-impl.js 749) else {
lib/plankton/string/logic-impl.js 750) console.warn("[sprintf] out of arguments while formatting '" + original + "'");
lib/plankton/string/logic-impl.js 751) arg = null;
lib/plankton/string/logic-impl.js 752) rest = [];
lib/plankton/string/logic-impl.js 753) return input;
lib/plankton/string/logic-impl.js 754) }
lib/plankton/string/logic-impl.js 755) var fmt = split_format(components["match"]);
lib/plankton/string/logic-impl.js 756) return (components["front"]
lib/plankton/string/logic-impl.js 757) + known_params[fmt.specifier](fmt, arg)
lib/plankton/string/logic-impl.js 758) + lib_string.sprintf(components["back"], rest, original));
lib/plankton/string/logic-impl.js 759) }
lib/plankton/string/logic-impl.js 760) };
lib/plankton/string/logic-impl.js 761) /**
lib/plankton/string/logic-impl.js 762) * an implementation of c printf
lib/plankton/string/logic-impl.js 763) * @param {string} string format string
lib/plankton/string/logic-impl.js 764) * @param {array} args arguments which should be filled into
lib/plankton/string/logic-impl.js 765) * @returns {string}
lib/plankton/string/logic-impl.js 766) */
lib/plankton/string/logic-impl.js 767) function printf(format, args) {
lib/plankton/string/logic-impl.js 768) console.log(lib_string.sprintf(format, args));
lib/plankton/string/logic-impl.js 769) }
lib/plankton/string/logic-impl.js 770) lib_string.printf = printf;
lib/plankton/string/logic-impl.js 771) })(lib_string || (lib_string = {}));
lib/plankton/string/logic-impl.js 772) var sprintf = lib_string.sprintf;
lib/plankton/string/logic-impl.js 773) var printf = lib_string.printf;
lib/plankton/string/logic-impl.js 774) /*
lib/plankton/string/logic-impl.js 775) This file is part of »bacterio-plankton:string«.
lib/plankton/string/logic-impl.js 776)
|