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
// 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
<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>
// (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', {
--- /dev/null
+(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
--- /dev/null
+(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
+++ /dev/null
-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
-(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