diff options
Diffstat (limited to 'includes/js/dojox/dtl/filter/strings.js')
-rw-r--r-- | includes/js/dojox/dtl/filter/strings.js | 327 |
1 files changed, 0 insertions, 327 deletions
diff --git a/includes/js/dojox/dtl/filter/strings.js b/includes/js/dojox/dtl/filter/strings.js deleted file mode 100644 index 1270574..0000000 --- a/includes/js/dojox/dtl/filter/strings.js +++ /dev/null @@ -1,327 +0,0 @@ -if(!dojo._hasResource["dojox.dtl.filter.strings"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code. -dojo._hasResource["dojox.dtl.filter.strings"] = true; -dojo.provide("dojox.dtl.filter.strings"); - -dojo.require("dojox.dtl.filter.htmlstrings"); -dojo.require("dojox.string.sprintf"); -dojo.require("dojox.string.tokenize"); - -dojo.mixin(dojox.dtl.filter.strings, { - _urlquote: function(/*String*/ url, /*String?*/ safe){ - if(!safe){ - safe = "/"; - } - return dojox.string.tokenize(url, /([^\w-_.])/g, function(token){ - if(safe.indexOf(token) == -1){ - if(token == " "){ - return "+"; - }else{ - return "%" + token.charCodeAt(0).toString(16).toUpperCase(); - } - } - return token; - }).join(""); - }, - addslashes: function(value){ - // summary: Adds slashes - useful for passing strings to JavaScript, for example. - return value.replace(/\\/g, "\\\\").replace(/"/g, '\\"').replace(/'/g, "\\'"); - }, - capfirst: function(value){ - // summary: Capitalizes the first character of the value - value = "" + value; - return value.charAt(0).toUpperCase() + value.substring(1); - }, - center: function(value, arg){ - // summary: Centers the value in a field of a given width - arg = arg || value.length; - value = value + ""; - var diff = arg - value.length; - if(diff % 2){ - value = value + " "; - diff -= 1; - } - for(var i = 0; i < diff; i += 2){ - value = " " + value + " "; - } - return value; - }, - cut: function(value, arg){ - // summary: Removes all values of arg from the given string - arg = arg + "" || ""; - value = value + ""; - return value.replace(new RegExp(arg, "g"), ""); - }, - _fix_ampersands: /&(?!(\w+|#\d+);)/g, - fix_ampersands: function(value){ - // summary: Replaces ampersands with ``&`` entities - return value.replace(dojox.dtl.filter.strings._fix_ampersands, "&"); - }, - floatformat: function(value, arg){ - // summary: Format a number according to arg - // description: - // If called without an argument, displays a floating point - // number as 34.2 -- but only if there's a point to be displayed. - // With a positive numeric argument, it displays that many decimal places - // always. - // With a negative numeric argument, it will display that many decimal - // places -- but only if there's places to be displayed. - arg = parseInt(arg || -1); - value = parseFloat(value); - var m = value - value.toFixed(0); - if(!m && arg < 0){ - return value.toFixed(); - } - value = value.toFixed(Math.abs(arg)); - return (arg < 0) ? parseFloat(value) + "" : value; - }, - iriencode: function(value){ - return dojox.dtl.filter.strings._urlquote(value, "/#%[]=:;$&()+,!"); - }, - linenumbers: function(value){ - // summary: Displays text with line numbers - var df = dojox.dtl.filter; - var lines = value.split("\n"); - var output = []; - var width = (lines.length + "").length; - for(var i = 0, line; i < lines.length; i++){ - line = lines[i]; - output.push(df.strings.ljust(i + 1, width) + ". " + df.htmlstrings.escape(line)); - } - return output.join("\n"); - }, - ljust: function(value, arg){ - value = value + ""; - arg = parseInt(arg); - while(value.length < arg){ - value = value + " "; - } - return value; - }, - lower: function(value){ - // summary: Converts a string into all lowercase - return (value + "").toLowerCase(); - }, - make_list: function(value){ - // summary: - // Returns the value turned into a list. For an integer, it's a list of - // digits. For a string, it's a list of characters. - var output = []; - if(typeof value == "number"){ - value = value + ""; - } - if(value.charAt){ - for(var i = 0; i < value.length; i++){ - output.push(value.charAt(i)); - } - return output; - } - if(typeof value == "object"){ - for(var key in value){ - output.push(value[key]); - } - return output; - } - return []; - }, - rjust: function(value, arg){ - value = value + ""; - arg = parseInt(arg); - while(value.length < arg){ - value = " " + value; - } - return value; - }, - slugify: function(value){ - // summary: Converts to lowercase, removes - // non-alpha chars and converts spaces to hyphens - value = value.replace(/[^\w\s-]/g, "").toLowerCase(); - return value.replace(/[\-\s]+/g, "-"); - }, - _strings: {}, - stringformat: function(value, arg){ - // summary: - // Formats the variable according to the argument, a string formatting specifier. - // This specifier uses Python string formating syntax, with the exception that - // the leading "%" is dropped. - arg = "" + arg; - var strings = dojox.dtl.filter.strings._strings; - if(!strings[arg]){ - strings[arg] = new dojox.string.sprintf.Formatter("%" + arg); - } - return strings[arg].format(value); - }, - title: function(value){ - // summary: Converts a string into titlecase - var last, title = ""; - for(var i = 0, current; i < value.length; i++){ - current = value.charAt(i); - if(last == " " || last == "\n" || last == "\t" || !last){ - title += current.toUpperCase(); - }else{ - title += current.toLowerCase(); - } - last = current; - } - return title; - }, - _truncatewords: /[ \n\r\t]/, - truncatewords: function(value, arg){ - // summary: Truncates a string after a certain number of words - // arg: Integer - // Number of words to truncate after - arg = parseInt(arg); - if(!arg){ - return value; - } - - for(var i = 0, j = value.length, count = 0, current, last; i < value.length; i++){ - current = value.charAt(i); - if(dojox.dtl.filter.strings._truncatewords.test(last)){ - if(!dojox.dtl.filter.strings._truncatewords.test(current)){ - ++count; - if(count == arg){ - return value.substring(0, j + 1); - } - } - }else if(!dojox.dtl.filter.strings._truncatewords.test(current)){ - j = i; - } - last = current; - } - return value; - }, - _truncate_words: /(&.*?;|<.*?>|(\w[\w\-]*))/g, - _truncate_tag: /<(\/)?([^ ]+?)(?: (\/)| .*?)?>/, - _truncate_singlets: { br: true, col: true, link: true, base: true, img: true, param: true, area: true, hr: true, input: true }, - truncatewords_html: function(value, arg){ - arg = parseInt(arg); - - if(arg <= 0){ - return ""; - } - - var strings = dojox.dtl.filter.strings; - var words = 0; - var open = []; - - var output = dojox.string.tokenize(value, strings._truncate_words, function(all, word){ - if(word){ - // It's an actual non-HTML word - ++words; - if(words < arg){ - return word; - }else if(words == arg){ - return word + " ..."; - } - } - // Check for tag - var tag = all.match(strings._truncate_tag); - if(!tag || words >= arg){ - // Don't worry about non tags or tags after our truncate point - return; - } - var closing = tag[1]; - var tagname = tag[2].toLowerCase(); - var selfclosing = tag[3]; - if(closing || strings._truncate_singlets[tagname]){ - }else if(closing){ - var i = dojo.indexOf(open, tagname); - if(i != -1){ - open = open.slice(i + 1); - } - }else{ - open.unshift(tagname); - } - return all; - }).join(""); - - output = output.replace(/\s+$/g, ""); - - for(var i = 0, tag; tag = open[i]; i++){ - output += "</" + tag + ">"; - } - - return output; - }, - upper: function(value){ - return value.toUpperCase(); - }, - urlencode: function(value){ - return dojox.dtl.filter.strings._urlquote(value); - }, - _urlize: /^((?:[(>]|<)*)(.*?)((?:[.,)>\n]|>)*)$/, - _urlize2: /^\S+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9._-]+$/, - urlize: function(value){ - return dojox.dtl.filter.strings.urlizetrunc(value); - }, - urlizetrunc: function(value, arg){ - arg = parseInt(arg); - return dojox.string.tokenize(value, /(\S+)/g, function(word){ - var matches = dojox.dtl.filter.strings._urlize.exec(word); - if(!matches){ - return word; - } - var lead = matches[1]; - var middle = matches[2]; - var trail = matches[3]; - - var startsWww = middle.indexOf("www.") == 0; - var hasAt = middle.indexOf("@") != -1; - var hasColon = middle.indexOf(":") != -1; - var startsHttp = middle.indexOf("http://") == 0; - var startsHttps = middle.indexOf("https://") == 0; - var firstAlpha = /[a-zA-Z0-9]/.test(middle.charAt(0)); - var last4 = middle.substring(middle.length - 4); - - var trimmed = middle; - if(arg > 3){ - trimmed = trimmed.substring(0, arg - 3) + "..."; - } - - if(startsWww || (!hasAt && !startsHttp && middle.length && firstAlpha && (last4 == ".org" || last4 == ".net" || last4 == ".com"))){ - return '<a href="http://' + middle + '" rel="nofollow">' + trimmed + '</a>'; - }else if(startsHttp || startsHttps){ - return '<a href="' + middle + '" rel="nofollow">' + trimmed + '</a>'; - }else if(hasAt && !startsWww && !hasColon && dojox.dtl.filter.strings._urlize2.test(middle)){ - return '<a href="mailto:' + middle + '">' + middle + '</a>'; - } - return word; - }).join(""); - }, - wordcount: function(value){ - return dojox.dtl.text.pySplit(value).length; - }, - wordwrap: function(value, arg){ - arg = parseInt(arg); - // summary: Wraps words at specified line length - var output = []; - var parts = value.split(/ /g); - if(parts.length){ - var word = parts.shift(); - output.push(word); - var pos = word.length - word.lastIndexOf("\n") - 1; - for(var i = 0; i < parts.length; i++){ - word = parts[i]; - if(word.indexOf("\n") != -1){ - var lines = word.split(/\n/g); - }else{ - var lines = [word]; - } - pos += lines[0].length + 1; - if(arg && pos > arg){ - output.push("\n"); - pos = lines[lines.length - 1].length; - }else{ - output.push(" "); - if(lines.length > 1){ - pos = lines[lines.length - 1].length; - } - } - output.push(word); - } - } - return output.join(""); - } -}); - -} |