123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166 |
- jsworld.Locale = function(properties) {
-
- // LC_NUMERIC
-
- this.frac_digits = properties.frac_digits;
-
-
- // may be empty string/null for currencies with no fractional part
- if (properties.mon_decimal_point === null || properties.mon_decimal_point == "") {
-
- if (this.frac_digits > 0)
- throw "Error: Undefined mon_decimal_point property";
- else
- properties.mon_decimal_point = "";
- }
-
- if (typeof properties.mon_decimal_point != "string")
- throw "Error: Invalid/missing mon_decimal_point property";
-
- this.mon_decimal_point = properties.mon_decimal_point;
-
-
- if (typeof properties.mon_thousands_sep != "string")
- throw "Error: Invalid/missing mon_thousands_sep property";
-
- this.mon_thousands_sep = properties.mon_thousands_sep;
-
-
- if (typeof properties.mon_grouping != "string")
- throw "Error: Invalid/missing mon_grouping property";
-
- this.mon_grouping = properties.mon_grouping;
-
-
- if (typeof properties.positive_sign != "string")
- throw "Error: Invalid/missing positive_sign property";
-
- this.positive_sign = properties.positive_sign;
-
-
- if (typeof properties.negative_sign != "string")
- throw "Error: Invalid/missing negative_sign property";
-
- this.negative_sign = properties.negative_sign;
-
-
- if (properties.p_cs_precedes !== 0 && properties.p_cs_precedes !== 1)
- throw "Error: Invalid/missing p_cs_precedes property, must be 0 or 1";
-
- this.p_cs_precedes = properties.p_cs_precedes;
-
-
- if (properties.n_cs_precedes !== 0 && properties.n_cs_precedes !== 1)
- throw "Error: Invalid/missing n_cs_precedes, must be 0 or 1";
-
- this.n_cs_precedes = properties.n_cs_precedes;
-
- if (properties.p_sep_by_space !== 0 &&
- properties.p_sep_by_space !== 1 &&
- properties.p_sep_by_space !== 2)
- throw "Error: Invalid/missing p_sep_by_space property, must be 0, 1 or 2";
-
- this.p_sep_by_space = properties.p_sep_by_space;
-
- if (properties.n_sep_by_space !== 0 &&
- properties.n_sep_by_space !== 1 &&
- properties.n_sep_by_space !== 2)
- throw "Error: Invalid/missing n_sep_by_space property, must be 0, 1, or 2";
-
- this.n_sep_by_space = properties.n_sep_by_space;
-
- if (properties.p_sign_posn !== 0 &&
- properties.p_sign_posn !== 1 &&
- properties.p_sign_posn !== 2 &&
- properties.p_sign_posn !== 3 &&
- properties.p_sign_posn !== 4)
- throw "Error: Invalid/missing p_sign_posn property, must be 0, 1, 2, 3 or 4";
-
- this.p_sign_posn = properties.p_sign_posn;
- if (properties.n_sign_posn !== 0 &&
- properties.n_sign_posn !== 1 &&
- properties.n_sign_posn !== 2 &&
- properties.n_sign_posn !== 3 &&
- properties.n_sign_posn !== 4)
- throw "Error: Invalid/missing n_sign_posn property, must be 0, 1, 2, 3 or 4";
-
- this.n_sign_posn = properties.n_sign_posn;
- if (typeof properties.int_frac_digits != "number" && properties.int_frac_digits < 0)
- throw "Error: Invalid/missing int_frac_digits property";
- this.int_frac_digits = properties.int_frac_digits;
-
-
- if (properties.int_p_cs_precedes !== 0 && properties.int_p_cs_precedes !== 1)
- throw "Error: Invalid/missing int_p_cs_precedes property, must be 0 or 1";
-
- this.int_p_cs_precedes = properties.int_p_cs_precedes;
-
-
- if (properties.int_n_cs_precedes !== 0 && properties.int_n_cs_precedes !== 1)
- throw "Error: Invalid/missing int_n_cs_precedes property, must be 0 or 1";
-
- this.int_n_cs_precedes = properties.int_n_cs_precedes;
-
- if (properties.int_p_sep_by_space !== 0 &&
- properties.int_p_sep_by_space !== 1 &&
- properties.int_p_sep_by_space !== 2)
- throw "Error: Invalid/missing int_p_sep_by_spacev, must be 0, 1 or 2";
-
- this.int_p_sep_by_space = properties.int_p_sep_by_space;
- if (properties.int_n_sep_by_space !== 0 &&
- properties.int_n_sep_by_space !== 1 &&
- properties.int_n_sep_by_space !== 2)
- throw "Error: Invalid/missing int_n_sep_by_space property, must be 0, 1, or 2";
-
- this.int_n_sep_by_space = properties.int_n_sep_by_space;
-
- if (properties.int_p_sign_posn !== 0 &&
- properties.int_p_sign_posn !== 1 &&
- properties.int_p_sign_posn !== 2 &&
- properties.int_p_sign_posn !== 3 &&
- properties.int_p_sign_posn !== 4)
- throw "Error: Invalid/missing int_p_sign_posn property, must be 0, 1, 2, 3 or 4";
-
- this.int_p_sign_posn = properties.int_p_sign_posn;
-
-
- if (properties.int_n_sign_posn !== 0 &&
- properties.int_n_sign_posn !== 1 &&
- properties.int_n_sign_posn !== 2 &&
- properties.int_n_sign_posn !== 3 &&
- properties.int_n_sign_posn !== 4)
- throw "Error: Invalid/missing int_n_sign_posn property, must be 0, 1, 2, 3 or 4";
- this.int_n_sign_posn = properties.int_n_sign_posn;
-
-
- // LC_TIME
-
- if (properties == null || typeof properties != "object")
- throw "Error: Invalid/missing time locale properties";
-
-
- // parse the supported POSIX LC_TIME properties
-
- // abday
- try {
- this.abday = this._parseList(properties.abday, 7);
- }
- catch (error) {
- throw "Error: Invalid abday property: " + error;
- }
-
- }
|