]> git.ipfire.org Git - thirdparty/moment.git/commitdiff
Adding convenience methods per #22
authorTim Wood <washwithcare@gmail.com>
Thu, 13 Oct 2011 05:40:00 +0000 (22:40 -0700)
committerTim Wood <washwithcare@gmail.com>
Thu, 13 Oct 2011 05:40:00 +0000 (22:40 -0700)
Adding `year month date day hour minute second`
Changing internal _date native `Date` object name to `_d` instead of
`date` to avoid collisions with the `_date.fn.date` method.

test/date.js
underscore.date.js
underscore.date.min.js

index d24f8db0b41a43aefdcb4e3b9f0e5d1d03c728dc..673c53c83a692e01e6fbbef0cb4e0398b0771adf 100755 (executable)
@@ -19,35 +19,42 @@ module("create");
 
 
 test("array", 8, function() {
-    ok(_date([2010]).date instanceof Date, "[2010]");
-    ok(_date([2010, 1]).date instanceof Date, "[2010, 1]");
-    ok(_date([2010, 1, 12]).date instanceof Date, "[2010, 1, 12]");
-    ok(_date([2010, 1, 12, 1]).date instanceof Date, "[2010, 1, 12, 1]");
-    ok(_date([2010, 1, 12, 1, 1]).date instanceof Date, "[2010, 1, 12, 1, 1]");
-    ok(_date([2010, 1, 12, 1, 1, 1]).date instanceof Date, "[2010, 1, 12, 1, 1, 1]");
-    ok(_date([2010, 1, 12, 1, 1, 1, 1]).date instanceof Date, "[2010, 1, 12, 1, 1, 1, 1]");
+    ok(_date([2010])._d instanceof Date, "[2010]");
+    ok(_date([2010, 1])._d instanceof Date, "[2010, 1]");
+    ok(_date([2010, 1, 12])._d instanceof Date, "[2010, 1, 12]");
+    ok(_date([2010, 1, 12, 1])._d instanceof Date, "[2010, 1, 12, 1]");
+    ok(_date([2010, 1, 12, 1, 1])._d instanceof Date, "[2010, 1, 12, 1, 1]");
+    ok(_date([2010, 1, 12, 1, 1, 1])._d instanceof Date, "[2010, 1, 12, 1, 1, 1]");
+    ok(_date([2010, 1, 12, 1, 1, 1, 1])._d instanceof Date, "[2010, 1, 12, 1, 1, 1, 1]");
     deepEqual(_date(new Date(2010, 1, 14, 15, 25, 50, 125)), _date([2010, 1, 14, 15, 25, 50, 125]), "constructing with array === constructing with new Date()");
 });
 
 
+test("number", 2, function() {
+    ok(_date(1000)._d instanceof Date, "1000");
+    ok((_date(1000).valueOf() === 1000), "testing valueOf");
+});
+
+
 test("date", 1, function() {
-    ok(_date(new Date()).date instanceof Date, "new Date()");
+    ok(_date(new Date())._d instanceof Date, "new Date()");
 });
 
+console.log(_date(1000).valueOf())
 
 test("_date", 2, function() {
-    ok(_date(_date()).date instanceof Date, "_date(_date())");
-    ok(_date(_date(_date())).date instanceof Date, "_date(_date(_date()))");
+    ok(_date(_date())._d instanceof Date, "_date(_date())");
+    ok(_date(_date(_date()))._d instanceof Date, "_date(_date(_date()))");
 });
 
 test("undefined", 1, function() {
-    ok(_date().date instanceof Date, "undefined");
+    ok(_date()._d instanceof Date, "undefined");
 });
 
 
 test("string without format", 2, function() {
-    ok(_date("Aug 9, 1995").date instanceof Date, "Aug 9, 1995");
-    ok(_date("Mon, 25 Dec 1995 13:30:00 GMT").date instanceof Date, "Mon, 25 Dec 1995 13:30:00 GMT");
+    ok(_date("Aug 9, 1995")._d instanceof Date, "Aug 9, 1995");
+    ok(_date("Mon, 25 Dec 1995 13:30:00 GMT")._d instanceof Date, "Mon, 25 Dec 1995 13:30:00 GMT");
 });
 
 
