MCPcopy
hub / github.com/angular-ui/ui-grid / $ParseProvider

Function $ParseProvider

lib/test/angular/1.5.0/angular.js:14992–15238  ·  view source on GitHub ↗

* @ngdoc provider * @name $parseProvider * * @description * `$parseProvider` can be used for configuring the default behavior of the ng.$parse $parse * service.

()

Source from the content-addressed store, hash-verified

14990 * service.
14991 */
14992function $ParseProvider() {
14993 var cacheDefault = createMap();
14994 var cacheExpensive = createMap();
14995
14996 this.$get = ['$filter', function($filter) {
14997 var noUnsafeEval = csp().noUnsafeEval;
14998 var $parseOptions = {
14999 csp: noUnsafeEval,
15000 expensiveChecks: false
15001 },
15002 $parseOptionsExpensive = {
15003 csp: noUnsafeEval,
15004 expensiveChecks: true
15005 };
15006 var runningChecksEnabled = false;
15007
15008 $parse.$$runningExpensiveChecks = function() {
15009 return runningChecksEnabled;
15010 };
15011
15012 return $parse;
15013
15014 function $parse(exp, interceptorFn, expensiveChecks) {
15015 var parsedExpression, oneTime, cacheKey;
15016
15017 expensiveChecks = expensiveChecks || runningChecksEnabled;
15018
15019 switch (typeof exp) {
15020 case 'string':
15021 exp = exp.trim();
15022 cacheKey = exp;
15023
15024 var cache = (expensiveChecks ? cacheExpensive : cacheDefault);
15025 parsedExpression = cache[cacheKey];
15026
15027 if (!parsedExpression) {
15028 if (exp.charAt(0) === ':' && exp.charAt(1) === ':') {
15029 oneTime = true;
15030 exp = exp.substring(2);
15031 }
15032 var parseOptions = expensiveChecks ? $parseOptionsExpensive : $parseOptions;
15033 var lexer = new Lexer(parseOptions);
15034 var parser = new Parser(lexer, $filter, parseOptions);
15035 parsedExpression = parser.parse(exp);
15036 if (parsedExpression.constant) {
15037 parsedExpression.$$watchDelegate = constantWatchDelegate;
15038 } else if (oneTime) {
15039 parsedExpression.$$watchDelegate = parsedExpression.literal ?
15040 oneTimeLiteralWatchDelegate : oneTimeWatchDelegate;
15041 } else if (parsedExpression.inputs) {
15042 parsedExpression.$$watchDelegate = inputsWatchDelegate;
15043 }
15044 if (expensiveChecks) {
15045 parsedExpression = expensiveChecksInterceptor(parsedExpression);
15046 }
15047 cache[cacheKey] = parsedExpression;
15048 }
15049 return addInterceptor(parsedExpression, interceptorFn);

Callers

nothing calls this directly

Calls 2

createMapFunction · 0.70
cspFunction · 0.70

Tested by

no test coverage detected