|
1138 | 1138 | // types. If the type is "any" then no type checking
|
1139 | 1139 | // occurs on the argument. Variadic is optional
|
1140 | 1140 | // and if not provided is assumed to be false.
|
1141 |
| - abs: {func: this.functionAbs, signature: [{types: [TYPE_NUMBER]}]}, |
1142 |
| - avg: {func: this.functionAvg, signature: [{types: [TYPE_ARRAY_NUMBER]}]}, |
1143 |
| - ceil: {func: this.functionCeil, signature: [{types: [TYPE_NUMBER]}]}, |
| 1141 | + abs: {func: this.__functionAbs, signature: [{types: [TYPE_NUMBER]}]}, |
| 1142 | + avg: {func: this.__functionAvg, signature: [{types: [TYPE_ARRAY_NUMBER]}]}, |
| 1143 | + ceil: {func: this.__functionCeil, signature: [{types: [TYPE_NUMBER]}]}, |
1144 | 1144 | contains: {
|
1145 |
| - func: this.functionContains, |
| 1145 | + func: this.__functionContains, |
1146 | 1146 | signature: [{types: [TYPE_STRING, TYPE_ARRAY]},
|
1147 | 1147 | {types: [TYPE_ANY]}]},
|
1148 | 1148 | "ends_with": {
|
1149 |
| - func: this.functionEndsWith, |
| 1149 | + func: this.__functionEndsWith, |
1150 | 1150 | signature: [{types: [TYPE_STRING]}, {types: [TYPE_STRING]}]},
|
1151 | 1151 | floor: {func: this.functionFloor, signature: [{types: [TYPE_NUMBER]}]},
|
1152 | 1152 | length: {
|
1153 |
| - func: this.functionLength, |
| 1153 | + func: this.__functionLength, |
1154 | 1154 | signature: [{types: [TYPE_STRING, TYPE_ARRAY, TYPE_OBJECT]}]},
|
1155 | 1155 | map: {
|
1156 |
| - func: this.functionMap, |
| 1156 | + func: this.__functionMap, |
1157 | 1157 | signature: [{types: [TYPE_EXPREF]}, {types: [TYPE_ARRAY]}]},
|
1158 | 1158 | max: {
|
1159 |
| - func: this.functionMax, |
| 1159 | + func: this.__functionMax, |
1160 | 1160 | signature: [{types: [TYPE_ARRAY_NUMBER, TYPE_ARRAY_STRING]}]},
|
1161 | 1161 | "merge": {
|
1162 |
| - func: this.functionMerge, |
| 1162 | + func: this.__functionMerge, |
1163 | 1163 | signature: [{types: [TYPE_OBJECT], variadic: true}]
|
1164 | 1164 | },
|
1165 | 1165 | "max_by": {
|
1166 |
| - func: this.functionMaxBy, |
| 1166 | + func: this.__functionMaxBy, |
1167 | 1167 | signature: [{types: [TYPE_ARRAY]}, {types: [TYPE_EXPREF]}]
|
1168 | 1168 | },
|
1169 |
| - sum: {func: this.functionSum, signature: [{types: [TYPE_ARRAY_NUMBER]}]}, |
| 1169 | + sum: {func: this.__functionSum, signature: [{types: [TYPE_ARRAY_NUMBER]}]}, |
1170 | 1170 | "starts_with": {
|
1171 |
| - func: this.functionStartsWith, |
| 1171 | + func: this.__functionStartsWith, |
1172 | 1172 | signature: [{types: [TYPE_STRING]}, {types: [TYPE_STRING]}]},
|
1173 | 1173 | min: {
|
1174 |
| - func: this.functionMin, |
| 1174 | + func: this.__functionMin, |
1175 | 1175 | signature: [{types: [TYPE_ARRAY_NUMBER, TYPE_ARRAY_STRING]}]},
|
1176 | 1176 | "min_by": {
|
1177 |
| - func: this.functionMinBy, |
| 1177 | + func: this.__functionMinBy, |
1178 | 1178 | signature: [{types: [TYPE_ARRAY]}, {types: [TYPE_EXPREF]}]
|
1179 | 1179 | },
|
1180 |
| - type: {func: this.functionType, signature: [{types: [TYPE_ANY]}]}, |
1181 |
| - keys: {func: this.functionKeys, signature: [{types: [TYPE_OBJECT]}]}, |
1182 |
| - values: {func: this.functionValues, signature: [{types: [TYPE_OBJECT]}]}, |
1183 |
| - sort: {func: this.functionSort, signature: [{types: [TYPE_ARRAY_STRING, TYPE_ARRAY_NUMBER]}]}, |
| 1180 | + type: {func: this.__functionType, signature: [{types: [TYPE_ANY]}]}, |
| 1181 | + keys: {func: this.__functionKeys, signature: [{types: [TYPE_OBJECT]}]}, |
| 1182 | + values: {func: this.__functionValues, signature: [{types: [TYPE_OBJECT]}]}, |
| 1183 | + sort: {func: this.__functionSort, signature: [{types: [TYPE_ARRAY_STRING, TYPE_ARRAY_NUMBER]}]}, |
1184 | 1184 | "sort_by": {
|
1185 |
| - func: this.functionSortBy, |
| 1185 | + func: this.__functionSortBy, |
1186 | 1186 | signature: [{types: [TYPE_ARRAY]}, {types: [TYPE_EXPREF]}]
|
1187 | 1187 | },
|
1188 | 1188 | join: {
|
1189 |
| - func: this.functionJoin, |
| 1189 | + func: this.__functionJoin, |
1190 | 1190 | signature: [
|
1191 | 1191 | {types: [TYPE_STRING]},
|
1192 | 1192 | {types: [TYPE_ARRAY_STRING]}
|
1193 | 1193 | ]
|
1194 | 1194 | },
|
1195 | 1195 | reverse: {
|
1196 |
| - func: this.functionReverse, |
| 1196 | + func: this.__functionReverse, |
1197 | 1197 | signature: [{types: [TYPE_STRING, TYPE_ARRAY]}]},
|
1198 |
| - "to_array": {func: this.functionToArray, signature: [{types: [TYPE_ANY]}]}, |
1199 |
| - "to_string": {func: this.functionToString, signature: [{types: [TYPE_ANY]}]}, |
1200 |
| - "to_number": {func: this.functionToNumber, signature: [{types: [TYPE_ANY]}]}, |
| 1198 | + "to_array": {func: this.__functionToArray, signature: [{types: [TYPE_ANY]}]}, |
| 1199 | + "to_string": {func: this.__functionToString, signature: [{types: [TYPE_ANY]}]}, |
| 1200 | + "to_number": {func: this.__functionToNumber, signature: [{types: [TYPE_ANY]}]}, |
1201 | 1201 | "not_null": {
|
1202 |
| - func: this.functionNotNull, |
| 1202 | + func: this.__functionNotNull, |
1203 | 1203 | signature: [{types: [TYPE_ANY], variadic: true}]
|
1204 | 1204 | }
|
1205 | 1205 | };
|
|
1211 | 1211 | if (functionEntry === undefined) {
|
1212 | 1212 | throw new Error("Unknown function: " + name + "()");
|
1213 | 1213 | }
|
1214 |
| - this.validateArgs(name, resolvedArgs, functionEntry.signature); |
| 1214 | + this.__validateArgs(name, resolvedArgs, functionEntry.signature); |
1215 | 1215 | return functionEntry.func.call(this, resolvedArgs);
|
1216 | 1216 | },
|
1217 | 1217 |
|
1218 |
| - validateArgs: function(name, args, signature) { |
| 1218 | + __validateArgs: function(name, args, signature) { |
1219 | 1219 | // Validating the args requires validating
|
1220 | 1220 | // the correct arity and the correct type of each arg.
|
1221 | 1221 | // If the last argument is declared as variadic, then we need
|
|
1243 | 1243 | currentSpec = signature[i].types;
|
1244 | 1244 | actualType = this.getTypeName(args[i]);
|
1245 | 1245 | for (var j = 0; j < currentSpec.length; j++) {
|
1246 |
| - if (this.typeMatches(actualType, currentSpec[j], args[i])) { |
| 1246 | + if (this.__typeMatches(actualType, currentSpec[j], args[i])) { |
1247 | 1247 | typeMatched = true;
|
1248 | 1248 | break;
|
1249 | 1249 | }
|
|
1258 | 1258 | }
|
1259 | 1259 | },
|
1260 | 1260 |
|
1261 |
| - typeMatches: function(actual, expected, argValue) { |
| 1261 | + __typeMatches: function(actual, expected, argValue) { |
1262 | 1262 | if (expected === TYPE_ANY) {
|
1263 | 1263 | return true;
|
1264 | 1264 | }
|
|
1281 | 1281 | subtype = TYPE_STRING;
|
1282 | 1282 | }
|
1283 | 1283 | for (var i = 0; i < argValue.length; i++) {
|
1284 |
| - if (!this.typeMatches( |
| 1284 | + if (!this.__typeMatches( |
1285 | 1285 | this.getTypeName(argValue[i]), subtype,
|
1286 | 1286 | argValue[i])) {
|
1287 | 1287 | return false;
|
|
1316 | 1316 | }
|
1317 | 1317 | },
|
1318 | 1318 |
|
1319 |
| - functionStartsWith: function(resolvedArgs) { |
| 1319 | + __functionStartsWith: function(resolvedArgs) { |
1320 | 1320 | return resolvedArgs[0].lastIndexOf(resolvedArgs[1]) === 0;
|
1321 | 1321 | },
|
1322 | 1322 |
|
1323 |
| - functionEndsWith: function(resolvedArgs) { |
| 1323 | + __functionEndsWith: function(resolvedArgs) { |
1324 | 1324 | var searchStr = resolvedArgs[0];
|
1325 | 1325 | var suffix = resolvedArgs[1];
|
1326 | 1326 | return searchStr.indexOf(suffix, searchStr.length - suffix.length) !== -1;
|
1327 | 1327 | },
|
1328 | 1328 |
|
1329 |
| - functionReverse: function(resolvedArgs) { |
| 1329 | + __functionReverse: function(resolvedArgs) { |
1330 | 1330 | var typeName = this.getTypeName(resolvedArgs[0]);
|
1331 | 1331 | if (typeName === TYPE_STRING) {
|
1332 | 1332 | var originalStr = resolvedArgs[0];
|
|
1342 | 1342 | }
|
1343 | 1343 | },
|
1344 | 1344 |
|
1345 |
| - functionAbs: function(resolvedArgs) { |
| 1345 | + __functionAbs: function(resolvedArgs) { |
1346 | 1346 | return Math.abs(resolvedArgs[0]);
|
1347 | 1347 | },
|
1348 | 1348 |
|
1349 |
| - functionCeil: function(resolvedArgs) { |
| 1349 | + __functionCeil: function(resolvedArgs) { |
1350 | 1350 | return Math.ceil(resolvedArgs[0]);
|
1351 | 1351 | },
|
1352 | 1352 |
|
1353 |
| - functionAvg: function(resolvedArgs) { |
| 1353 | + __functionAvg: function(resolvedArgs) { |
1354 | 1354 | var sum = 0;
|
1355 | 1355 | var inputArray = resolvedArgs[0];
|
1356 | 1356 | for (var i = 0; i < inputArray.length; i++) {
|
|
1359 | 1359 | return sum / inputArray.length;
|
1360 | 1360 | },
|
1361 | 1361 |
|
1362 |
| - functionContains: function(resolvedArgs) { |
| 1362 | + __functionContains: function(resolvedArgs) { |
1363 | 1363 | return resolvedArgs[0].indexOf(resolvedArgs[1]) >= 0;
|
1364 | 1364 | },
|
1365 | 1365 |
|
1366 | 1366 | functionFloor: function(resolvedArgs) {
|
1367 | 1367 | return Math.floor(resolvedArgs[0]);
|
1368 | 1368 | },
|
1369 | 1369 |
|
1370 |
| - functionLength: function(resolvedArgs) { |
| 1370 | + __functionLength: function(resolvedArgs) { |
1371 | 1371 | if (!isObject(resolvedArgs[0])) {
|
1372 | 1372 | return resolvedArgs[0].length;
|
1373 | 1373 | } else {
|
|
1377 | 1377 | }
|
1378 | 1378 | },
|
1379 | 1379 |
|
1380 |
| - functionMap: function(resolvedArgs) { |
| 1380 | + __functionMap: function(resolvedArgs) { |
1381 | 1381 | var mapped = [];
|
1382 | 1382 | var interpreter = this.interpreter;
|
1383 | 1383 | var exprefNode = resolvedArgs[0];
|
|
1388 | 1388 | return mapped;
|
1389 | 1389 | },
|
1390 | 1390 |
|
1391 |
| - functionMerge: function(resolvedArgs) { |
| 1391 | + __functionMerge: function(resolvedArgs) { |
1392 | 1392 | var merged = {};
|
1393 | 1393 | for (var i = 0; i < resolvedArgs.length; i++) {
|
1394 | 1394 | var current = resolvedArgs[i];
|
|
1399 | 1399 | return merged;
|
1400 | 1400 | },
|
1401 | 1401 |
|
1402 |
| - functionMax: function(resolvedArgs) { |
| 1402 | + __functionMax: function(resolvedArgs) { |
1403 | 1403 | if (resolvedArgs[0].length > 0) {
|
1404 | 1404 | var typeName = this.getTypeName(resolvedArgs[0][0]);
|
1405 | 1405 | if (typeName === TYPE_NUMBER) {
|
|
1419 | 1419 | }
|
1420 | 1420 | },
|
1421 | 1421 |
|
1422 |
| - functionMin: function(resolvedArgs) { |
| 1422 | + __functionMin: function(resolvedArgs) { |
1423 | 1423 | if (resolvedArgs[0].length > 0) {
|
1424 | 1424 | var typeName = this.getTypeName(resolvedArgs[0][0]);
|
1425 | 1425 | if (typeName === TYPE_NUMBER) {
|
|
1439 | 1439 | }
|
1440 | 1440 | },
|
1441 | 1441 |
|
1442 |
| - functionSum: function(resolvedArgs) { |
| 1442 | + __functionSum: function(resolvedArgs) { |
1443 | 1443 | var sum = 0;
|
1444 | 1444 | var listToSum = resolvedArgs[0];
|
1445 | 1445 | for (var i = 0; i < listToSum.length; i++) {
|
|
1448 | 1448 | return sum;
|
1449 | 1449 | },
|
1450 | 1450 |
|
1451 |
| - functionType: function(resolvedArgs) { |
| 1451 | + __functionType: function(resolvedArgs) { |
1452 | 1452 | switch (this.getTypeName(resolvedArgs[0])) {
|
1453 | 1453 | case TYPE_NUMBER:
|
1454 | 1454 | return "number";
|
|
1467 | 1467 | }
|
1468 | 1468 | },
|
1469 | 1469 |
|
1470 |
| - functionKeys: function(resolvedArgs) { |
| 1470 | + __functionKeys: function(resolvedArgs) { |
1471 | 1471 | return Object.keys(resolvedArgs[0]);
|
1472 | 1472 | },
|
1473 | 1473 |
|
1474 |
| - functionValues: function(resolvedArgs) { |
| 1474 | + __functionValues: function(resolvedArgs) { |
1475 | 1475 | var obj = resolvedArgs[0];
|
1476 | 1476 | var keys = Object.keys(obj);
|
1477 | 1477 | var values = [];
|
|
1481 | 1481 | return values;
|
1482 | 1482 | },
|
1483 | 1483 |
|
1484 |
| - functionJoin: function(resolvedArgs) { |
| 1484 | + __functionJoin: function(resolvedArgs) { |
1485 | 1485 | var joinChar = resolvedArgs[0];
|
1486 | 1486 | var listJoin = resolvedArgs[1];
|
1487 | 1487 | return listJoin.join(joinChar);
|
1488 | 1488 | },
|
1489 | 1489 |
|
1490 |
| - functionToArray: function(resolvedArgs) { |
| 1490 | + __functionToArray: function(resolvedArgs) { |
1491 | 1491 | if (this.getTypeName(resolvedArgs[0]) === TYPE_ARRAY) {
|
1492 | 1492 | return resolvedArgs[0];
|
1493 | 1493 | } else {
|
1494 | 1494 | return [resolvedArgs[0]];
|
1495 | 1495 | }
|
1496 | 1496 | },
|
1497 | 1497 |
|
1498 |
| - functionToString: function(resolvedArgs) { |
| 1498 | + __functionToString: function(resolvedArgs) { |
1499 | 1499 | if (this.getTypeName(resolvedArgs[0]) === TYPE_STRING) {
|
1500 | 1500 | return resolvedArgs[0];
|
1501 | 1501 | } else {
|
1502 | 1502 | return JSON.stringify(resolvedArgs[0]);
|
1503 | 1503 | }
|
1504 | 1504 | },
|
1505 | 1505 |
|
1506 |
| - functionToNumber: function(resolvedArgs) { |
| 1506 | + __functionToNumber: function(resolvedArgs) { |
1507 | 1507 | var typeName = this.getTypeName(resolvedArgs[0]);
|
1508 | 1508 | var convertedValue;
|
1509 | 1509 | if (typeName === TYPE_NUMBER) {
|
|
1517 | 1517 | return null;
|
1518 | 1518 | },
|
1519 | 1519 |
|
1520 |
| - functionNotNull: function(resolvedArgs) { |
| 1520 | + __functionNotNull: function(resolvedArgs) { |
1521 | 1521 | for (var i = 0; i < resolvedArgs.length; i++) {
|
1522 | 1522 | if (this.getTypeName(resolvedArgs[i]) !== TYPE_NULL) {
|
1523 | 1523 | return resolvedArgs[i];
|
|
1526 | 1526 | return null;
|
1527 | 1527 | },
|
1528 | 1528 |
|
1529 |
| - functionSort: function(resolvedArgs) { |
| 1529 | + __functionSort: function(resolvedArgs) { |
1530 | 1530 | var sortedArray = resolvedArgs[0].slice(0);
|
1531 | 1531 | sortedArray.sort();
|
1532 | 1532 | return sortedArray;
|
1533 | 1533 | },
|
1534 | 1534 |
|
1535 |
| - functionSortBy: function(resolvedArgs) { |
| 1535 | + __functionSortBy: function(resolvedArgs) { |
1536 | 1536 | var sortedArray = resolvedArgs[0].slice(0);
|
1537 | 1537 | if (sortedArray.length === 0) {
|
1538 | 1538 | return sortedArray;
|
|
1586 | 1586 | return sortedArray;
|
1587 | 1587 | },
|
1588 | 1588 |
|
1589 |
| - functionMaxBy: function(resolvedArgs) { |
| 1589 | + __functionMaxBy: function(resolvedArgs) { |
1590 | 1590 | var exprefNode = resolvedArgs[1];
|
1591 | 1591 | var resolvedArray = resolvedArgs[0];
|
1592 | 1592 | var keyFunction = this.createKeyFunction(exprefNode, [TYPE_NUMBER, TYPE_STRING]);
|
|
1603 | 1603 | return maxRecord;
|
1604 | 1604 | },
|
1605 | 1605 |
|
1606 |
| - functionMinBy: function(resolvedArgs) { |
| 1606 | + __functionMinBy: function(resolvedArgs) { |
1607 | 1607 | var exprefNode = resolvedArgs[1];
|
1608 | 1608 | var resolvedArray = resolvedArgs[0];
|
1609 | 1609 | var keyFunction = this.createKeyFunction(exprefNode, [TYPE_NUMBER, TYPE_STRING]);
|
|
0 commit comments