@@ -201,8 +208,7 @@ test("diff", 5, function() {
 module("leap year");
 
 
-test("leap year", function() {
-    expect(4);
+test("leap year", 4, function() {
     equal(_date([2010, 0, 1]).isLeapYear(), false, '2010');
     equal(_date([2100, 0, 1]).isLeapYear(), false, '2100');
     equal(_date([2008, 0, 1]).isLeapYear(), true, '2008');
@@ -210,15 +216,64 @@ test("leap year", function() {
 });
 
 
+module("getters and setters");
+
+
+test("getters", 7, function() {
+    var a = _date([2011, 9, 12, 6, 7, 8]);
+    equal(a.year(), 2011, 'year');
+    equal(a.month(), 9, 'month');
+    equal(a.date(), 12, 'date');
+    equal(a.day(), 3, 'day');
+    equal(a.hours(), 6, 'hour');
+    equal(a.minutes(), 7, 'minute');
+    equal(a.seconds(), 8, 'second');
+});
+
+
+test("setters", 7, function() {
+    var a = _date();
+    a.year(2011);
+    a.month(9);
+    a.date(12);
+    a.hours(6);
+    a.minutes(7);
+    a.seconds(8);
+    equal(a.year(), 2011, 'year');
+    equal(a.month(), 9, 'month');
+    equal(a.date(), 12, 'date');
+    equal(a.day(), 3, 'day');
+    equal(a.hours(), 6, 'hour');
+    equal(a.minutes(), 7, 'minute');
+    equal(a.seconds(), 8, 'second');
+});
+
+test("chaining setters", 7, function() {
+    var a = _date();
+    a.year(2011)
+     .month(9)
+     .date(12)
+     .hours(6)
+     .minutes(7)
+     .seconds(8);
+    equal(a.year(), 2011, 'year');
+    equal(a.month(), 9, 'month');
+    equal(a.date(), 12, 'date');
+    equal(a.day(), 3, 'day');
+    equal(a.hours(), 6, 'hour');
+    equal(a.minutes(), 7, 'minute');
+    equal(a.seconds(), 8, 'second');
+});
+
 module("underscore mixin");
 
 
 test("underscore mixin", 6, function() {
-    ok(_.date([2010, 1, 12]).date instanceof Date, "[2010, 1, 12]");
-    ok(_.date([2010, 1, 12, 1]).date instanceof Date, "[2010, 1, 12, 1]");
-    ok(_.date().date instanceof Date, "undefined");
-    ok(_.date("Aug 9, 1995").date instanceof Date, "Aug 9, 1995");
-    ok(_.date("Mon, 25 Dec 1995 13:30:00 GMT").date instanceof Date, "Mon, 25 Dec 1995 13:30:00 GMT");
+    ok(_.date([2010, 1, 12])._d instanceof Date, "[2010, 1, 12]");
+    ok(_.date([2010, 1, 12, 1])._d instanceof Date, "[2010, 1, 12, 1]");
+    ok(_.date()._d instanceof Date, "undefined");
+    ok(_.date("Aug 9, 1995")._d instanceof Date, "Aug 9, 1995");
+    ok(_.date("Mon, 25 Dec 1995 13:30:00 GMT")._d instanceof Date, "Mon, 25 Dec 1995 13:30:00 GMT");
     deepEqual(_.date(new Date(2010, 1, 14, 15, 25, 50, 125)), _.date([2010, 1, 14, 15, 25, 50, 125]), "constructing with array === constructing with new Date()");
 });
 
index db5e76eb288b76234f8b7d27af13265da1a746d4..aeace760b9e64011395413c567f6118f5b871911 100644 (file)
@@ -5,12 +5,14 @@
 //
 // Version 0.6.1
 
-(function (undefined) {
+(function (Date, undefined) {
 
     var _date,
         round = Math.round,
         languages = {},
-        paramsToParse = 'months|monthsShort|weekdays|weekdaysShort|relativeTime|ordinal'.split('|');
+        paramsToParse = 'months|monthsShort|weekdays|weekdaysShort|relativeTime|ordinal'.split('|'),
+        i,
+        shortcuts = 'Month|Date|Hours|Minutes|Seconds'.split('|');
 
     // left zero fill a number
     // see http://jsperf.com/left-zero-filling for performance comparison
     // UnderscoreDate prototype object
     function UnderscoreDate(input, format) {
         // parse UnderscoreDate object
-        if (input && input.date instanceof Date) {
-            this.date = input.date;
+        if (input && input._d instanceof Date) {
+            this._d = input._d;
         // parse string and format
         } else if (format) {
             if (isArray(format)) {
-                this.date = makeDateFromStringAndArray(input, format);
+                this._d = makeDateFromStringAndArray(input, format);
             } else {
-                this.date = makeDateFromStringAndFormat(input, format);
+                this._d = makeDateFromStringAndFormat(input, format);
             }
         // parse everything else
         } else {
-            this.date = input === undefined ? new Date() :
+            this._d = input === undefined ? new Date() :
                 input instanceof Date ? input :
                 isArray(input) ? dateFromArray(input) :
                 new Date(input);
     _date.fn = UnderscoreDate.prototype = {
 
         valueOf : function () {
-            return this.date.getTime();
+            return +this._d;
         },
 
         format : function (inputString) {
-            return formatDate(this.date, inputString);
+            return formatDate(this._d, inputString);
         },
 
         add : function (input) {
-            this.date = dateAddRemove(this.date, input, 1);
+            this._d = dateAddRemove(this._d, input, 1);
             return this;
         },
 
         subtract : function (input) {
-            this.date = dateAddRemove(this.date, input, -1);
+            this._d = dateAddRemove(this._d, input, -1);
             return this;
         },
 
         diff : function (input, format) {
-            return this.date - _date(input, format).date;
+            return this._d - _date(input, format)._d;
         },
 
         from : function (time, withoutSuffix) {
             var difference = this.diff(time),
                 string = difference < 0 ? _date.relativeTime.past : _date.relativeTime.future,
-                output = relativeTime(difference)
+                output = relativeTime(difference);
             return withoutSuffix ? output : string.replace(/%s/i, output);
         },
 
         },
 
         isLeapYear : function () {
-            var year = this.date.getFullYear();
+            var year = this._d.getFullYear();
             return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;
         }
     };
 
+    // helper for adding shortcuts
+    function makeShortcut(name, key) {
+        _date.fn[name] = function (input) {
+            if (input) {
+                this._d['set' + key](input);
+                return this;
+            } else {
+                return this._d['get' + key]();
+            }
+        };
+    }
+
+    // loop through and add shortcuts
+    for (i = 0; i < shortcuts.length; i ++) {
+        makeShortcut(shortcuts[i].toLowerCase(), shortcuts[i]);
+    }
+
+    // add shortcut for year (uses different syntax than the getter/setter 'year' == 'FullYear')
+    makeShortcut('year', 'FullYear');
+
+    // add shortcut for day (no setter)
+    _date.fn.day = function () {
+        return this._d.getDay();
+    };
+
     // CommonJS module is defined
     if (typeof window === 'undefined' && typeof module !== 'undefined') {
         // Export module
         this._date = _date;
     }
 
-}());
+})(Date);
\ No newline at end of file
index e12c73f7db7ce0c0c07f87ee2b13c867977094b5..76e39f27764125d2eff88870d408b2fbada525fc 100755 (executable)
@@ -1,8 +1 @@
-// Underscore.date
-//
-// (c) 2011 Tim Wood
-// Underscore.date is freely distributable under the terms of the MIT license.
-//
-// Version 0.6.1
-
-(function(a){function f(a,b){var c=a+"";while(c.length<b)c="0"+c;return c}function g(a,b,c){var d=(b.ms||0)+(b.s||0)*1e3+(b.m||0)*6e4+(b.h||0)*36e5+(b.d||0)*864e5+(b.w||0)*6048e5,e=(b.M||0)+(b.y||0)*12,f;return d&&a.setMilliseconds(a.getMilliseconds()+d*c),e&&(f=a.getDate(),a.setDate(1),a.setMonth(a.getMonth()+e*c),a.setDate(Math.min((new Date(a.getFullYear(),a.getMonth()+1,0)).getDate(),f))),a}function h(a){return Object.prototype.toString.call(a)==="[object Array]"}function i(a){return new Date(a[0],a[1]||0,a[2]||1,a[3]||0,a[4]||0,a[5]||0,a[6]||0)}function j(a,c){function o(c){var l,p;switch(c){case"M":return d+1;case"Mo":return d+1+b.ordinal(d+1);case"MM":return f(d+1,2);case"MMM":return b.monthsShort[d];case"MMMM":return b.months[d];case"D":return e;case"Do":return e+b.ordinal(e);case"DD":return f(e,2);case"DDD":return l=new Date(g,d,e),p=new Date(g,0,1),~~((l-p)/864e5+1.5);case"DDDo":return l=o("DDD"),l+b.ordinal(l);case"DDDD":return f(o("DDD"),3);case"d":return h;case"do":return h+b.ordinal(h);case"ddd":return b.weekdaysShort[h];case"dddd":return b.weekdays[h];case"w":return l=new Date(g,d,e-h+5),p=new Date(l.getFullYear(),0,4),~~((l-p)/864e5/7+1.5);case"wo":return l=o("w"),l+b.ordinal(l);case"ww":return f(o("w"),2);case"YY":return(g+"").slice(-2);case"YYYY":return g;case"a":return i>11?"pm":"am";case"A":return i>11?"PM":"AM";case"H":return i;case"HH":return f(i,2);case"h":return i%12||12;case"hh":return f(i%12||12,2);case"m":return j;case"mm":return f(j,2);case"s":return k;case"ss":return f(k,2);case"zz":case"z":return(a.toString().match(n)||[""])[0].replace(m,"");default:return c.replace("\\","")}}var d=a.getMonth(),e=a.getDate(),g=a.getFullYear(),h=a.getDay(),i=a.getHours(),j=a.getMinutes(),k=a.getSeconds(),l=/(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|dddd?|do?|w[o|w]?|YYYY|YY|a|A|hh?|HH?|mm?|ss?|zz?)/g,m=/[^A-Z]/g,n=/\([A-Za-z ]+\)|:[0-9]{2} [A-Z]{3} /g;return c.replace(l,o)}function k(a,b){function j(a,b){switch(a){case"M":case"MM":c[1]=~~b-1;break;case"D":case"DD":case"DDD":case"DDDD":c[2]=~~b;break;case"YY":b=~~b,c[0]=b+(b>70?1900:2e3);break;case"YYYY":c[0]=~~b;break;case"a":case"A":h=b.toLowerCase()==="pm";break;case"H":case"HH":case"h":case"hh":c[3]=~~b;break;case"m":case"mm":c[4]=~~b;break;case"s":case"ss":c[5]=~~b}}var c=[0],d=/[0-9a-zA-Z]+/g,e=a.match(d),f=b.match(d),g,h;for(g=0;g<f.length;g++)j(f[g],e[g]);return h&&c[3]<12&&(c[3]+=12),i(c)}function l(a,b){var c=Math.min(a.length,b.length),d=Math.abs(a.length-b.length),e=0,f;for(f=0;f<c;f++)~~a[f]!==~~b[f]&&e++;return e+d}function m(a,b){var c,d=/[0-9a-zA-Z]+/g,e=a.match(d),f=[],g=99,h,i,m;for(h=0;h<b.length;h++)i=k(a,b[h]),m=l(e,j(i,b[h]).match(d)),m<g&&(g=m,c=i);return c}function n(b,c){b&&b.date instanceof Date?this.date=b.date:c?h(c)?this.date=m(b,c):this.date=k(b,c):this.date=b===a?new Date:b instanceof Date?b:h(b)?i(b):new Date(b)}function o(a){return isNaN(a)?(new n(a)).date.getTime():a}function p(a,c){return b.relativeTime[a].replace(/%d/i,c||1)}function q(a,b){return o(a)-o(b)}function r(a){var b=Math.abs(a)/1e3,d=b/60,e=d/60,f=e/24,g=f/365;return b<45&&p("s",c(b))||c(d)===1&&p("m")||d<45&&p("mm",c(d))||c(e)===1&&p("h")||e<22&&p("hh",c(e))||c(f)===1&&p("d")||f<25&&p("dd",c(f))||f<45&&p("M")||f<345&&p("MM",c(f/30))||c(g)===1&&p("y")||p("yy",c(g))}var b,c=Math.round,d={},e="months|monthsShort|weekdays|weekdaysShort|relativeTime|ordinal".split("|");b=function(a,b){return new n(a,b)},b.lang=function(a,c){var f,g;c&&(d[a]=c);if(d[a])for(f=0;f<e.length;f++)g=e[f],b[g]=d[a][g]||b[g]},b.lang("en",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),relativeTime:{future:"in %s",past:"%s ago",s:"seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinal:function(a){var b=a%10;return~~(a%100/10)===1?"th":b===1?"st":b===2?"nd":b===3?"rd":"th"}}),n.prototype={valueOf:function(){return this.date.getTime()},format:function(a){return j(this.date,a)},add:function(a){return this.date=g(this.date,a,1),this},subtract:function(a){return this.date=g(this.date,a,-1),this},from:function(a,c,d){var e=q(this.date,a),f=e<0?b.relativeTime.past:b.relativeTime.future;return d?e:c?r(e):f.replace(/%s/i,r(e))},fromNow:function(a,b){return this.from(new n,a,b)},isLeapYear:function(){var a=this.date.getFullYear();return a%4===0&&a%100!==0||a%400===0}},typeof window=="undefined"&&typeof module!="undefined"?module.exports=b:(this._!==a&&this._.mixin!==a&&this._.mixin({date:b}),this._date=b)})()
\ No newline at end of file
+(function(a,b){function i(a,b){var c=a+"";while(c.length<b)c="0"+c;return c}function j(b,c,d){var e=(c.ms||0)+(c.s||0)*1e3+(c.m||0)*6e4+(c.h||0)*36e5+(c.d||0)*864e5+(c.w||0)*6048e5,f=(c.M||0)+(c.y||0)*12,g;return e&&b.setMilliseconds(b.getMilliseconds()+e*d),f&&(g=b.getDate(),b.setDate(1),b.setMonth(b.getMonth()+f*d),b.setDate(Math.min((new a(b.getFullYear(),b.getMonth()+1,0)).getDate(),g))),b}function k(a){return Object.prototype.toString.call(a)==="[object Array]"}function l(b){return new a(b[0],b[1]||0,b[2]||1,b[3]||0,b[4]||0,b[5]||0,b[6]||0)}function m(b,d){function p(d){var m,q;switch(d){case"M":return e+1;case"Mo":return e+1+c.ordinal(e+1);case"MM":return i(e+1,2);case"MMM":return c.monthsShort[e];case"MMMM":return c.months[e];case"D":return f;case"Do":return f+c.ordinal(f);case"DD":return i(f,2);case"DDD":return m=new a(g,e,f),q=new a(g,0,1),~~((m-q)/864e5+1.5);case"DDDo":return m=p("DDD"),m+c.ordinal(m);case"DDDD":return i(p("DDD"),3);case"d":return h;case"do":return h+c.ordinal(h);case"ddd":return c.weekdaysShort[h];case"dddd":return c.weekdays[h];case"w":return m=new a(g,e,f-h+5),q=new a(m.getFullYear(),0,4),~~((m-q)/864e5/7+1.5);case"wo":return m=p("w"),m+c.ordinal(m);case"ww":return i(p("w"),2);case"YY":return(g+"").slice(-2);case"YYYY":return g;case"a":return j>11?"pm":"am";case"A":return j>11?"PM":"AM";case"H":return j;case"HH":return i(j,2);case"h":return j%12||12;case"hh":return i(j%12||12,2);case"m":return k;case"mm":return i(k,2);case"s":return l;case"ss":return i(l,2);case"zz":case"z":return(b.toString().match(o)||[""])[0].replace(n,"");default:return d.replace("\\","")}}var e=b.getMonth(),f=b.getDate(),g=b.getFullYear(),h=b.getDay(),j=b.getHours(),k=b.getMinutes(),l=b.getSeconds(),m=/(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|dddd?|do?|w[o|w]?|YYYY|YY|a|A|hh?|HH?|mm?|ss?|zz?)/g,n=/[^A-Z]/g,o=/\([A-Za-z ]+\)|:[0-9]{2} [A-Z]{3} /g;return d.replace(m,p)}function n(a,b){function i(a,b){switch(a){case"M":case"MM":c[1]=~~b-1;break;case"D":case"DD":case"DDD":case"DDDD":c[2]=~~b;break;case"YY":b=~~b,c[0]=b+(b>70?1900:2e3);break;case"YYYY":c[0]=~~b;break;case"a":case"A":h=b.toLowerCase()==="pm";break;case"H":case"HH":case"h":case"hh":c[3]=~~b;break;case"m":case"mm":c[4]=~~b;break;case"s":case"ss":c[5]=~~b}}var c=[0],d=/[0-9a-zA-Z]+/g,e=a.match(d),f=b.match(d),g,h;for(g=0;g<f.length;g++)i(f[g],e[g]);return h&&c[3]<12&&(c[3]+=12),l(c)}function o(a,b){var c=Math.min(a.length,b.length),d=Math.abs(a.length-b.length),e=0,f;for(f=0;f<c;f++)~~a[f]!==~~b[f]&&e++;return e+d}function p(a,b){var c,d=/[0-9a-zA-Z]+/g,e=a.match(d),f=[],g=99,h,i,j;for(h=0;h<b.length;h++)i=n(a,b[h]),j=o(e,m(i,b[h]).match(d)),j<g&&(g=j,c=i);return c}function q(c,d){c&&c._d instanceof a?this._d=c._d:d?k(d)?this._d=p(c,d):this._d=n(c,d):this._d=c===b?new a:c instanceof a?c:k(c)?l(c):new a(c)}function r(a,b){return c.relativeTime[a].replace(/%d/i,b||1)}function s(a){var b=Math.abs(a)/1e3,c=b/60,e=c/60,f=e/24,g=f/365;return b<45&&r("s",d(b))||d(c)===1&&r("m")||c<45&&r("mm",d(c))||d(e)===1&&r("h")||e<22&&r("hh",d(e))||d(f)===1&&r("d")||f<25&&r("dd",d(f))||f<45&&r("M")||f<345&&r("MM",d(f/30))||d(g)===1&&r("y")||r("yy",d(g))}function t(a,b){c.fn[a]=function(a){return a?(this._d["set"+b](a),this):this._d["get"+b]()}}var c,d=Math.round,e={},f="months|monthsShort|weekdays|weekdaysShort|relativeTime|ordinal".split("|"),g,h="Month|Date|Hours|Minutes|Seconds".split("|");c=function(a,b){return new q(a,b)},c.lang=function(a,b){var d,g;b&&(e[a]=b);if(e[a])for(d=0;d<f.length;d++)g=f[d],c[g]=e[a][g]||c[g]},c.lang("en",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),relativeTime:{future:"in %s",past:"%s ago",s:"seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinal:function(a){var b=a%10;return~~(a%100/10)===1?"th":b===1?"st":b===2?"nd":b===3?"rd":"th"}}),c.fn=q.prototype={valueOf:function(){return+this._d},format:function(a){return m(this._d,a)},add:function(a){return this._d=j(this._d,a,1),this},subtract:function(a){return this._d=j(this._d,a,-1),this},diff:function(a,b){return this._d-c(a,b)._d},from:function(a,b){var d=this.diff(a),e=d<0?c.relativeTime.past:c.relativeTime.future,f=s(d);return b?f:e.replace(/%s/i,f)},fromNow:function(a){return this.from(new q,a)},isLeapYear:function(){var a=this._d.getFullYear();return a%4===0&&a%100!==0||a%400===0}};for(g=0;g<h.length;g++)t(h[g].toLowerCase(),h[g]);t("year","FullYear"),c.fn.day=function(){return this._d.getDay()},typeof window=="undefined"&&typeof module!="undefined"?module.exports=c:(this._!==b&&this._.mixin!==b&&this._.mixin({date:c}),this._date=c)})(Date)
\ No newline at end of file