vendor: 17,113 bytes, lines 1-490
1var DateFormat = {}; 2 3(function($) { 4 var daysInWeek = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']; 5 var shortDaysInWeek = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']; 6 var shortMonthsInYear = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 7 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; 8 var longMonthsInYear = ['January', 'February', 'March', 'April', 'May', 'June', 9 'July', 'August', 'September', 'October', 'November', 'December']; 10 var shortMonthsToNumber = { 'Jan': '01', 'Feb': '02', 'Mar': '03', 'Apr': '04', 'May': '05', 'Jun': '06', 11 'Jul': '07', 'Aug': '08', 'Sep': '09', 'Oct': '10', 'Nov': '11', 'Dec': '12' }; 12 13 var YYYYMMDD_MATCHER = /\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.?\d{0,3}[Z\-+]?(\d{2}:?\d{2})?/; 14 15 $.format = (function() { 16 function numberToLongDay(value) { 17 // 0 to Sunday 18 // 1 to Monday 19 return daysInWeek[parseInt(value, 10)] || value; 20 } 21 22 function numberToShortDay(value) { 23 // 0 to Sun 24 // 1 to Mon 25 return shortDaysInWeek[parseInt(value, 10)] || value; 26 } 27 28 function numberToShortMonth(value) { 29 // 1 to Jan 30 // 2 to Feb 31 var monthArrayIndex = parseInt(value, 10) - 1; 32 return shortMonthsInYear[monthArrayIndex] || value; 33 } 34 35 function numberToLongMonth(value) { 36 // 1 to January 37 // 2 to February 38 var monthArrayIndex = parseInt(value, 10) - 1; 39 return longMonthsInYear[monthArrayIndex] || value; 40 } 41 42 function shortMonthToNumber(value) { 43 // Jan to 01 44 // Feb to 02 45 return shortMonthsToNumber[value] || value; 46 } 47 48 function parseTime(value) { 49 // 10:54:50.546 50 // => hour: 10, minute: 54, second: 50, millis: 546 51 // 10:54:50 52 // => hour: 10, minute: 54, second: 50, millis: '' 53 var time = value, 54 hour, 55 minute, 56 second, 57 millis = '', 58 delimited, 59 timeArray; 60 61 if(time.indexOf('.') !== -1) { 62 delimited = time.split('.'); 63 // split time and milliseconds 64 time = delimited[0]; 65 millis = delimited[delimited.length - 1]; 66 } 67 68 timeArray = time.split(':'); 69 70 if(timeArray.length >= 3) { 71 hour = timeArray[0]; 72 minute = timeArray[1]; 73 // '20 GMT-0200 (BRST)'.replace(/\s.+/, '').replace(/[a-z]/gi, ''); 74 // => 20 75 // '20Z'.replace(/\s.+/, '').replace(/[a-z]/gi, ''); 76 // => 20 77 second = timeArray[2].replace(/\s.+/, '').replace(/[a-z]/gi, ''); 78 // '01:10:20 GMT-0200 (BRST)'.replace(/\s.+/, '').replace(/[a-z]/gi, ''); 79 // => 01:10:20 80 // '01:10:20Z'.replace(/\s.+/, '').replace(/[a-z]/gi, ''); 81 // => 01:10:20 82 time = time.replace(/\s.+/, '').replace(/[a-z]/gi, ''); 83 return { 84 time: time, 85 hour: hour, 86 minute: minute, 87 second: second, 88 millis: millis 89 }; 90 } 91 92 return { time : '', hour : '', minute : '', second : '', millis : '' }; 93 } 94 95 96 function padding(value, length) { 97 var paddingCount = length - String(value).length; 98 for(var i = 0; i < paddingCount; i++) { 99 value = '0' + value; 100 } 101 return value; 102 } 103 104 return { 105 106 parseDate: function(value) { 107 var values, 108 subValues; 109 110 var parsedDate = { 111 date: null, 112 year: null, 113 month: null, 114 dayOfMonth: null, 115 dayOfWeek: null, 116 time: null 117 }; 118 119 if(typeof value == 'number') { 120 return this.parseDate(new Date(value)); 121 } else if(typeof value.getFullYear == 'function') { 122 parsedDate.year = String(value.getFullYear()); 123 // d = new Date(1900, 1, 1) // 1 for Feb instead of Jan. 124 // => Thu Feb 01 1900 00:00:00 125 parsedDate.month = String(value.getMonth() + 1); 126 parsedDate.dayOfMonth = String(value.getDate()); 127 parsedDate.time = parseTime(value.toTimeString() + '.' + value.getMilliseconds()); 128 } else if(value.search(YYYYMMDD_MATCHER) != -1) { 129 /* 2009-04-19T16:11:05+02:00 || 2009-04-19T16:11:05Z */ 130 values = value.split(/[T\+-]/); 131 parsedDate.year = values[0]; 132 parsedDate.month = values[1]; 133 parsedDate.dayOfMonth = values[2]; 134 parsedDate.time = parseTime(values[3].split('.')[0]); 135 } else { 136 values = value.split(' '); 137 if(values.length === 6 && isNaN(values[5])) { 138 // values[5] == year 139 /* 140 * This change is necessary to make `Mon Apr 28 2014 05:30:00 GMT-0300` work 141 * like `case 7` 142 * otherwise it will be considered like `Wed Jan 13 10:43:41 CET 2010 143 * Fixes: https://github.com/phstc/jquery-dateFormat/issues/64 144 */ 145 values[values.length] = '()'; 146 } 147 switch (values.length) { 148 case 6: 149 /* Wed Jan 13 10:43:41 CET 2010 */ 150 parsedDate.year = values[5]; 151 parsedDate.month = shortMonthToNumber(values[1]); 152 parsedDate.dayOfMonth = values[2]; 153 parsedDate.time = parseTime(values[3]); 154 break; 155 case 2: 156 /* 2009-12-18 10:54:50.546 */ 157 subValues = values[0].split('-'); 158 parsedDate.year = subValues[0]; 159 parsedDate.month = subValues[1]; 160 parsedDate.dayOfMonth = subValues[2]; 161 parsedDate.time = parseTime(values[1]); 162 break; 163 case 7: 164 /* Tue Mar 01 2011 12:01:42 GMT-0800 (PST) */ 165 case 9: 166 /* added by Larry, for Fri Apr 08 2011 00:00:00 GMT+0800 (China Standard Time) */ 167 case 10: 168 /* added by Larry, for Fri Apr 08 2011 00:00:00 GMT+0200 (W. Europe Daylight Time) */ 169 parsedDate.year = values[3]; 170 /* edited by Andrey, for Mon 18 Apr 2016 -//-: '[Day] [Month]' format (russian) */ 171 var parsedVal1 = parseInt(values[1]); 172 var parsedVal2 = parseInt(values[2]); 173 if (parsedVal1 && !parsedVal2) { 174 parsedDate.month = shortMonthToNumber(values[2]); 175 parsedDate.dayOfMonth = values[1]; 176 } else { 177 parsedDate.month = shortMonthToNumber(values[1]); 178 parsedDate.dayOfMonth = values[2]; 179 } 180 parsedDate.time = parseTime(values[4]); 181 break; 182 case 1: 183 /* added by Jonny, for 2012-02-07CET00:00:00 (Doctrine Entity -> Json Serializer) */ 184 subValues = values[0].split(''); 185 parsedDate.year = subValues[0] + subValues[1] + subValues[2] + subValues[3]; 186 parsedDate.month = subValues[5] + subValues[6]; 187 parsedDate.dayOfMonth = subValues[8] + subValues[9]; 188 parsedDate.time = parseTime(subValues[13] + subValues[14] + subValues[15] + subValues[16] + subValues[17] + subValues[18] + subValues[19] + subValues[20]); 189 break; 190 default: 191 return null; 192 } 193 } 194 195 if(parsedDate.time) { 196 parsedDate.date = new Date(parsedDate.year, parsedDate.month - 1, parsedDate.dayOfMonth, parsedDate.time.hour, parsedDate.time.minute, parsedDate.time.second, parsedDate.time.millis); 197 } else { 198 parsedDate.date = new Date(parsedDate.year, parsedDate.month - 1, parsedDate.dayOfMonth); 199 } 200 201 parsedDate.dayOfWeek = String(parsedDate.date.getDay()); 202 203 return parsedDate; 204 }, 205 206 date : function(value, format) { 207 try { 208 var parsedDate = this.parseDate(value); 209 210 if(parsedDate === null) { 211 return value; 212 } 213 214 var year = parsedDate.year, 215 month = parsedDate.month, 216 dayOfMonth = parsedDate.dayOfMonth, 217 dayOfWeek = parsedDate.dayOfWeek, 218 time = parsedDate.time; 219 var hour; 220 221 var pattern = '', 222 retValue = '', 223 unparsedRest = '', 224 inQuote = false; 225 226 /* Issue 1 - variable scope issue in format.date (Thanks jakemonO) */ 227 for(var i = 0; i < format.length; i++) { 228 var currentPattern = format.charAt(i); 229 // Look-Ahead Right (LALR) 230 var nextRight = format.charAt(i + 1); 231 232 if (inQuote) { 233 if (currentPattern == "'") { 234 retValue += (pattern === '') ? "'" : pattern; 235 pattern = ''; 236 inQuote = false; 237 } else { 238 pattern += currentPattern; 239 } 240 continue; 241 } 242 pattern += currentPattern; 243 unparsedRest = ''; 244 switch (pattern) { 245 case 'ddd': 246 retValue += numberToLongDay(dayOfWeek); 247 pattern = ''; 248 break; 249 case 'dd': 250 if(nextRight === 'd') { 251 break; 252 } 253 retValue += padding(dayOfMonth, 2); 254 pattern = ''; 255 break; 256 case 'd': 257 if(nextRight === 'd') { 258 break; 259 } 260 retValue += parseInt(dayOfMonth, 10); 261 pattern = ''; 262 break; 263 case 'D': 264 if(dayOfMonth == 1 || dayOfMonth == 21 || dayOfMonth == 31) { 265 dayOfMonth = parseInt(dayOfMonth, 10) + 'st'; 266 } else if(dayOfMonth == 2 || dayOfMonth == 22) { 267 dayOfMonth = parseInt(dayOfMonth, 10) + 'nd'; 268 } else if(dayOfMonth == 3 || dayOfMonth == 23) { 269 dayOfMonth = parseInt(dayOfMonth, 10) + 'rd'; 270 } else { 271 dayOfMonth = parseInt(dayOfMonth, 10) + 'th'; 272 } 273 retValue += dayOfMonth; 274 pattern = ''; 275 break; 276 case 'MMMM': 277 retValue += numberToLongMonth(month); 278 pattern = ''; 279 break; 280 case 'MMM': 281 if(nextRight === 'M') { 282 break; 283 } 284 retValue += numberToShortMonth(month); 285 pattern = ''; 286 break; 287 case 'MM': 288 if(nextRight === 'M') { 289 break; 290 } 291 retValue += padding(month, 2); 292 pattern = ''; 293 break; 294 case 'M': 295 if(nextRight === 'M') { 296 break; 297 } 298 retValue += parseInt(month, 10); 299 pattern = ''; 300 break; 301 case 'y': 302 case 'yyy': 303 if(nextRight === 'y') { 304 break; 305 } 306 retValue += pattern; 307 pattern = ''; 308 break; 309 case 'yy': 310 if(nextRight === 'y') { 311 break; 312 } 313 retValue += String(year).slice(-2); 314 pattern = ''; 315 break; 316 case 'yyyy': 317 retValue += year; 318 pattern = ''; 319 break; 320 case 'HH': 321 retValue += padding(time.hour, 2); 322 pattern = ''; 323 break; 324 case 'H': 325 if(nextRight === 'H') { 326 break; 327 } 328 retValue += parseInt(time.hour, 10); 329 pattern = ''; 330 break; 331 case 'hh': 332 /* time.hour is '00' as string == is used instead of === */ 333 hour = (parseInt(time.hour, 10) === 0 ? 12 : time.hour < 13 ? time.hour 334 : time.hour - 12); 335 retValue += padding(hour, 2); 336 pattern = ''; 337 break; 338 case 'h': 339 if(nextRight === 'h') { 340 break; 341 } 342 hour = (parseInt(time.hour, 10) === 0 ? 12 : time.hour < 13 ? time.hour 343 : time.hour - 12); 344 retValue += parseInt(hour, 10); 345 // Fixing issue https://github.com/phstc/jquery-dateFormat/issues/21 346 // retValue = parseInt(retValue, 10); 347 pattern = ''; 348 break; 349 case 'mm': 350 retValue += padding(time.minute, 2); 351 pattern = ''; 352 break; 353 case 'm': 354 if(nextRight === 'm') { 355 break; 356 } 357 retValue += parseInt(time.minute,10); 358 pattern = ''; 359 break; 360 case 'ss': 361 /* ensure only seconds are added to the return string */ 362 retValue += padding(time.second.substring(0, 2), 2); 363 pattern = ''; 364 break; 365 case 's': 366 if(nextRight === 's') { 367 break; 368 } 369 retValue += parseInt(time.second,10); 370 pattern = ''; 371 break; 372 case 'S': 373 case 'SS': 374 if(nextRight === 'S') { 375 break; 376 } 377 retValue += pattern; 378 pattern = ''; 379 break; 380 case 'SSS': 381 retValue += padding(time.millis.substring(0, 3), 3); 382 pattern = ''; 383 break; 384 case 'a': 385 retValue += time.hour >= 12 ? 'PM' : 'AM'; 386 pattern = ''; 387 break; 388 case 'p': 389 retValue += time.hour >= 12 ? 'p.m.' : 'a.m.'; 390 pattern = ''; 391 break; 392 case 'E': 393 retValue += numberToShortDay(dayOfWeek); 394 pattern = ''; 395 break; 396 case "'": 397 pattern = ''; 398 inQuote = true; 399 break; 400 default: 401 retValue += currentPattern; 402 pattern = ''; 403 break; 404 } 405 } 406 retValue += unparsedRest; 407 return retValue; 408 } catch (e) { 409 if(console && console.log) { 410 console.log(e); 411 } 412 return value; 413 } 414 }, 415 /* 416 * JavaScript Pretty Date 417 * Copyright (c) 2011 John Resig (ejohn.org) 418 * Licensed under the MIT and GPL licenses. 419 * 420 * Takes an ISO time and returns a string representing how long ago the date 421 * represents 422 * 423 * ('2008-01-28T20:24:17Z') // => '2 hours ago' 424 * ('2008-01-27T22:24:17Z') // => 'Yesterday' 425 * ('2008-01-26T22:24:17Z') // => '2 days ago' 426 * ('2008-01-14T22:24:17Z') // => '2 weeks ago' 427 * ('2007-12-15T22:24:17Z') // => 'more than 5 weeks ago' 428 * 429 */ 430 prettyDate : function(time) { 431 var date; 432 var diff; 433 var abs_diff; 434 var day_diff; 435 var abs_day_diff; 436 var tense; 437 438 if(typeof time === 'string' || typeof time === 'number') { 439 date = new Date(time); 440 } 441 442 if(typeof time === 'object') { 443 date = new Date(time.toString()); 444 } 445 446 diff = (((new Date()).getTime() - date.getTime()) / 1000); 447 448 abs_diff = Math.abs(diff); 449 abs_day_diff = Math.floor(abs_diff / 86400); 450 451 if(isNaN(abs_day_diff)) { 452 return; 453 } 454 455 tense = diff < 0 ? 'from now' : 'ago'; 456 457 if(abs_diff < 60) { 458 if(diff >= 0) 459 return 'just now'; 460 else 461 return 'in a moment'; 462 } else if(abs_diff < 120) { 463 return '1 minute ' + tense; 464 } else if(abs_diff < 3600) { 465 return Math.floor(abs_diff / 60) + ' minutes ' + tense; 466 } else if(abs_diff < 7200) { 467 return '1 hour ' + tense; 468 } else if(abs_diff < 86400) { 469 return Math.floor(abs_diff / 3600) + ' hours ' + tense; 470 } else if(abs_day_diff === 1) { 471 if(diff >= 0) 472 return 'Yesterday'; 473 else 474 return 'Tomorrow'; 475 } else if(abs_day_diff < 7) { 476 return abs_day_diff + ' days ' + tense; 477 } else if(abs_day_diff === 7) { 478 return '1 week ' + tense; 479 } else if(abs_day_diff < 31) { 480 return Math.ceil(abs_day_diff / 7) + ' weeks ' + tense; 481 } else { 482 return 'more than 5 weeks ' + tense; 483 } 484 }, 485 toBrowserTimeZone : function(value, format) { 486 return this.date(new Date(value), format || 'MM/dd/yyyy HH:mm:ss'); 487 } 488 }; 489 }()); 490}(DateFormat));
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.