From 492658ca7f8dc36f744e238b7eabfee5e6498a54 Mon Sep 17 00:00:00 2001 From: Kevin van Zonneveld Date: Fri, 17 Jan 2014 17:19:25 +0100 Subject: [PATCH] Whitespace --- functions/array/array_merge.js | 2 +- functions/datetime/date_parse.js | 4 +- functions/datetime/strtotime.js | 438 +++++++++++++++--------------- functions/filesystem/basename.js | 8 +- functions/strings/similar_text.js | 2 +- index.js | 2 +- 6 files changed, 228 insertions(+), 228 deletions(-) diff --git a/functions/array/array_merge.js b/functions/array/array_merge.js index a20da27aa5..0ea447a2c4 100644 --- a/functions/array/array_merge.js +++ b/functions/array/array_merge.js @@ -10,7 +10,7 @@ function array_merge() { // * returns 1: {"color": "green", 0: 2, 1: 4, 2: "a", 3: "b", "shape": "trapezoid", 4: 4} // * example 2: arr1 = [] // * example 2: arr2 = {1: "data"} - // * example 2: array_merge(arr1, arr2) + // * example 2: array_merge(arr1, arr2) // * returns 2: {0: "data"} var args = Array.prototype.slice.call(arguments), argl = args.length, diff --git a/functions/datetime/date_parse.js b/functions/datetime/date_parse.js index 70f46f9121..c6c40f774d 100644 --- a/functions/datetime/date_parse.js +++ b/functions/datetime/date_parse.js @@ -10,8 +10,8 @@ function date_parse(date) { // END REDUNDANT var ts, - warningsOffset = this.php_js.warnings ? this.php_js.warnings.length : null, - errorsOffset = this.php_js.errors ? this.php_js.errors.length : null; + warningsOffset = this.php_js.warnings ? this.php_js.warnings.length : null, + errorsOffset = this.php_js.errors ? this.php_js.errors.length : null; try { this.php_js.date_parse_state = true; // Allow strtotime to return a decimal (which it normally does not) diff --git a/functions/datetime/strtotime.js b/functions/datetime/strtotime.js index a85f4d2eb0..486644412a 100644 --- a/functions/datetime/strtotime.js +++ b/functions/datetime/strtotime.js @@ -1,248 +1,248 @@ -function strtotime (text, now) { - // Convert string representation of date and time to a timestamp - // - // version: 1109.2016 - // discuss at: http://phpjs.org/functions/strtotime - // + original by: Caio Ariede (http://caioariede.com) - // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) - // + input by: David - // + improved by: Caio Ariede (http://caioariede.com) - // + bugfixed by: Wagner B. Soares - // + bugfixed by: Artur Tchernychev - // + improved by: A. Matías Quezada (http://amatiasq.com) - // + improved by: preuter - // + improved by: Brett Zamir (http://brett-zamir.me) - // + improved by: Mirko Faber - // % note 1: Examples all have a fixed timestamp to prevent tests to fail because of variable time(zones) - // * example 1: strtotime('+1 day', 1129633200); - // * returns 1: 1129719600 - // * example 2: strtotime('+1 week 2 days 4 hours 2 seconds', 1129633200); - // * returns 2: 1130425202 - // * example 3: strtotime('last month', 1129633200); - // * returns 3: 1127041200 - // * example 4: strtotime('2009-05-04 08:30:00 GMT'); - // * returns 4: 1241425800 - var parsed, match, today, year, date, days, ranges, len, times, regex, i, fail = false; - - if (!text) { - return fail; - } - - // Unecessary spaces - text = text.replace(/^\s+|\s+$/g, '') +function strtotime(text, now) { + // Convert string representation of date and time to a timestamp + // + // version: 1109.2016 + // discuss at: http://phpjs.org/functions/strtotime + // + original by: Caio Ariede (http://caioariede.com) + // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) + // + input by: David + // + improved by: Caio Ariede (http://caioariede.com) + // + bugfixed by: Wagner B. Soares + // + bugfixed by: Artur Tchernychev + // + improved by: A. Matías Quezada (http://amatiasq.com) + // + improved by: preuter + // + improved by: Brett Zamir (http://brett-zamir.me) + // + improved by: Mirko Faber + // % note 1: Examples all have a fixed timestamp to prevent tests to fail because of variable time(zones) + // * example 1: strtotime('+1 day', 1129633200); + // * returns 1: 1129719600 + // * example 2: strtotime('+1 week 2 days 4 hours 2 seconds', 1129633200); + // * returns 2: 1130425202 + // * example 3: strtotime('last month', 1129633200); + // * returns 3: 1127041200 + // * example 4: strtotime('2009-05-04 08:30:00 GMT'); + // * returns 4: 1241425800 + var parsed, match, today, year, date, days, ranges, len, times, regex, i, fail = false; + + if (!text) { + return fail; + } + + // Unecessary spaces + text = text.replace(/^\s+|\s+$/g, '') .replace(/\s{2,}/g, ' ') .replace(/[\t\r\n]/g, '') .toLowerCase(); - // in contrast to php, js Date.parse function interprets: - // dates given as yyyy-mm-dd as in timezone: UTC, - // dates with "." or "-" as MDY instead of DMY - // dates with two-digit years differently - // etc...etc... - // ...therefore we manually parse lots of common date formats - match = text.match(/^(\d{1,4})([\-\.\/\:])(\d{1,2})([\-\.\/\:])(\d{1,4})(?:\s(\d{1,2}):(\d{2})?:?(\d{2})?)?(?:\s([A-Z]+)?)?$/); - - if (match && match[2] === match[4]) { - if (match[1] > 1901) { - switch (match[2]) { - case '-': { // YYYY-M-D - if (match[3] > 12 || match[5] > 31) { - return fail; - } - - return new Date(match[1], parseInt(match[3], 10) - 1, match[5], - match[6] || 0, match[7] || 0, match[8] || 0, match[9] || 0) / 1000; - } - case '.': { // YYYY.M.D is not parsed by strtotime() - return fail; - } - case '/': { // YYYY/M/D - if (match[3] > 12 || match[5] > 31) { - return fail; - } - - return new Date(match[1], parseInt(match[3], 10) - 1, match[5], - match[6] || 0, match[7] || 0, match[8] || 0, match[9] || 0) / 1000; - } - } - } else if (match[5] > 1901) { - switch (match[2]) { - case '-': { // D-M-YYYY - if (match[3] > 12 || match[1] > 31) { - return fail; - } - - return new Date(match[5], parseInt(match[3], 10) - 1, match[1], - match[6] || 0, match[7] || 0, match[8] || 0, match[9] || 0) / 1000; - } - case '.': { // D.M.YYYY - if (match[3] > 12 || match[1] > 31) { - return fail; - } - - return new Date(match[5], parseInt(match[3], 10) - 1, match[1], - match[6] || 0, match[7] || 0, match[8] || 0, match[9] || 0) / 1000; - } - case '/': { // M/D/YYYY - if (match[1] > 12 || match[3] > 31) { - return fail; - } - - return new Date(match[5], parseInt(match[1], 10) - 1, match[3], - match[6] || 0, match[7] || 0, match[8] || 0, match[9] || 0) / 1000; - } - } + // in contrast to php, js Date.parse function interprets: + // dates given as yyyy-mm-dd as in timezone: UTC, + // dates with "." or "-" as MDY instead of DMY + // dates with two-digit years differently + // etc...etc... + // ...therefore we manually parse lots of common date formats + match = text.match(/^(\d{1,4})([\-\.\/\:])(\d{1,2})([\-\.\/\:])(\d{1,4})(?:\s(\d{1,2}):(\d{2})?:?(\d{2})?)?(?:\s([A-Z]+)?)?$/); + + if (match && match[2] === match[4]) { + if (match[1] > 1901) { + switch (match[2]) { + case '-': { // YYYY-M-D + if (match[3] > 12 || match[5] > 31) { + return fail; + } + + return new Date(match[1], parseInt(match[3], 10) - 1, match[5], + match[6] || 0, match[7] || 0, match[8] || 0, match[9] || 0) / 1000; } - else { - switch (match[2]) { - case '-': { // YY-M-D - if (match[3] > 12 || match[5] > 31 || (match[1] < 70 && match[1] > 38)) { - return fail; - } - - year = match[1] >= 0 && match[1] <= 38 ? +match[1] + 2000 : match[1]; - return new Date(year, parseInt(match[3], 10) - 1, match[5], - match[6] || 0, match[7] || 0, match[8] || 0, match[9] || 0) / 1000; - } - case '.': { // D.M.YY or H.MM.SS - if (match[5] >= 70) { // D.M.YY - if (match[3]>12 || match[1]>31) { - return fail; - } - - return new Date(match[5], parseInt(match[3], 10) - 1, match[1], - match[6] || 0, match[7] || 0, match[8] || 0, match[9] || 0) / 1000; - } - if (match[5] < 60 && !match[6]) { // H.MM.SS - if (match[1] > 23 || match[3] > 59) { - return fail; - } - - today = new Date(); - return new Date(today.getFullYear(), today.getMonth(), today.getDate(), - match[1] || 0, match[3] || 0, match[5] || 0, match[9] || 0) / 1000; - } - - return fail; // invalid format, cannot be parsed - } - case '/': { // M/D/YY - if (match[1] > 12 || match[3] > 31 || (match[5] < 70 && match[5] > 38)) { - return fail; - } - - year = match[5] >= 0 && match[5] <= 38 ? +match[5] + 2000 : match[5]; - return new Date(year, parseInt(match[1], 10) - 1, match[3], - match[6] || 0, match[7] || 0, match[8] || 0, match[9] || 0) / 1000; - } - case ':': { // HH:MM:SS - if (match[1] > 23 || match[3] > 59 || match[5] > 59) { - return fail; - } - - today = new Date(); - return new Date(today.getFullYear(), today.getMonth(), today.getDate(), - match[1] || 0, match[3] || 0, match[5] || 0) / 1000; - } - } + case '.': { // YYYY.M.D is not parsed by strtotime() + return fail; } + case '/': { // YYYY/M/D + if (match[3] > 12 || match[5] > 31) { + return fail; + } + + return new Date(match[1], parseInt(match[3], 10) - 1, match[5], + match[6] || 0, match[7] || 0, match[8] || 0, match[9] || 0) / 1000; + } + } + } else if (match[5] > 1901) { + switch (match[2]) { + case '-': { // D-M-YYYY + if (match[3] > 12 || match[1] > 31) { + return fail; + } + + return new Date(match[5], parseInt(match[3], 10) - 1, match[1], + match[6] || 0, match[7] || 0, match[8] || 0, match[9] || 0) / 1000; + } + case '.': { // D.M.YYYY + if (match[3] > 12 || match[1] > 31) { + return fail; + } + + return new Date(match[5], parseInt(match[3], 10) - 1, match[1], + match[6] || 0, match[7] || 0, match[8] || 0, match[9] || 0) / 1000; + } + case '/': { // M/D/YYYY + if (match[1] > 12 || match[3] > 31) { + return fail; + } + + return new Date(match[5], parseInt(match[1], 10) - 1, match[3], + match[6] || 0, match[7] || 0, match[8] || 0, match[9] || 0) / 1000; + } + } } - - - // other formats and "now" should be parsed by Date.parse() - if (text === 'now') { - return now === null || isNaN(now) ? new Date().getTime() / 1000 | 0 : now | 0; - } - if (!isNaN(parsed = Date.parse(text))) { - return parsed / 1000 | 0; - } + else { + switch (match[2]) { + case '-': { // YY-M-D + if (match[3] > 12 || match[5] > 31 || (match[1] < 70 && match[1] > 38)) { + return fail; + } - date = now ? new Date(now * 1000) : new Date(); - days = { - 'sun': 0, - 'mon': 1, - 'tue': 2, - 'wed': 3, - 'thu': 4, - 'fri': 5, - 'sat': 6 - }; - ranges = { - 'yea': 'FullYear', - 'mon': 'Month', - 'day': 'Date', - 'hou': 'Hours', - 'min': 'Minutes', - 'sec': 'Seconds' - }; - - function lastNext(type, range, modifier) { - var diff, day = days[range]; - - if (typeof day !== 'undefined') { - diff = day - date.getDay(); - - if (diff === 0) { - diff = 7 * modifier; - } - else if (diff > 0 && type === 'last') { - diff -= 7; + year = match[1] >= 0 && match[1] <= 38 ? +match[1] + 2000 : match[1]; + return new Date(year, parseInt(match[3], 10) - 1, match[5], + match[6] || 0, match[7] || 0, match[8] || 0, match[9] || 0) / 1000; + } + case '.': { // D.M.YY or H.MM.SS + if (match[5] >= 70) { // D.M.YY + if (match[3] > 12 || match[1] > 31) { + return fail; } - else if (diff < 0 && type === 'next') { - diff += 7; + + return new Date(match[5], parseInt(match[3], 10) - 1, match[1], + match[6] || 0, match[7] || 0, match[8] || 0, match[9] || 0) / 1000; + } + if (match[5] < 60 && !match[6]) { // H.MM.SS + if (match[1] > 23 || match[3] > 59) { + return fail; } - date.setDate(date.getDate() + diff); + today = new Date(); + return new Date(today.getFullYear(), today.getMonth(), today.getDate(), + match[1] || 0, match[3] || 0, match[5] || 0, match[9] || 0) / 1000; + } + + return fail; // invalid format, cannot be parsed + } + case '/': { // M/D/YY + if (match[1] > 12 || match[3] > 31 || (match[5] < 70 && match[5] > 38)) { + return fail; + } + + year = match[5] >= 0 && match[5] <= 38 ? +match[5] + 2000 : match[5]; + return new Date(year, parseInt(match[1], 10) - 1, match[3], + match[6] || 0, match[7] || 0, match[8] || 0, match[9] || 0) / 1000; } + case ':': { // HH:MM:SS + if (match[1] > 23 || match[3] > 59 || match[5] > 59) { + return fail; + } + + today = new Date(); + return new Date(today.getFullYear(), today.getMonth(), today.getDate(), + match[1] || 0, match[3] || 0, match[5] || 0) / 1000; + } + } } - function process(val) { - var splt = val.split(' '), // Todo: Reconcile this with regex using \s, taking into account browser issues with split and regexes + } + + + // other formats and "now" should be parsed by Date.parse() + if (text === 'now') { + return now === null || isNaN(now) ? new Date().getTime() / 1000 | 0 : now | 0; + } + if (!isNaN(parsed = Date.parse(text))) { + return parsed / 1000 | 0; + } + + date = now ? new Date(now * 1000) : new Date(); + days = { + 'sun': 0, + 'mon': 1, + 'tue': 2, + 'wed': 3, + 'thu': 4, + 'fri': 5, + 'sat': 6 + }; + ranges = { + 'yea': 'FullYear', + 'mon': 'Month', + 'day': 'Date', + 'hou': 'Hours', + 'min': 'Minutes', + 'sec': 'Seconds' + }; + + function lastNext(type, range, modifier) { + var diff, day = days[range]; + + if (typeof day !== 'undefined') { + diff = day - date.getDay(); + + if (diff === 0) { + diff = 7 * modifier; + } + else if (diff > 0 && type === 'last') { + diff -= 7; + } + else if (diff < 0 && type === 'next') { + diff += 7; + } + + date.setDate(date.getDate() + diff); + } + } + function process(val) { + var splt = val.split(' '), // Todo: Reconcile this with regex using \s, taking into account browser issues with split and regexes type = splt[0], range = splt[1].substring(0, 3), typeIsNumber = /\d+/.test(type), ago = splt[2] === 'ago', num = (type === 'last' ? -1 : 1) * (ago ? -1 : 1); - if (typeIsNumber) { - num *= parseInt(type, 10); - } - - if (ranges.hasOwnProperty(range) && !splt[1].match(/^mon(day|\.)?$/i)) { - return date['set' + ranges[range]](date['get' + ranges[range]]() + num); - } - - if (range === 'wee') { - return date.setDate(date.getDate() + (num * 7)); - } + if (typeIsNumber) { + num *= parseInt(type, 10); + } - if (type === 'next' || type === 'last') { - lastNext(type, range, num); - } - else if (!typeIsNumber) { - return false; - } - - return true; + if (ranges.hasOwnProperty(range) && !splt[1].match(/^mon(day|\.)?$/i)) { + return date['set' + ranges[range]](date['get' + ranges[range]]() + num); } - times = '(years?|months?|weeks?|days?|hours?|minutes?|min|seconds?|sec' + - '|sunday|sun\\.?|monday|mon\\.?|tuesday|tue\\.?|wednesday|wed\\.?' + - '|thursday|thu\\.?|friday|fri\\.?|saturday|sat\\.?)'; - regex = '([+-]?\\d+\\s' + times + '|' + '(last|next)\\s' + times + ')(\\sago)?'; + if (range === 'wee') { + return date.setDate(date.getDate() + (num * 7)); + } - match = text.match(new RegExp(regex, 'gi')); - if (!match) { - return fail; + if (type === 'next' || type === 'last') { + lastNext(type, range, num); + } + else if (!typeIsNumber) { + return false; } - for (i = 0, len = match.length; i < len; i++) { - if (!process(match[i])) { - return fail; - } + return true; + } + + times = '(years?|months?|weeks?|days?|hours?|minutes?|min|seconds?|sec' + + '|sunday|sun\\.?|monday|mon\\.?|tuesday|tue\\.?|wednesday|wed\\.?' + + '|thursday|thu\\.?|friday|fri\\.?|saturday|sat\\.?)'; + regex = '([+-]?\\d+\\s' + times + '|' + '(last|next)\\s' + times + ')(\\sago)?'; + + match = text.match(new RegExp(regex, 'gi')); + if (!match) { + return fail; + } + + for (i = 0, len = match.length; i < len; i++) { + if (!process(match[i])) { + return fail; } + } - // ECMAScript 5 only - // if (!match.every(process)) - // return false; + // ECMAScript 5 only + // if (!match.every(process)) + // return false; - return (date.getTime() / 1000); + return (date.getTime() / 1000); } diff --git a/functions/filesystem/basename.js b/functions/filesystem/basename.js index f76d5c7b5c..567df2d0a3 100644 --- a/functions/filesystem/basename.js +++ b/functions/filesystem/basename.js @@ -14,12 +14,12 @@ function basename(path, suffix) { // * example 4: basename('/some/path_ext.ext/','.ext'); // * returns 4: 'path_ext' var b = path; - var lastChar = b.charAt(b.length-1); - - if(lastChar === "/" || lastChar === "\\") { + var lastChar = b.charAt(b.length - 1); + + if (lastChar === '/' || lastChar === '\\') { b = b.slice(0, -1); } - + b = b.replace(/^.*[\/\\]/g, ''); if (typeof suffix === 'string' && b.substr(b.length - suffix.length) == suffix) { diff --git a/functions/strings/similar_text.js b/functions/strings/similar_text.js index d98d5d06f5..325c7560d4 100644 --- a/functions/strings/similar_text.js +++ b/functions/strings/similar_text.js @@ -8,7 +8,7 @@ function similar_text(first, second, percent) { // * returns 1: 7 // * example 2: similar_text('Hello World!', null); // * returns 2: 0 - + if (first === null || second === null || typeof first === 'undefined' || typeof second === 'undefined') { return 0; } diff --git a/index.js b/index.js index 54e5fc5559..437ae95cbc 100644 --- a/index.js +++ b/index.js @@ -1,7 +1,7 @@ phpjs = require('./build/npm'); phpjs.registerGlobals = function() { - for(var key in this) { + for (var key in this) { global[key] = this[key]; } };