]> git.ipfire.org Git - thirdparty/moment.git/commitdiff
Finishing _date.lang addition
authorTim Wood <washwithcare@gmail.com>
Thu, 15 Sep 2011 05:45:42 +0000 (22:45 -0700)
committerTim Wood <washwithcare@gmail.com>
Thu, 15 Sep 2011 05:45:42 +0000 (22:45 -0700)
test.js
test/date.js
test/test.html
underscore.date.js
underscore.date.lang/pt.js [new file with mode: 0644]
underscore.date.lang/test.js [new file with mode: 0644]
underscore.date.languages.js [deleted file]
underscore.date.min.js

diff --git a/test.js b/test.js
index 4fc8ed5941e39adcfdc41bbf614e55cf8d3e9834..f67d0c1f865e219206633ca4de3695b87e98afef 100755 (executable)
--- a/test.js
+++ b/test.js
@@ -1,6 +1,6 @@
 var testrunner = require('qunit');\r
 \r
-testrunner.options.coverage = false;\r
+testrunner.options.errorsOnly = true;\r
 \r
 testrunner.run({\r
     code: "./underscore.date.js",\r
index 66fd249cf3a75fd56a4f2b8378fd45527f16d964..1b954e9e0afaa0f0d05463ac1ddf2fdbb85414cd 100755 (executable)
@@ -436,4 +436,60 @@ test("format", 48, function() {
 
     // switch back to en to prevent other tests from failing
     _date.lang('en');
+});
+
+function nodeLangSetup() {
+    var testLang = require('../underscore.date.lang/test.js');
+    _date.lang(testLang.key, testLang.data);
+    _date.lang('en');
+}
+
+if (typeof window === 'undefined') {
+    nodeLangSetup();
+}
+
+test("loaded module", 16, function() {
+    var date = _date(new Date(2010, 1, 14, 15, 25, 50, 125)),
+        test = [
+            ['dddd, MMMM Do YYYY, h:mm:ss a',      'a.test, 2.test 14ordinal 2010, 3:25:50 pm'],
+            ['ddd, hA',                            'a.t, 3PM'],
+            ['M Mo MM MMMM MMM',                   '2 2ordinal 02 2.test 2.t'],
+            ['D Do DD',                            '14 14ordinal 14'],
+            ['d do dddd ddd',                      '0 0ordinal a.test a.t'],
+            ['DDD DDDo DDDD',                      '45 45ordinal 045'],
+            ['w wo ww',                            '8 8ordinal 08'],
+            ['t\\he DDDo \\d\\ay of t\\he ye\\ar', 'the 45ordinal day of the year']
+        ],
+        testFrom = [
+            [{s:-30}, false, "s future", "future"],
+            [{s:30},  false, "s past", "past"],
+            [{s:30},  true, "s", "seconds"],
+            [{s:60},  true, "m", "minute"],
+            [{m:5},   true, "5 mm", "minutes"],
+            [{h:1},   true, "h", "hour"],
+            [{h:5},   true, "5 hh", "hours"],
+            [{d:1},   true, "d", "day"],
+            [{d:5},   true, "5 dd", "days"],
+            [{M:1},   true, "M", "month"],
+            [{M:5},   true, "5 MM", "months"],
+            [{y:1},   true, "y", "year"],
+            [{y:5},   true, "5 yy", "years"]
+        ],
+        i;
+
+    function testLang(formatArray, fromArray) {
+        var start = [2007, 1, 28];
+        for (i = 0; i < formatArray.length; i++) {
+            equal(date.format(formatArray[i][0]), formatArray[i][1], formatArray[i][0] + ' ---> ' + formatArray[i][1]);
+        }
+
+        for (i = 0; i < formatArray.length; i++) {
+            equal(_date(start).from(_date(start).add(fromArray[i][0]), fromArray[i][1]), fromArray[i][2], fromArray[i][3]);
+        }
+    }
+
+    _date.lang('test');
+
+    // test 'test'
+    testLang(test, testFrom);
 });
\ No newline at end of file
index d573214b6f931e59157468b43db1c812722a6ac0..b21bc2f205b1d83031863fa95ffcbcbbd42b5c8c 100755 (executable)
@@ -7,6 +7,11 @@
         <script src="vendor/jquery.js"></script>
         <script src="vendor/underscore.js"></script>
         <script src="../underscore.date.js"></script>
+        <script src="../underscore.date.lang/test.js"></script>
+        <script>
+            // reset default to english
+            _date.lang('en');
+        </script>
         <script src="vendor/qunit.js"></script>
         <script src="date.js"></script>
     </head>
index 71823aff872994c9abe76b2448b523fc421e7fe3..ae639a645825f95ebf3f531dba84ce39890d84b9 100644 (file)
@@ -3,7 +3,7 @@
 // (c) 2011 Tim Wood
 // Underscore.date is freely distributable under the terms of the MIT license.
 //
-// Version 0.5.2
+// Version 0.6.0
 
 (function (undefined) {
 
                 _date[param] = languages[key][param] || _date[param];
             }
         }
-    }
+    };
 
     // set default language
     _date.lang('en', {
diff --git a/underscore.date.lang/pt.js b/underscore.date.lang/pt.js
new file mode 100644 (file)
index 0000000..7d25257
--- /dev/null
@@ -0,0 +1,36 @@
+(function () {
+    var lang = {
+            months : ["Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"],
+            monthsShort : ["Jan", "Feb", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Out", "Nov", "Dez"],
+            weekdays : ["Domingo", "Segunda-feira", "Terça-feira", "Quarta-feira", "Quinta-feira", "Sexta-feira", "Sábado"],
+            weekdaysShort : ["Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sáb"],
+            relativeTime : {
+                future: "em %s",
+                past: "%s atrás",
+                s: "segundos",
+                m: "um minuto",
+                mm: "%d minutos",
+                h: "uma hora",
+                hh: "%d horas",
+                d: "um dia",
+                dd: "%d dias",
+                M: "um mês",
+                MM: "%d meses",
+                y: "um ano",
+                yy: "%d anos"
+            },
+            ordinal : function (number) {
+                return 'º';
+            },
+        },
+        abbr = 'pt';
+
+    // Node
+    if (typeof module !== 'undefined') {
+        module.exports = {lang : lang, abbr : abbr};
+    }
+    // Browser
+    if (typeof window !== 'undefined' && this._date && this._date.lang) {
+        this._date.lang(abbr, lang);
+    }
+}());
\ No newline at end of file
diff --git a/underscore.date.lang/test.js b/underscore.date.lang/test.js
new file mode 100644 (file)
index 0000000..9f23f81
--- /dev/null
@@ -0,0 +1,36 @@
+(function () {
+    var data = {
+            months : ["1.test", "2.test", "3.test", "4.test", "5.test", "6.test", "7.test", "8.test", "9.test", "10.test", "11.test", "12.test"],
+            monthsShort : ["1.t", "2.t", "3.t", "4.t", "5.t", "6.t", "7.t", "8.t", "9.t", "10.t", "11.t", "12.t"],
+            weekdays : ["a.test", "b.test", "c.test", "d.test", "e.test", "f.test", "g.test"],
+            weekdaysShort : ["a.t", "b.t", "c.t", "d.t", "e.t", "f.t", "g.t"],
+            relativeTime : {
+                future: "%s future",
+                past: "%s past",
+                s: "s",
+                m: "m",
+                mm: "%d mm",
+                h: "h",
+                hh: "%d hh",
+                d: "d",
+                dd: "%d dd",
+                M: "M",
+                MM: "%d MM",
+                y: "y",
+                yy: "%d yy"
+            },
+            ordinal : function (number) {
+                return 'ordinal';
+            },
+        },
+        key = 'test';
+
+    // Node
+    if (typeof module !== 'undefined') {
+        module.exports = {data : data, key : key};
+    }
+    // Browser
+    if (typeof window !== 'undefined' && this._date && this._date.lang) {
+        this._date.lang(key, data);
+    }
+}());
\ No newline at end of file
diff --git a/underscore.date.languages.js b/underscore.date.languages.js
deleted file mode 100644 (file)
index f07b57d..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-exports.portuguese = function (){
-    _date.months = ["Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"];
-    _date.monthsShort = ["Jan", "Feb", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Out", "Nov", "Dez"];
-    _date.weekdays = ["Domingo", "Segunda-feira", "Terça-feira", "Quarta-feira", "Quinta-feira", "Sexta-feira", "Sábado"];
-    _date.weekdaysShort = ["Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sáb"];
-    _date.relativeTime = {
-        future: "em %s",
-        past: "%s atrás",
-        s: "segundos",
-        m: "um minuto",
-        mm: "%d minutos",
-        h: "uma hora",
-        hh: "%d horas",
-        d: "um dia",
-        dd: "%d dias",
-        M: "um mês",
-        MM: "%d meses",
-        y: "um ano",
-        yy: "%d anos"
-    };
-    _date.ordinal = function (number) {
-        return 'º';
-    };
-}
\ No newline at end of file
index b9dc34c8a4698164d99984cb60c0cc36aba79a7c..9a287947234277b2df2ea70088b1619bfb167181 100755 (executable)
@@ -1 +1,8 @@
-(function(a){function p(a){var b=Math.abs(a)/1e3,d=b/60,e=d/60,f=e/24,g=f/365;return b<45&&n("s",c(b))||c(d)===1&&n("m")||d<45&&n("mm",c(d))||c(e)===1&&n("h")||e<22&&n("hh",c(e))||c(f)===1&&n("d")||f<25&&n("dd",c(f))||f<45&&n("M")||f<345&&n("MM",c(f/30))||c(g)===1&&n("y")||n("yy",c(g))}function o(a,b){return m(a)-m(b)}function n(a,c){return b.relativeTime[a].replace(/%d/i,c||1)}function m(a){return isNaN(a)?(new l(a)).date.getTime():a}function l(b,c){b&&b.date instanceof Date?this.date=b.date:c?f(c)?this.date=k(b,c):this.date=i(b,c):this.date=b===a?new Date:b instanceof Date?b:f(b)?g(b):new Date(b)}function k(a,b){var c,d=/[0-9a-zA-Z]+/g,e=a.match(d),f=[],g=99,k,l,m;for(k=0;k<b.length;k++)l=i(a,b[k]),m=j(e,h(l,b[k]).match(d)),m<g&&(g=m,c=l);return c}function j(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 i(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":i=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),h,i;for(h=0;h<f.length;h++)j(f[h],e[h]);i&&c[3]<12&&(c[3]+=12);return g(c)}function h(a,c){function o(a){var c,m;switch(a){case"M":return e+1;case"Mo":return e+1+b.ordinal(e+1);case"MM":return d(e+1,2);case"MMM":return b.monthsShort[e];case"MMMM":return b.months[e];case"D":return f;case"Do":return f+b.ordinal(f);case"DD":return d(f,2);case"DDD":c=new Date(g,e,f),m=new Date(g,0,1);return~~((c-m)/864e5+1.5);case"DDDo":c=o("DDD");return c+b.ordinal(c);case"DDDD":return d(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":c=new Date(g,e,f-h+5),m=new Date(c.getFullYear(),0,4);return~~((c-m)/864e5/7+1.5);case"wo":c=o("w");return c+b.ordinal(c);case"ww":return d(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 d(i,2);case"h":return i%12||12;case"hh":return d(i%12||12,2);case"m":return j;case"mm":return d(j,2);case"s":return k;case"ss":return d(k,2);case"z":return o("zz").replace(n,"");case"zz":c=l.indexOf("(");if(c>-1)return l.slice(c+1,l.indexOf(")"));return l.slice(l.indexOf(":")).replace(n,"");default:return a.replace("\\","")}}var e=a.getMonth(),f=a.getDate(),g=a.getFullYear(),h=a.getDay(),i=a.getHours(),j=a.getMinutes(),k=a.getSeconds(),l=a.toString(),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;return c.replace(m,o)}function g(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 f(a){return Object.prototype.toString.call(a)==="[object Array]"}function e(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;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)));return a}function d(a,b){var c=a+"";while(c.length<b)c="0"+c;return c}var b,c=Math.round;b=function(a,b){return new l(a,b)},b.months=["January","February","March","April","May","June","July","August","September","October","November","December"],b.monthsShort=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],b.weekdays=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],b.weekdaysShort=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],b.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"},b.ordinal=function(a){var b=a%10;return~~(a%100/10)===1?"th":b===1?"st":b===2?"nd":b===3?"rd":"th"},l.prototype={valueOf:function(){return this.date.getTime()},format:function(a){return h(this.date,a)},add:function(a){this.date=e(this.date,a,1);return this},subtract:function(a){this.date=e(this.date,a,-1);return this},from:function(a,c,d){var e=o(this.date,a),f=e<0?b.relativeTime.past:b.relativeTime.future;return d?e:c?p(e):f.replace(/%s/i,p(e))},fromNow:function(a,b){return this.from(new l,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
+// Underscore.date
+//
+// (c) 2011 Tim Wood
+// Underscore.date is freely distributable under the terms of the MIT license.
+//
+// Version 0.6.0
+
+(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(a){var c,m;switch(a){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 c=new Date(g,d,e),m=new Date(g,0,1),~~((c-m)/864e5+1.5);case"DDDo":return c=o("DDD"),c+b.ordinal(c);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 c=new Date(g,d,e-h+5),m=new Date(c.getFullYear(),0,4),~~((c-m)/864e5/7+1.5);case"wo":return c=o("w"),c+b.ordinal(c);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":c=l.indexOf("(");if(c>-1)return l.slice(c+1,l.indexOf(")")).replace(n,"");return l.slice(l.indexOf(":")).replace(n,"");default:return a.replace("\\","")}}var d=a.getMonth(),e=a.getDate(),g=a.getFullYear(),h=a.getDay(),i=a.getHours(),j=a.getMinutes(),k=a.getSeconds(),l=a.toString(),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;return c.replace(m,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"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],weekdays:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],weekdaysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],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