123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 |
- define("dojox/date/hebrew/numerals", ["dojo/_base/kernel", "dojo/_base/array"], function(dojo){
- dojo.getObject("date.hebrew.numerals", true, dojox);
- dojo.experimental("dojox.date.hebrew.numerals");
- //Conversion from "Hindi" numerals to Hebrew numerals and vice versa
- var DIG="אבגדהוזחט";
- var TEN="יכלמנסעפצ";
- var HUN="קרשת";
- var transformChars = function(str, nogrsh){
- str = str.replace("יה", "טו").replace("יו", "טז");
- if(!nogrsh){
- var len = str.length;
- if(len > 1){
- str = str.substr(0, len - 1) + '"' + str.charAt(len - 1);
- }else{
- str += "\u05F3"; // 05F3:geresh
- }
- }
- return str; // String
- };
-
- var parseStrToNumber = function(str){
- var num = 0;
- dojo.forEach(str, function(ch){
- var i;
- if((i = DIG.indexOf(ch)) != -1){
- num += ++i;
- }else if((i = TEN.indexOf(ch)) != -1){
- num += 10 * ++i;
- }else if((i = HUN.indexOf(ch)) != -1){
- num += 100 * ++i;
- }
- });
- return num; //Number
- };
-
- var convertNumberToStr = function(num){
- var str = "", n = 4, j = 9;
- while(num){
- if(num >= n*100){
- str += HUN.charAt(n-1);
- num -= n*100;
- continue;
- }else if(n > 1){
- n--;
- continue;
- }else if(num >= j*10){
- str += TEN.charAt(j-1);
- num -= j*10;
- }else if(j > 1){
- j--;
- continue;
- }else if(num > 0){
- str += DIG.charAt(num-1);
- num = 0;
- }
- }
- return str; //String
- };
- dojox.date.hebrew.numerals.getYearHebrewLetters = function(/*Number */ year){
- // summary: converts the year from an integer to Hebrew numerals.
- //
- // example:
- // | var date1 = new dojox.date.hebrew.Date();
- // |
- // | document.writeln(dojox.date.hebrew.numerals.getYearHebrewLetters(date1.getFullYear());
-
- var rem = year % 1000;
- //FIXME: tests include dates outside this range and seem to pass.
- // if((year - rem) / 1000 != 5){ throw new Error("Hebrew year "+year+" is not in range 5001-5999");}
- return transformChars(convertNumberToStr(rem)); // String
- };
-
- dojox.date.hebrew.numerals.parseYearHebrewLetters = function(/*String hebrew year*/ year){
- // summary: converts the year written in Hebrew numerals to an integer
- //
- // example:
- // | var date = new dojox.date.hebrew.Date();
- // | date.setFullYear(dojox.date.hebrew.numerals.parseYearHebrewLetters('\u05ea\u05e9\u05e1\u05f4\u05d7'));
- return parseStrToNumber(year) + 5000; // int
- };
-
- dojox.date.hebrew.numerals.getDayHebrewLetters = function(day, /*boolean?*/ nogrsh){
- // summary: converts an integer to a String representing the number in Hebrew numerals. Can be formatted with or without geresh ׳
- //
- // example:
- // | var date1 = new dojox.date.hebrew.Date();
- // |
- // | document.writeln(dojox.date.hebrew.numerals.getDayHebrewLetters(date1.getDay());
- return transformChars(convertNumberToStr(day), nogrsh); // String
- };
-
- dojox.date.hebrew.numerals.parseDayHebrewLetters = function(/*String hebrew*/ day){
- // summary: converts the string containing a Hebrew numeral to an integer
- //
- // example:
- // | var date1 = new dojox.date.hebrew.Date();
- // |
- // | date1.setDate(dojox.date.hebrew.numerals.parseDayHebrewLetters('\u05d0')); // ALEPH
- return parseStrToNumber(day); // int
- };
- dojox.date.hebrew.numerals.getMonthHebrewLetters = function(/*int*/month){
- // summary: converts an integer representing a month to a String written in Hebrew numerals
- //
- // example:
- // | var date1 = new dojox.date.hebrew.Date();
- // |
- // | document.writeln(dojox.date.hebrew.numerals.getMonthHebrewLetters(date1.getMonth());
- return transformChars(convertNumberToStr(month+1)); // String
- };
- dojox.date.hebrew.numerals.parseMonthHebrewLetters = function(/*String*/monthStr){
- // summary: converts a Hebrew numeral string representing
- // a month to an integer. The returned value
- // is indexed in the month name array. To use it for
- // setMonth, do correction for leap year
- //
- // example:
- // | var date = new dojox.date.hebrew.Date();
- // | var number = dojox.date.hebrew.numerals.parseMonthHebrewLetters("\u05ea\u05de\u05d5\u05d6"); // Tammuz
- // | date.setMonth(number);
-
- //month number from 0 to 12
- var monnum = dojox.date.hebrew.numerals.parseDayHebrewLetters(monthStr) - 1;
- if(monnum == -1 || monnum > 12){
- throw new Error("The month name is incorrect , month = " + monnum);
- }
- return monnum;
- };
- return dojox.date.hebrew.numerals;
- });
|