]>
git.wh0rd.org - tt-rss.git/blob - lib/dojo/date/locale.js
2 Copyright (c) 2004-2010, The Dojo Foundation All Rights Reserved.
3 Available via Academic Free License >= 2.1 OR the modified BSD license.
4 see: http://dojotoolkit.org/license for details
8 if(!dojo
._hasResource
["dojo.date.locale"]){
9 dojo
._hasResource
["dojo.date.locale"]=true;
10 dojo
.provide("dojo.date.locale");
11 dojo
.require("dojo.date");
12 dojo
.require("dojo.cldr.supplemental");
13 dojo
.require("dojo.regexp");
14 dojo
.require("dojo.string");
15 dojo
.require("dojo.i18n");
16 dojo
.requireLocalization("dojo.cldr","gregorian",null,"ROOT,ar,ca,cs,da,de,el,en,en-au,en-ca,en-gb,es,fi,fr,he,hu,it,ja,ko,nb,nl,pl,pt,pt-pt,ru,sk,sl,sv,th,tr,zh,zh-tw");
18 function _1(_2
,_3
,_4
,_5
){
19 return _5
.replace(/([a-z])\1*/ig,function(_6
){
20 var s
,_7
,c
=_6
.charAt(0),l
=_6
.length
,_8
=["abbr","wide","narrow"];
23 s
=_3
[(l
<4)?"eraAbbr":"eraNames"][_2
.getFullYear()<0?0:1];
33 s
=s
.substr(s
.length
-2);
42 s
=Math
.ceil((_2
.getMonth()+1)/3);
51 var _9
=["months","format",_8
[l
-3]].join("-");
57 s
=dojo
.date
.locale
._getWeekOfYear(_2
,_a
);
65 s
=dojo
.date
.locale
._getDayOfYear(_2
);
74 var _b
=["days","format",_8
[l
-3]].join("-");
79 var _c
=(_2
.getHours()<12)?"am":"pm";
80 s
=_3
["dayPeriods-format-wide-"+_c
];
112 s
=Math
.round(_2
.getMilliseconds()*Math
.pow(10,l
-3));
117 s
=dojo
.date
.locale
._getZone(_2
,true,_4
);
123 var _d
=dojo
.date
.locale
._getZone(_2
,false,_4
);
124 var tz
=[(_d
<=0?"+":"-"),dojo
.string
.pad(Math
.floor(Math
.abs(_d
)/60),2),dojo
.string
.pad(Math
.abs(_d
)%60,2)];
126 tz
.splice(0,0,"GMT");
132 throw new Error("dojo.date.locale.format: invalid pattern char: "+_5
);
135 s
=dojo
.string
.pad(s
,l
);
140 dojo
.date
.locale
._getZone=function(_e
,_f
,_10
){
142 return dojo
.date
.getTimezoneName(_e
);
144 return _e
.getTimezoneOffset();
147 dojo
.date
.locale
.format=function(_11
,_12
){
149 var _13
=dojo
.i18n
.normalizeLocale(_12
.locale
),_14
=_12
.formatLength
||"short",_15
=dojo
.date
.locale
._getGregorianBundle(_13
),str
=[],_16
=dojo
.hitch(this,_1
,_11
,_15
,_12
);
150 if(_12
.selector
=="year"){
151 return _17(_15
["dateFormatItem-yyyy"]||"yyyy",_16
);
154 if(_12
.selector
!="date"){
155 _18
=_12
.timePattern
||_15
["timeFormat-"+_14
];
157 str
.push(_17(_18
,_16
));
160 if(_12
.selector
!="time"){
161 _18
=_12
.datePattern
||_15
["dateFormat-"+_14
];
163 str
.push(_17(_18
,_16
));
166 return str
.length
==1?str
[0]:_15
["dateTimeFormat-"+_14
].replace(/\{(\d+)\}/g,function(_19
,key
){
170 dojo
.date
.locale
.regexp=function(_1a
){
171 return dojo
.date
.locale
._parseInfo(_1a
).regexp
;
173 dojo
.date
.locale
._parseInfo=function(_1b
){
175 var _1c
=dojo
.i18n
.normalizeLocale(_1b
.locale
),_1d
=dojo
.date
.locale
._getGregorianBundle(_1c
),_1e
=_1b
.formatLength
||"short",_1f
=_1b
.datePattern
||_1d
["dateFormat-"+_1e
],_20
=_1b
.timePattern
||_1d
["timeFormat-"+_1e
],_21
;
176 if(_1b
.selector
=="date"){
179 if(_1b
.selector
=="time"){
182 _21
=_1d
["dateTimeFormat-"+_1e
].replace(/\{(\d+)\}/g,function(_22
,key
){
183 return [_20
,_1f
][key
];
187 var _23
=[],re
=_17(_21
,dojo
.hitch(this,_24
,_23
,_1d
,_1b
));
188 return {regexp
:re
,tokens
:_23
,bundle
:_1d
};
190 dojo
.date
.locale
.parse=function(_25
,_26
){
191 var _27
=dojo
.date
.locale
._parseInfo(_26
),_28
=_27
.tokens
,_29
=_27
.bundle
,re
=new RegExp("^"+_27
.regexp
+"$",_27
.strict
?"":"i"),_2a
=re
.exec(_25
);
195 var _2b
=["abbr","wide","narrow"],_2c
=[1970,0,1,0,0,0,0],_2d
="",_2e
=dojo
.every(_2a
,function(v
,i
){
201 switch(_2f
.charAt(0)){
203 if(l
!=2&&_26
.strict
){
208 var _30
=""+new Date().getFullYear(),_31
=_30
.substring(0,2)*100,_32
=Math
.min(Number(_30
.substring(2,4))+20,99),num
=(v
<_32
)?_31
+v
:_31
-100+v
;
220 var _33
=_29
["months-format-"+_2b
[l
-3]].concat();
222 v
=v
.replace(".","").toLowerCase();
223 _33
=dojo
.map(_33
,function(s
){
224 return s
.replace(".","").toLowerCase();
227 v
=dojo
.indexOf(_33
,v
);
238 var _34
=_29
["days-format-"+_2b
[l
-3]].concat();
241 _34
=dojo
.map(_34
,function(d
){
242 return d
.toLowerCase();
245 v
=dojo
.indexOf(_34
,v
);
256 var am
=_26
.am
||_29
["dayPeriods-format-wide-am"],pm
=_26
.pm
||_29
["dayPeriods-format-wide-pm"];
259 v
=v
.replace(_35
,"").toLowerCase();
260 am
=am
.replace(_35
,"").toLowerCase();
261 pm
=pm
.replace(_35
,"").toLowerCase();
263 if(_26
.strict
&&v
!=am
&&v
!=pm
){
266 _2d
=(v
==pm
)?"p":(v
==am
)?"a":"";
292 if(_2d
==="p"&&_36
<12){
295 if(_2d
==="a"&&_36
==12){
299 var _37
=new Date(_2c
[0],_2c
[1],_2c
[2],_2c
[3],_2c
[4],_2c
[5],_2c
[6]);
301 _37
.setFullYear(_2c
[0]);
303 var _38
=_28
.join(""),_39
=_38
.indexOf("d")!=-1,_3a
=_38
.indexOf("M")!=-1;
304 if(!_2e
||(_3a
&&_37
.getMonth()>_2c
[1])||(_39
&&_37
.getDate()>_2c
[2])){
307 if((_3a
&&_37
.getMonth()<_2c
[1])||(_39
&&_37
.getDate()<_2c
[2])){
308 _37
=dojo
.date
.add(_37
,"hour",1);
312 function _17(_3b
,_3c
,_3d
,_3e
){
319 var _40
=_3b
.match(/(''|[^'])+/g),_41
=_3b
.charAt(0)=="'";
320 dojo
.forEach(_40
,function(_42
,i
){
324 _40
[i
]=(_41
?_3d
:_3c
)(_42
.replace(/''/g,"'"));
328 return _3e(_40
.join(""));
330 function _24(_43
,_44
,_45
,_46
){
331 _46
=dojo
.regexp
.escapeString(_46
);
333 _46
=_46
.replace(" a"," ?a");
335 return _46
.replace(/([a-z])\1*/ig,function(_47
){
336 var s
,c
=_47
.charAt(0),l
=_47
.length
,p2
="",p3
="";
339 p2
="0"+"{"+(l
-1)+"}";
342 p3
="0"+"{"+(l
-2)+"}";
353 s
=(l
>2)?"\\S+?":p2
+"[1-9]|1[0-2]";
356 s
=p2
+"[1-9]|"+p3
+"[1-9][0-9]|[12][0-9][0-9]|3[0-5][0-9]|36[0-6]";
359 s
="3[01]|[12]\\d|"+p2
+"[1-9]";
362 s
=p2
+"[1-9]|[1-4][0-9]|5[0-3]";
374 s
=p2
+"\\d|1\\d|2[0-3]";
377 s
=p2
+"[1-9]|1\\d|2[0-4]";
387 var am
=_45
.am
||_44
["dayPeriods-format-wide-am"],pm
=_45
.pm
||_44
["dayPeriods-format-wide-pm"];
392 if(am
!=am
.toLowerCase()){
393 s
+="|"+am
.toLowerCase();
395 if(pm
!=pm
.toLowerCase()){
396 s
+="|"+pm
.toLowerCase();
398 if(s
.indexOf(".")!=-1){
399 s
+="|"+s
.replace(/\./g,"");
402 s
=s
.replace(/\./g,"\\.");
411 }).replace(/[\xa0 ]/g,"[\\s\\xa0]");
416 dojo
.date
.locale
.addCustomFormats=function(_49
,_4a
){
417 _48
.push({pkg
:_49
,name
:_4a
});
419 dojo
.date
.locale
._getGregorianBundle=function(_4b
){
421 dojo
.forEach(_48
,function(_4d
){
422 var _4e
=dojo
.i18n
.getLocalization(_4d
.pkg
,_4d
.name
,_4b
);
423 _4c
=dojo
.mixin(_4c
,_4e
);
428 dojo
.date
.locale
.addCustomFormats("dojo.cldr","gregorian");
429 dojo
.date
.locale
.getNames=function(_4f
,_50
,_51
,_52
){
430 var _53
,_54
=dojo
.date
.locale
._getGregorianBundle(_52
),_55
=[_4f
,_51
,_50
];
431 if(_51
=="standAlone"){
432 var key
=_55
.join("-");
439 return (_53
||_54
[_55
.join("-")]).concat();
441 dojo
.date
.locale
.isWeekend=function(_56
,_57
){
442 var _58
=dojo
.cldr
.supplemental
.getWeekend(_57
),day
=(_56
||new Date()).getDay();
443 if(_58
.end
<_58
.start
){
449 return day
>=_58
.start
&&day
<=_58
.end
;
451 dojo
.date
.locale
._getDayOfYear=function(_59
){
452 return dojo
.date
.difference(new Date(_59
.getFullYear(),0,1,_59
.getHours()),_59
)+1;
454 dojo
.date
.locale
._getWeekOfYear=function(_5a
,_5b
){
455 if(arguments
.length
==1){
458 var _5c
=new Date(_5a
.getFullYear(),0,1).getDay(),adj
=(_5c
-_5b
+7)%7,_5d
=Math
.floor((dojo
.date
.locale
._getDayOfYear(_5a
)+adj
-1)/7);