From 2637d4e90c8a43436d21a4b9e790b00ae461c438 Mon Sep 17 00:00:00 2001 From: Misko Hevery Date: Mon, 12 Apr 2010 14:28:15 -0700 Subject: removed Meta and allowed binding of HTML --- src/filters.js | 92 ++++++++++++++++++++++------------------------------------ 1 file changed, 35 insertions(+), 57 deletions(-) (limited to 'src/filters.js') diff --git a/src/filters.js b/src/filters.js index 0259f69c..d0fc2ae7 100644 --- a/src/filters.js +++ b/src/filters.js @@ -1,25 +1,3 @@ -angularFilter.Meta = function(obj){ - if (obj) { - for ( var key in obj) { - this[key] = obj[key]; - } - } -}; -angularFilter.Meta.get = function(obj, attr){ - attr = attr || 'text'; - switch(typeof obj) { - case "string": - return attr == "text" ? obj : undefined; - case "object": - if (obj && typeof obj[attr] !== "undefined") { - return obj[attr]; - } - return undefined; - default: - return obj; - } -}; - var angularFilterGoogleChartApi; foreach({ @@ -92,31 +70,33 @@ foreach({ if (!returnValue && regexp.test(tNo)) { var text = carrier.name + ": " + trackingNo; var url = carrier.url + trackingNo; - returnValue = new angularFilter.Meta({ - text:text, - url:url, - html: '' + text + '', - trackingNo:trackingNo}); + returnValue = jqLite(''); + returnValue.text(text); + returnValue.attr('href', url); } }); }); if (returnValue) return returnValue; else if (trackingNo) - return noMatch || new angularFilter.Meta({text:trackingNo + " is not recognized"}); + return noMatch || trackingNo + " is not recognized"; else return null; };})(), 'link': function(obj, title) { - var text = title || angularFilter.Meta.get(obj); - var url = angularFilter.Meta.get(obj, "url") || angularFilter.Meta.get(obj); - if (url) { - if (angular.validator.email(url) === null) { - url = "mailto:" + url; + if (obj) { + var text = title || obj.text || obj; + var url = obj.url || obj; + if (url) { + if (angular.validator.email(url) === null) { + url = "mailto:" + url; + } + var a = jqLite(''); + a.attr('href', url); + a.text(text); + return a; } - var html = '' + text + ''; - return new angularFilter.Meta({text:text, url:url, html:html}); } return obj; }, @@ -143,31 +123,27 @@ foreach({ 'image': function(obj, width, height) { if (obj && obj.url) { - var style = ""; + var style = "", img = jqLite(''); if (width) { - style = ' style="max-width: ' + width + - 'px; max-height: ' + (height || width) + 'px;"'; + img.css('max-width', width + 'px'); + img.css('max-height', (height || width) + 'px'); } - return new angularFilter.Meta({url:obj.url, text:obj.url, - html:''}); + img.attr('src', obj.url); + return img; } return null; }, - 'lowercase': function (obj) { - var text = angularFilter.Meta.get(obj); - return text ? ("" + text).toLowerCase() : text; - }, + 'lowercase': lowercase, - 'uppercase': function (obj) { - var text = angularFilter.Meta.get(obj); - return text ? ("" + text).toUpperCase() : text; - }, + 'uppercase': uppercase, 'linecount': function (obj) { - var text = angularFilter.Meta.get(obj); - if (text==='' || !text) return 1; - return text.split(/\n|\f/).length; + if (isString(obj)) { + if (obj==='') return 1; + return obj.split(/\n|\f/).length; + } + return 1; }, 'if': function (result, expression) { @@ -236,8 +212,9 @@ foreach({ 'encode': function(params, width, height) { width = width || 200; height = height || width; - var url = "http://chart.apis.google.com/chart?"; - var urlParam = []; + var url = "http://chart.apis.google.com/chart?", + urlParam = [], + img = jqLite(''); params['chs'] = width + "x" + height; foreach(params, function(value, key){ if (value) { @@ -246,8 +223,9 @@ foreach({ }); urlParam.sort(); url += urlParam.join("&"); - return new angularFilter.Meta({url:url, - html:''}); + img.attr('src', url); + img.css({width: width + 'px', height: height + 'px'}); + return img; } } ), @@ -291,7 +269,7 @@ foreach({ }, 'html': function(html){ - return new angularFilter.Meta({html:html}); + return jqLite(html); }, 'linky': function(text){ @@ -313,7 +291,7 @@ foreach({ raw = raw.substring(i + url.length); } html.push(escapeHtml(raw)); - return new angularFilter.Meta({text:text, html:html.join('')}); + return jqLite(html.join('')); } }, function(v,k){angularFilter[k] = v;}); -- cgit v1.2.3