-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathangular-interpolate.min.js
2 lines (2 loc) · 1.83 KB
/
angular-interpolate.min.js
1
2
"use strict";angular.module("angular-interpolate",[]).provider("Interpolate",function(){function interpolateRecurse(line,properties,index,open,close){var start=line.indexOf(open,index);if(start<0)return line;var end=line.indexOf(close,start+open.length);if(end<0)throw'ParseException: {\nline: "'+line+'",\nstart: '+start+open.length+",\nproperties: "+JSON.stringify(properties)+"\n}";var key=line.substring(start+open.length,end),value=properties[key],interpolated=interpolateRecurse(line,properties,end+close.length,open,close);return value?interpolated.substring(0,start)+value+interpolated.substring(end+close.length):interpolated}function interpolateLine(line,properties,open,close){open||(open="{{"),close||(close="}}");var max=Object.keys(properties).length;max*=max;for(var i=0;;){var interpolated=interpolateRecurse(line,properties,0,open,close);if(line===interpolated)return line;if(++i==max){if(line!==interpolated)throw"Loop detected";return interpolated}line=interpolated}}function interpolateString(string){return function(properties,open,close){if("string"!=typeof string||!properties||0===Object.keys(properties).length)return string;for(var lines=string.split(/(\r\n)|(\n)|(\r)/),interpolated="",i=0;i<lines.length;i++)interpolated+="\n"+interpolateLine(lines[i],properties,open,close);return 0==interpolated.length?"":interpolated.substring(1)}}function interpolateObject(object){return function(open,close){for(var property in object)object.hasOwnProperty(property)&&(object[property]="object"!=typeof object[property]?interpolateString(object[property])(object,open,close):interpolateObject(object[property])(open,close));return object}}this.$get=function(){return function(stringOrObject){return"object"!=typeof stringOrObject?interpolateString(stringOrObject):interpolateObject(stringOrObject)}}});
//# sourceMappingURL=angular-interpolate.min.js.map