diff options
| author | Tristan Zur <tzur@web.web.ccwn.org> | 2014-03-27 22:27:47 +0100 |
|---|---|---|
| committer | Tristan Zur <tzur@web.web.ccwn.org> | 2014-03-27 22:27:47 +0100 |
| commit | b62676ca5d3d6f6ba3f019ea3f99722e165a98d8 (patch) | |
| tree | 86722cb80f07d4569f90088eeaea2fc2f6e2ef94 /js/dojo/dojox/date/hebrew/numerals.js | |
Diffstat (limited to 'js/dojo/dojox/date/hebrew/numerals.js')
| -rw-r--r-- | js/dojo/dojox/date/hebrew/numerals.js | 141 |
1 files changed, 141 insertions, 0 deletions
diff --git a/js/dojo/dojox/date/hebrew/numerals.js b/js/dojo/dojox/date/hebrew/numerals.js new file mode 100644 index 0000000..f561002 --- /dev/null +++ b/js/dojo/dojox/date/hebrew/numerals.js @@ -0,0 +1,141 @@ +//>>built +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; +}); |
