farsifu 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/lib/farsifu.rb CHANGED
@@ -1,459 +1,17 @@
1
1
  # encoding: UTF-8
2
2
 
3
+ require 'farsifu/constants'
4
+ require 'farsifu/convert'
5
+ require 'farsifu/num_to_word'
6
+ require 'farsifu/word_to_num'
7
+ require 'farsifu/punch'
8
+ require 'iran/iran'
9
+
3
10
  #:title: Farsifu
4
11
  module FarsiFu
5
-
6
- module NumbersExtensions
7
- module InstanceMethods
8
- # :stopdoc:
9
- if RUBY_VERSION < '1.9'
10
- require 'jcode'
11
- $KCODE = 'u'
12
- end
13
- PERSIAN_CHARS = "۱۲۳۴۵۶۷۸۹۰،؛"
14
- ENGLISH_CHARS = "1234567890,;"
15
- PERSIAN_DIGIT_JOINT = " و "
16
- PERSIAN_DIGIT_SIGN = ["منفی ", "مثبت ", " ممیز "]
17
- PERSIAN_DIGIT_SPELL = {
18
- 0 => [ nil ,"یک","دو","سه","چهار","پنج","شش","هفت","هشت","نه", "صفر"] ,
19
- 1 => [ nil ,"ده","بیست","سی","چهل","پنجاه","شصت","هفتاد","هشتاد","نود"],
20
- 2 => [ nil ,"صد","دویست","سیصد","چهارصد","پانصد","ششصد","هفتصد","هشتصد","نهصد"],
21
- "10..19" => [ "ده" ,"یازده","دوازده","سیزده","چهارده","پانزده","شانزده","هفده","هجده","نوزده"],
22
- "zillion" => [ nil ,"هزار","میلیون","میلیارد","بیلیون","تریلیون","کوادریلیون","کوینتیلیون","سیکستیلیون","سپتیلیون","اکتیلیون","نونیلیون","دسیلیون"],
23
- "decimals" => [ nil, "دهم", "صدم", "هزارم", "ده‌هزارم", "صدهزارم", "میلیونیم", "ده‌میلیونیم","صدمیلیونیم","میلیاردیم"]
24
- }
25
- # :startdoc:
26
-
27
- # Returns a string which is the equivalent English number of a Persian number (in String)
28
- #
29
- # Example:
30
- # "۱۲۳".to_english # => "123"
31
- def to_english
32
- self.to_s.tr(PERSIAN_CHARS,ENGLISH_CHARS)
33
- end
34
-
35
- # Returns a string which is the equivalent Persian number of an English number (in String)
36
- # accepts instances of String, Integer and Numeric classes (Fixnum,Bignum and floats are accepted)
37
- #
38
- # alias: to_persian
39
- #
40
- # Example:
41
- # "123".to_farsi # => "۱۲۳"
42
- # "456".to_persian # => "۴۵۶"
43
- # 789.to_farsi # => "۷۸۹"
44
- def to_farsi
45
- self.to_s.tr(ENGLISH_CHARS,PERSIAN_CHARS)
46
- end
47
- alias_method :to_persian, :to_farsi
48
-
49
- # Spells a number in Persian
50
- # accpets english numbers (in float,fixnum or string)
51
- #
52
- # Example:
53
- # 5678.spell_farsi # => "پنج هزار و ششصد و هفتاد و هشت"
54
- def spell_farsi
55
- # Distigushing the number (float and )
56
- if self.class == Float
57
- num_array = self.to_f.to_s.split(".").first.split(//).reverse
58
- dec_array = self.to_f.to_s.split(".").last.split(//).slice(0..9).compact.reverse
59
- dec_copy_b = dec_array.clone ; dec_copy_a = dec_array.clone
60
- result = spell(num_array)
61
- ( result += PERSIAN_DIGIT_SIGN[2] + spell(dec_array) + " " + PERSIAN_DIGIT_SPELL["decimals"][dec_copy_a.size].to_s ) unless [PERSIAN_DIGIT_SPELL[0][10],""].include? spell(dec_copy_b)
62
- return result
63
- else
64
- num_array = self.to_i.to_s.split(//).reverse
65
- return spell(num_array)
66
- end
67
- end
68
-
69
- # Spells numbers in sequentional format. If pass `true`, it will use the second format
70
- #
71
- # Example:
72
- # 1.spell_ordinal_farsi # => "اول"
73
- # 121.spell_ordinal_farsi # => "صد و بیست و یکم"
74
- # 2.spell_ordinal_farsi(true) # => "دومین"
75
- # 2054.spell_ordinal_farsi(true) # => "دو هزار و پنجاه چهارمین"
76
- def spell_ordinal_farsi(*args)
77
- if args[0]
78
- exceptions = {0 => "صفر", 1 => "اولین", 3 => "سومین"}
79
- suffix = "مین"
80
- else
81
- exceptions = {0 => "صفر", 1 => "اول", 3 => "سوم"}
82
- suffix = "م"
83
- end
84
-
85
- make_ordinal_spell(exceptions, suffix)
86
- end
87
-
88
- private #---------------------------------------------------------
89
- def spell(num_array)
90
- # Dealing with signs
91
- sign_m = num_array.include?("-") ? PERSIAN_DIGIT_SIGN[0] : ""
92
- sign_p = num_array.include?("+") ? PERSIAN_DIGIT_SIGN[1] : ""
93
- num_array.delete_at(num_array.index("-")) if sign_m.size > 0
94
- num_array.delete_at(num_array.index("+")) if sign_p.size > 0
95
- sign = sign_m + sign_p
96
-
97
- zillion = 0
98
- farsi_number = []
99
-
100
- # Dealing with Zero
101
- if (num_array.length == 1 && num_array[0] == "0" )
102
- farsi_number = [PERSIAN_DIGIT_SPELL[0][10]]
103
- num_array = []
104
- end
105
-
106
- while num_array.length > 0 do
107
- spelling = []
108
- num_array[0..2].each_with_index do |digit,index|
109
- spelling[index] = PERSIAN_DIGIT_SPELL[index][digit.to_i]
110
- if index == 1 && digit == "1" # Dealing with 10..19
111
- spelling[1] = PERSIAN_DIGIT_SPELL["10..19"][num_array[0].to_i]
112
- spelling[0] = nil
113
- end
114
- end
115
-
116
- 3.times { num_array.shift if num_array.length > 0 } # Eliminating the first 3 number of the array
117
- dig = spelling.reverse.compact.join(PERSIAN_DIGIT_JOINT)
118
- if dig.size > 0
119
- dig << (" " + PERSIAN_DIGIT_SPELL["zillion"][zillion].to_s)
120
- farsi_number.unshift(dig)
121
- end
122
-
123
- zillion += 1
124
- end # End of While
125
-
126
- sign + farsi_number.compact.join(PERSIAN_DIGIT_JOINT).strip
127
- end
128
-
129
- def make_ordinal_spell(exceptions, suffix)
130
- if exceptions.include? self
131
- exceptions[self]
132
- else
133
- (spell_farsi + suffix).gsub(/سه(م|مین)$/) { "سو#{$1}" }
134
- end
135
- end
136
-
137
- end
138
- end
139
-
140
- end
141
-
142
- # Defines some data structures related to Iran
143
- # ==== Provinces
144
- # An array of hashes with information about Iran's provinces. has these keys:
145
- # [:name] string in Persian
146
- # [:eng_name] string in English
147
- # [:capital] string in Persian
148
- # [:eng_capital] string in English
149
- # [:counties] array of county names in Persian
150
- #
151
- # ==== Countries
152
- # An array of hashes of the name of countries in the world in Persian and Eglish. has these keys:
153
- # [:iso2] two character code of the country
154
- # [:en] English name
155
- # [:fa] Persian name
156
- module Iran
157
-
158
12
  # :stopdoc:
159
- Provinces = [
160
- {:name => "آذربایجان شرقی" , :eng_name => "Azerbaijan, East", :capital => "تبریز", :eng_capital => "Tabriz", :counties => ["آذرشهر", "اسکو", "اهر", "بستان‌آباد", "بناب", "تبریز", "جلفا", "چاراویماق", "سراب", "شبستر", "عجب‌شیر", "کلیبر", "مراغه", "مرند", "ملکان", "میانه", "ورزقان", "هریس", "هشترود"]},
161
- {:name => "آذربایجان غربی" , :eng_name => "Azerbaijan, West", :capital => "ارومیه", :eng_capital => "Urmia", :counties => ["ارومیه", "اشنویه", "بوکان", "پلدشت", "پیرانشهر", "تکاب", "چالدران", "چایپاره", "خوی", "سردشت", "سلماس", "شاهین‌دژ", "شوط", "ماکو", "مهاباد", "میاندوآب", "نقده"]},
162
- {:name => "اردبیل" , :eng_name => "Ardabil", :capital => "اردبیل", :eng_capital => "Ardabil", :counties => ["اردبیل", "بیله‌سوار", "پارس‌آباد", "خلخال", "سرعین", "کوثر", "گرمی", "مشگین‌شهر", "نمین", "نیر"]},
163
- {:name => "اصفهان" , :eng_name => "Isfahan", :capital => "اصفهان", :eng_capital => "Isfahan", :counties => ["اردستان", "اصفهان", "برخوار", "تیران و کرون", "چادگان", "خمینی‌شهر", "خوانسار", "خور و بیابانک", "سمیرم", "شاهین‌شهر و میمه", "شهرضا", "دهاقان", "فریدن", "فریدون‌شهر", "فلاورجان", "كاشان", "گلپایگان", "لنجان", "مبارکه", "نایین", "نجف‌آباد", "نطنز"]},
164
- {:name => "ایلام" , :eng_name => "Ilam", :capital => "ایلام", :eng_capital => "Ilam", :counties => ["آبدانان", "ایلام", "ایوان", "دره‌شهر", "دهلران", "شیروان و چرداول", "ملکشاهی", "مهران"]},
165
- {:name => "بوشهر" , :eng_name => "Bushehr", :capital => "بوشهر", :eng_capital => "Bushehr", :counties => ["بوشهر", "تنگستان", "جم", "دشتستان", "دشتی", "دیر", "دیلم", "کنگان", "گناوه"]},
166
- {:name => "تهران" , :eng_name => "Tehran", :capital => "تهران", :eng_capital => "Tehran", :counties => ["اسلام‌شهر", "پاکدشت", "تهران", "دماوند", "رباط‌کریم", "ری", "ساوجبلاغ", "شمیرانات", "شهریار", "فیروزکوه", "قدس", "کرج", "ملارد", "نظرآباد", "ورامین"]},
167
- {:name => "چهارمحال و بختیاری" , :eng_name => "Chahar Mahaal and Bakhtiari",:capital => "شهرکرد", :eng_capital => "Shahrekord", :counties => ["اردل", "بروجن", "شهرکرد", "فارسان", "کوهرنگ", "کیار", "لردگان"]},
168
- {:name => "خراسان جنوبی" , :eng_name => "Khorasan, South", :capital => "بیرجند", :eng_capital => "Birjand", :counties => ["بشرویه", "بیرجند", "درمیان", "سرایان", "سربیشه", "فردوس", "قائنات", "نهبندان"]},
169
- {:name => "خراسان رضوی" , :eng_name => "Khorasan, Razavi", :capital => "مشهد", :eng_capital => "Mashhad", :counties => ["بردسکن", "بجستان", "تایباد", "تخت‌جلگه", "تربت جام", "تربت حیدریه", "چناران", "جغتای", "جوین", "خلیل‌آباد", "خواف", "درگز", "رشتخوار", "زاوه", "سبزوار", "سرخس", "فریمان", "قوچان", "طرقبه و شاندیز", "کاشمر", "کلات", "گناباد", "مشهد", "مه‌ولات", "نیشابور"]},
170
- {:name => "خراسان شمالی" , :eng_name => "Khorasan, North", :capital => "بجنورد", :eng_capital => "Bojnourd", :counties => ["اسفراین", "بجنورد", "جاجرم", "شیروان", "فاروج", "گرمه", "مانه و سملقان"]},
171
- {:name => "خوزستان" , :eng_name => "Khuzestan", :capital => "اهواز", :eng_capital => "Ahvaz", :counties => ["آبادان", "امیدیه", "اندیکا", "اندیمشک", "اهواز", "ایذه", "باغ‌ملک", "بهبهان", "خرمشهر", "دزفول", "دشت آزادگان", "رامشیر", "رامهرمز", "شادگان", "شوش", "شوشتر", "گتوند", "لالی", "ماهشهر", "مسجدسلیمان", "هفتگل", "هندیجان", "هویزه"]},
172
- {:name => "زنجان" , :eng_name => "Zanjan", :capital => "زنجان", :eng_capital => "Zanjan", :counties => ["ابهر", "ایجرود", "خدابنده", "خرمدره", "زنجان", "طارم", "ماه‌نشان"]},
173
- {:name => "سمنان" , :eng_name => "Semnan", :capital => "سمنان", :eng_capital => "Semnan", :counties => ["دامغان", "سمنان", "شاهرود", "گرمسار", "مهدی‌شهر"]},
174
- {:name => "سیستان و بلوچستان" , :eng_name => "Sistan and Baluchistan", :capital => "زاهدان", :eng_capital => "Zahedan", :counties => ["ایرانشهر", "چابهار", "خاش", "دلگان", "زابل", "زابلی", "زاهدان", "زهک", "سراوان", "سرباز", "سیب و سوران", "کنارک", "نیک‌شهر", "هیرمند"]},
175
- {:name => "فارس" , :eng_name => "Fars", :capital => "شیراز", :eng_capital => "Shiraz", :counties => ["آباده", "ارسنجان", "استهبان", "اقلید", "بوانات", "پاسارگاد", "جهرم", "خرم‌بید", "خنج", "داراب", "رستم", "زرین‌دشت", "سپیدان", "سروستان", "شیراز", "فراشبند", "فسا", "فیروزآباد", "قیر و کارزین", "کازرون", "گراش", "لارستان", "لامرد", "مرودشت", "ممسنی", "مهر", "نی‌ریز"]},
176
- {:name => "قزوین" , :eng_name => "Qazvin", :capital => "قزوین", :eng_capital => "Qazvin", :counties => ["آبیک", "البرز", "بویین‌زهرا", "تاکستان", "قزوین"]},
177
- {:name => "قم" , :eng_name => "Qom", :capital => "قم", :eng_capital => "Qom", :counties => ["قم"]},
178
- {:name => "کردستان" , :eng_name => "Kurdistan", :capital => "سنندج", :eng_capital => "Sanandaj", :counties => ["بانه", "بیجار", "دهگلان", "دیواندره", "سروآباد", "سقز", "سنندج", "قروه", "کامیاران", "مریوان"]},
179
- {:name => "کرمان" , :eng_name => "Kerman", :capital => "کرمان", :eng_capital => "Kerman", :counties => ["بافت", "بردسیر", "بم", "جیرفت", "رابر", "راور", "رفسنجان", "رودبار جنوب", "زرند", "سیرجان", "شهر بابک", "عنبرآباد", "فهرج", "قلعه گنج", "کرمان", "کوهبنان", "کهنوج", "منوجان"]},
180
- {:name => "کرمانشاه" , :eng_name => "Kermanshah", :capital => "کرمانشاه",:eng_capital => "Kermanshah", :counties => ["اسلام‌آباد غرب", "پاوه", "ثلاث باباجانی", "جوانرود", "دالاهو", "روانسر", "سرپل ذهاب", "سنقر", "صحنه", "قصر شیرین", "کرمانشاه", "کنگاور", "گیلان غرب", "هرسین"]},
181
- {:name => "کهگیلویه و بویراحمد", :eng_name => "Kohgiluyeh and Boyer-Ahmad", :capital => "یاسوج", :eng_capital => "Yasuj", :counties => ["بویراحمد", "بهمئی", "دنا", "کهگیلویه", "گچساران"]},
182
- {:name => "گلستان" , :eng_name => "Golestan", :capital => "گرگان", :eng_capital => "Gorgan", :counties => ["آزادشهر", "آق‌قلا", "بندر گز", "ترکمن", "رامیان", "علی‌آباد", "کردکوی", "کلاله", "گرگان", "گنبد کاووس", "مراوه‌تپه", "مینودشت"]},
183
- {:name => "گیلان" , :eng_name => "Gilan", :capital => "رشت", :eng_capital => "Rasht", :counties => ["آستارا", "آستانه اشرفیه", "املش", "بندر انزلی", "رشت", "رضوان‌شهر", "رودبار زیتون", "رودسر", "سیاهکل", "شفت", "صومعه‌سرا", "طوالش", "فومن", "لاهیجان", "لنگرود", "ماسال"]},
184
- {:name => "لرستان" , :eng_name => "Lorestan", :capital => "خرم آباد",:eng_capital => "Khorramabad", :counties => ["ازنا", "الیگودرز", "بروجرد", "پل‌دختر", "خرم‌آباد", "دورود", "دوره", "دلفان", "سلسله", "کوهدشت"]},
185
- {:name => "مازندران" , :eng_name => "Mazandaran", :capital => "ساری", :eng_capital => "Sari", :counties => ["آمل", "بابل", "بابلسر", "بهشهر", "تنکابن", "جویبار", "چالوس", "رامسر", "ساری", "سوادکوه", "فریدون‌کنار", "قائم‌شهر", "گلوگاه", "محمودآباد", "نکا", "نور", "نوشهر"]},
186
- {:name => "مرکزی" , :eng_name => "Markazi", :capital => "اراک", :eng_capital => "Arak", :counties => ["آشتیان", "اراک", "تفرش", "خمین", "خنداب", "دلیجان", "زرندیه", "ساوه", "شازند", "کمیجان", "محلات"]},
187
- {:name => "هرمزگان" , :eng_name => "Hormozgan", :capital => "بندرعباس",:eng_capital => "Bandar Abbas",:counties => ["ابوموسی", "بستک", "بندر عباس", "بندر لنگه", "پارسیان", "جاسک", "حاجی‌آباد", "خمیر", "رودان", "قشم", "میناب"]},
188
- {:name => "همدان" , :eng_name => "Hamadan", :capital => "همدان", :eng_capital => "Hamadan", :counties => ["اسدآباد", "بهار", "تویسرکان", "رزن", "فامنین", "کبودرآهنگ", "ملایر", "نهاوند", "همدان"]},
189
- {:name => "یزد" , :eng_name => "Yazd", :capital => "یزد", :eng_capital => "Yazd", :counties => ["ابرکوه", "اردکان", "بافق", "بهاباد", "تفت", "خاتم", "صدوق", "طبس", "مهریز", "میبد", "یزد"]},
190
- ]
191
-
192
- Countries = [
193
- { :iso2 => 'AC', :fa => 'جزایر آسنسیون', :en => 'Ascension Island' },
194
- { :iso2 => 'AD', :fa => 'آندورا', :en => 'Andorra' },
195
- { :iso2 => 'AE', :fa => 'امارات متحدهٔ عربی', :en => 'United Arab Emirates' },
196
- { :iso2 => 'AF', :fa => 'افغانستان', :en => 'Afghanistan' },
197
- { :iso2 => 'AG', :fa => 'آنتيگوآ و باربودا', :en => 'Antigua and Barbuda' },
198
- { :iso2 => 'AI', :fa => 'آنگیل', :en => 'Anguilla' },
199
- { :iso2 => 'AL', :fa => 'آلبانی', :en => 'Albania' },
200
- { :iso2 => 'AM', :fa => 'ارمنستان', :en => 'Armenia' },
201
- { :iso2 => 'AN', :fa => 'آنتیل هلند', :en => 'Netherlands Antilles' },
202
- { :iso2 => 'AO', :fa => 'آنگولا', :en => 'Angola' },
203
- { :iso2 => 'AQ', :fa => 'قطب جنوب', :en => 'Antarctica' },
204
- { :iso2 => 'AR', :fa => 'آرژانتین', :en => 'Argentina' },
205
- { :iso2 => 'AS', :fa => 'ساموای امریکا', :en => 'American Samoa' },
206
- { :iso2 => 'AT', :fa => 'اتریش', :en => 'Austria' },
207
- { :iso2 => 'AU', :fa => 'استرالیا', :en => 'Australia' },
208
- { :iso2 => 'AW', :fa => 'آروبا', :en => 'Aruba' },
209
- { :iso2 => 'AX', :fa => 'جزایر آلاند', :en => 'Åland Islands' },
210
- { :iso2 => 'AZ', :fa => 'جمهوری آذربایجان', :en => 'Azerbaijan' },
211
- { :iso2 => 'BA', :fa => 'بوسنی و هرزگوین', :en => 'Bosnia and Herzegovina' },
212
- { :iso2 => 'BB', :fa => 'باربادوس', :en => 'Barbados' },
213
- { :iso2 => 'BD', :fa => 'بنگلادش', :en => 'Bangladesh' },
214
- { :iso2 => 'BE', :fa => 'بلژیک', :en => 'Belgium' },
215
- { :iso2 => 'BF', :fa => 'بورکینافاسو', :en => 'Burkina Faso' },
216
- { :iso2 => 'BG', :fa => 'بلغارستان', :en => 'Bulgaria' },
217
- { :iso2 => 'BH', :fa => 'بحرین', :en => 'Bahrain' },
218
- { :iso2 => 'BI', :fa => 'بروندی', :en => 'Burundi' },
219
- { :iso2 => 'BJ', :fa => 'بنین', :en => 'Benin' },
220
- { :iso2 => 'BL', :fa => 'سنت بارتلیمی', :en => 'Saint Barthélemy' },
221
- { :iso2 => 'BM', :fa => 'برمودا', :en => 'Bermuda' },
222
- { :iso2 => 'BN', :fa => 'برونئی', :en => 'Brunei' },
223
- { :iso2 => 'BO', :fa => 'بولیوی', :en => 'Bolivia' },
224
- { :iso2 => 'BR', :fa => 'برزیل', :en => 'Brazil' },
225
- { :iso2 => 'BS', :fa => 'باهاما', :en => 'Bahamas' },
226
- { :iso2 => 'BT', :fa => 'بوتان', :en => 'Bhutan' },
227
- { :iso2 => 'BV', :fa => 'جزیره بووت', :en => 'Bouvet Island' },
228
- { :iso2 => 'BW', :fa => 'بوتسوانا', :en => 'Botswana' },
229
- { :iso2 => 'BY', :fa => 'بیلوروسی', :en => 'Belarus' },
230
- { :iso2 => 'BZ', :fa => 'بلیز', :en => 'Belize' },
231
- { :iso2 => 'CA', :fa => 'کانادا', :en => 'Canada' },
232
- { :iso2 => 'CC', :fa => 'جزایر کوکوس', :en => 'Cocos [Keeling] Islands' },
233
- { :iso2 => 'CD', :fa => 'کنگو - جمهوری دموکراتیک', :en => 'Congo [DRC]' },
234
- { :iso2 => 'CF', :fa => 'جمهوری افریقای مرکزی', :en => 'Central African Republic' },
235
- { :iso2 => 'CG', :fa => 'CG', :en => 'Congo [Republic]' },
236
- { :iso2 => 'CH', :fa => 'سوئیس', :en => 'Switzerland' },
237
- { :iso2 => 'CI', :fa => 'ساحل عاج', :en => 'Ivory Coast' },
238
- { :iso2 => 'CK', :fa => 'جزایر کوک', :en => 'Cook Islands' },
239
- { :iso2 => 'CL', :fa => 'شیلی', :en => 'Chile' },
240
- { :iso2 => 'CM', :fa => 'کامرون', :en => 'Cameroon' },
241
- { :iso2 => 'CN', :fa => 'چین', :en => 'China' },
242
- { :iso2 => 'CO', :fa => 'کلمبیا', :en => 'Colombia' },
243
- { :iso2 => 'CP', :fa => 'جزایر کلیپرتون', :en => 'Clipperton Island' },
244
- { :iso2 => 'CR', :fa => 'کاستاریکا', :en => 'Costa Rica' },
245
- { :iso2 => 'CS', :fa => 'صربستان و مونته‌نگرو', :en => 'Serbia and Montenegro' },
246
- { :iso2 => 'CU', :fa => 'کوبا', :en => 'Cuba' },
247
- { :iso2 => 'CV', :fa => 'کیپ ورد', :en => 'Cape Verde' },
248
- { :iso2 => 'CX', :fa => 'جزیرهٔ کریسمس', :en => 'Christmas Island' },
249
- { :iso2 => 'CY', :fa => 'قبرس', :en => 'Cyprus' },
250
- { :iso2 => 'CZ', :fa => 'جمهوری چک', :en => 'Czech Republic' },
251
- { :iso2 => 'DE', :fa => 'آلمان', :en => 'Germany' },
252
- { :iso2 => 'DG', :fa => 'دیه گو گارسیا', :en => 'Diego Garcia' },
253
- { :iso2 => 'DJ', :fa => 'جیبوتی', :en => 'Djibouti' },
254
- { :iso2 => 'DK', :fa => 'دانمارک', :en => 'Denmark' },
255
- { :iso2 => 'DM', :fa => 'دومینیک', :en => 'Dominica' },
256
- { :iso2 => 'DO', :fa => 'جمهوری دومینیکن', :en => 'Dominican Republic' },
257
- { :iso2 => 'DZ', :fa => 'الجزایر', :en => 'Algeria' },
258
- { :iso2 => 'EA', :fa => 'کوتا و میللا', :en => 'Ceuta and Melilla' },
259
- { :iso2 => 'EC', :fa => 'اكوادور', :en => 'Ecuador' },
260
- { :iso2 => 'EE', :fa => 'استونی', :en => 'Estonia' },
261
- { :iso2 => 'EG', :fa => 'مصر', :en => 'Egypt' },
262
- { :iso2 => 'EH', :fa => 'صحرای غربی', :en => 'Western Sahara' },
263
- { :iso2 => 'ER', :fa => 'اریتره', :en => 'Eritrea' },
264
- { :iso2 => 'ES', :fa => 'اسپانیا', :en => 'Spain' },
265
- { :iso2 => 'ET', :fa => 'اتیوپی', :en => 'Ethiopia' },
266
- { :iso2 => 'EU', :fa => 'EU', :en => 'EU' },
267
- { :iso2 => 'FI', :fa => 'فنلاند', :en => 'Finland' },
268
- { :iso2 => 'FJ', :fa => 'فیجی', :en => 'Fiji' },
269
- { :iso2 => 'FK', :fa => 'جزایر فالکلند -ایسلاس مالویناس', :en => 'Falkland Islands [Islas Malvinas]' },
270
- { :iso2 => 'FM', :fa => 'میکرونزی', :en => 'Micronesia' },
271
- { :iso2 => 'FO', :fa => 'جزایر فارو', :en => 'Faroe Islands' },
272
- { :iso2 => 'FR', :fa => 'فرانسه', :en => 'France' },
273
- { :iso2 => 'GA', :fa => 'گابون', :en => 'Gabon' },
274
- { :iso2 => 'GB', :fa => 'بریتانیا', :en => 'United Kingdom' },
275
- { :iso2 => 'GD', :fa => 'گرانادا', :en => 'Grenada' },
276
- { :iso2 => 'GE', :fa => 'گرجستان', :en => 'Georgia' },
277
- { :iso2 => 'GF', :fa => 'گویان فرانسه', :en => 'French Guiana' },
278
- { :iso2 => 'GG', :fa => 'گرنزی', :en => 'Guernsey' },
279
- { :iso2 => 'GH', :fa => 'غنا', :en => 'Ghana' },
280
- { :iso2 => 'GI', :fa => 'جبل‌الطارق', :en => 'Gibraltar' },
281
- { :iso2 => 'GL', :fa => 'گرینلند', :en => 'Greenland' },
282
- { :iso2 => 'GM', :fa => 'گامبیا', :en => 'Gambia' },
283
- { :iso2 => 'GN', :fa => 'گینه', :en => 'Guinea' },
284
- { :iso2 => 'GP', :fa => 'جزیره گوادلوپ', :en => 'Guadeloupe' },
285
- { :iso2 => 'GQ', :fa => 'گینهٔ استوایی', :en => 'Equatorial Guinea' },
286
- { :iso2 => 'GR', :fa => 'یونان', :en => 'Greece' },
287
- { :iso2 => 'GS', :fa => 'جورجیای جنوبی و جزایر ساندویچ جنوبی', :en => 'South Georgia and the South Sandwich Islands' },
288
- { :iso2 => 'GT', :fa => 'گواتمالا', :en => 'Guatemala' },
289
- { :iso2 => 'GU', :fa => 'گوام', :en => 'Guam' },
290
- { :iso2 => 'GW', :fa => 'گینهٔ بیسائو', :en => 'Guinea-Bissau' },
291
- { :iso2 => 'GY', :fa => 'گویان', :en => 'Guyana' },
292
- { :iso2 => 'HK', :fa => 'هنگ‌ کنگ', :en => 'Hong Kong' },
293
- { :iso2 => 'HM', :fa => 'جزیرهٔ هرد و جزایر مک‌دونالد', :en => 'Heard Island and McDonald Islands' },
294
- { :iso2 => 'HN', :fa => 'هندوراس', :en => 'Honduras' },
295
- { :iso2 => 'HR', :fa => 'کرواسی', :en => 'Croatia' },
296
- { :iso2 => 'HT', :fa => 'هاییتی', :en => 'Haiti' },
297
- { :iso2 => 'HU', :fa => 'مجارستان', :en => 'Hungary' },
298
- { :iso2 => 'IC', :fa => 'جزایر قناری', :en => 'Canary Islands' },
299
- { :iso2 => 'ID', :fa => 'اندونزی', :en => 'Indonesia' },
300
- { :iso2 => 'IE', :fa => 'ایرلند', :en => 'Ireland' },
301
- { :iso2 => 'IL', :fa => 'اسرائیل', :en => 'Israel' },
302
- { :iso2 => 'IM', :fa => 'جزیرهٔ مان', :en => 'Isle of Man' },
303
- { :iso2 => 'IN', :fa => 'هند', :en => 'India' },
304
- { :iso2 => 'IO', :fa => 'مستعمره‌های بریتانیا در اقیانوس هند', :en => 'British Indian Ocean Territory' },
305
- { :iso2 => 'IQ', :fa => 'عراق', :en => 'Iraq' },
306
- { :iso2 => 'IR', :fa => 'ایران', :en => 'Iran' },
307
- { :iso2 => 'IS', :fa => 'ایسلند', :en => 'Iceland' },
308
- { :iso2 => 'IT', :fa => 'ایتالیا', :en => 'Italy' },
309
- { :iso2 => 'JE', :fa => 'جرسی', :en => 'Jersey' },
310
- { :iso2 => 'JM', :fa => 'جامائیکا', :en => 'Jamaica' },
311
- { :iso2 => 'JO', :fa => 'اردن', :en => 'Jordan' },
312
- { :iso2 => 'JP', :fa => 'ژاپن', :en => 'Japan' },
313
- { :iso2 => 'KE', :fa => 'کنیا', :en => 'Kenya' },
314
- { :iso2 => 'KG', :fa => 'قرقیزستان', :en => 'Kyrgyzstan' },
315
- { :iso2 => 'KH', :fa => 'کامبوج', :en => 'Cambodia' },
316
- { :iso2 => 'KI', :fa => 'کریباتی', :en => 'Kiribati' },
317
- { :iso2 => 'KM', :fa => 'کومورو', :en => 'Comoros' },
318
- { :iso2 => 'KN', :fa => 'سنت کیتس و نویس', :en => 'Saint Kitts and Nevis' },
319
- { :iso2 => 'KP', :fa => 'کره شمالی', :en => 'North Korea' },
320
- { :iso2 => 'KR', :fa => 'کرهٔ جنوبی', :en => 'South Korea' },
321
- { :iso2 => 'KW', :fa => 'کویت', :en => 'Kuwait' },
322
- { :iso2 => 'KY', :fa => 'جزایر کِیمن', :en => 'Cayman Islands' },
323
- { :iso2 => 'KZ', :fa => 'قزاقستان', :en => 'Kazakhstan' },
324
- { :iso2 => 'LA', :fa => 'لائوس', :en => 'Laos' },
325
- { :iso2 => 'LB', :fa => 'لبنان', :en => 'Lebanon' },
326
- { :iso2 => 'LC', :fa => 'سنت لوسیا', :en => 'Saint Lucia' },
327
- { :iso2 => 'LI', :fa => 'لیختن‌اشتاین', :en => 'Liechtenstein' },
328
- { :iso2 => 'LK', :fa => 'سريلانكا', :en => 'Sri Lanka' },
329
- { :iso2 => 'LR', :fa => 'لیبریا', :en => 'Liberia' },
330
- { :iso2 => 'LS', :fa => 'لسوتو', :en => 'Lesotho' },
331
- { :iso2 => 'LT', :fa => 'لیتوانی', :en => 'Lithuania' },
332
- { :iso2 => 'LU', :fa => 'لوکزامبورگ', :en => 'Luxembourg' },
333
- { :iso2 => 'LV', :fa => 'لتونی', :en => 'Latvia' },
334
- { :iso2 => 'LY', :fa => 'لیبی', :en => 'Libya' },
335
- { :iso2 => 'MA', :fa => 'مراکش', :en => 'Morocco' },
336
- { :iso2 => 'MC', :fa => 'موناکو', :en => 'Monaco' },
337
- { :iso2 => 'MD', :fa => 'مولداوی', :en => 'Moldova' },
338
- { :iso2 => 'ME', :fa => 'مونته‌نگرو', :en => 'Montenegro' },
339
- { :iso2 => 'MF', :fa => 'سنت مارتین', :en => 'Saint Martin' },
340
- { :iso2 => 'MG', :fa => 'ماداگاسکار', :en => 'Madagascar' },
341
- { :iso2 => 'MH', :fa => 'جزایر مارشال', :en => 'Marshall Islands' },
342
- { :iso2 => 'MK', :fa => 'مقدونیه- فایروم', :en => 'Macedonia [FYROM]' },
343
- { :iso2 => 'ML', :fa => 'مالی', :en => 'Mali' },
344
- { :iso2 => 'MM', :fa => 'میانمار', :en => 'Myanmar [Burma]' },
345
- { :iso2 => 'MN', :fa => 'مغولستان', :en => 'Mongolia' },
346
- { :iso2 => 'MO', :fa => 'ماکائو', :en => 'Macau' },
347
- { :iso2 => 'MP', :fa => 'جزایر ماریانای شمالی', :en => 'Northern Mariana Islands' },
348
- { :iso2 => 'MQ', :fa => 'مارتینیک', :en => 'Martinique' },
349
- { :iso2 => 'MR', :fa => 'موریتانی', :en => 'Mauritania' },
350
- { :iso2 => 'MS', :fa => 'مونت‌سرات', :en => 'Montserrat' },
351
- { :iso2 => 'MT', :fa => 'مالت', :en => 'Malta' },
352
- { :iso2 => 'MU', :fa => 'موریس', :en => 'Mauritius' },
353
- { :iso2 => 'MV', :fa => 'مالدیو', :en => 'Maldives' },
354
- { :iso2 => 'MW', :fa => 'مالاوی', :en => 'Malawi' },
355
- { :iso2 => 'MX', :fa => 'مکزیک', :en => 'Mexico' },
356
- { :iso2 => 'MY', :fa => 'مالزی', :en => 'Malaysia' },
357
- { :iso2 => 'MZ', :fa => 'موزامبیک', :en => 'Mozambique' },
358
- { :iso2 => 'NA', :fa => 'نامیبیا', :en => 'Namibia' },
359
- { :iso2 => 'NC', :fa => 'کالدونیای جدید', :en => 'New Caledonia' },
360
- { :iso2 => 'NE', :fa => 'نیجر', :en => 'Niger' },
361
- { :iso2 => 'NF', :fa => 'جزیرهٔ نورفولک', :en => 'Norfolk Island' },
362
- { :iso2 => 'NG', :fa => 'نیجریه', :en => 'Nigeria' },
363
- { :iso2 => 'NI', :fa => 'نیکاراگوئه', :en => 'Nicaragua' },
364
- { :iso2 => 'NL', :fa => 'هلند', :en => 'Netherlands' },
365
- { :iso2 => 'NO', :fa => 'نروژ', :en => 'Norway' },
366
- { :iso2 => 'NP', :fa => 'نپال', :en => 'Nepal' },
367
- { :iso2 => 'NR', :fa => 'نائورو', :en => 'Nauru' },
368
- { :iso2 => 'NU', :fa => 'نیوئه', :en => 'Niue' },
369
- { :iso2 => 'NZ', :fa => 'زلاند نو', :en => 'New Zealand' },
370
- { :iso2 => 'OM', :fa => 'عمان', :en => 'Oman' },
371
- { :iso2 => 'PA', :fa => 'پاناما', :en => 'Panama' },
372
- { :iso2 => 'PE', :fa => 'پرو', :en => 'Peru' },
373
- { :iso2 => 'PF', :fa => 'پلی‌نزی فرانسه', :en => 'French Polynesia' },
374
- { :iso2 => 'PG', :fa => 'پاپوا گینه نو', :en => 'Papua New Guinea' },
375
- { :iso2 => 'PH', :fa => 'فیلیپین', :en => 'Philippines' },
376
- { :iso2 => 'PK', :fa => 'پاكستان', :en => 'Pakistan' },
377
- { :iso2 => 'PL', :fa => 'لهستان', :en => 'Poland' },
378
- { :iso2 => 'PM', :fa => 'سنت پیر و میکلون', :en => 'Saint Pierre and Miquelon' },
379
- { :iso2 => 'PN', :fa => 'پیتکایرن', :en => 'Pitcairn Islands' },
380
- { :iso2 => 'PR', :fa => 'پورتو ریکو', :en => 'Puerto Rico' },
381
- { :iso2 => 'PS', :fa => 'فلسطین', :en => 'Palestinian Territories' },
382
- { :iso2 => 'PT', :fa => 'پرتغال', :en => 'Portugal' },
383
- { :iso2 => 'PW', :fa => 'پالائو', :en => 'Palau' },
384
- { :iso2 => 'PY', :fa => 'پاراگوئه', :en => 'Paraguay' },
385
- { :iso2 => 'QA', :fa => 'قطر', :en => 'Qatar' },
386
- { :iso2 => 'QO', :fa => 'بخش‌های دورافتادهٔ اقیانوسیه', :en => 'Outlying Oceania' },
387
- { :iso2 => 'QU', :fa => 'اتحادیهٔ اروپا', :en => 'European Union' },
388
- { :iso2 => 'RE', :fa => 'ریونیون', :en => 'Réunion' },
389
- { :iso2 => 'RO', :fa => 'رومانی', :en => 'Romania' },
390
- { :iso2 => 'RS', :fa => 'صربستان', :en => 'Serbia' },
391
- { :iso2 => 'RU', :fa => 'روسیه', :en => 'Russia' },
392
- { :iso2 => 'RW', :fa => 'رواندا', :en => 'Rwanda' },
393
- { :iso2 => 'SA', :fa => 'عربستان', :en => 'Saudi Arabia' },
394
- { :iso2 => 'SB', :fa => 'جزایر سلیمان', :en => 'Solomon Islands' },
395
- { :iso2 => 'SC', :fa => 'سیشل', :en => 'Seychelles' },
396
- { :iso2 => 'SD', :fa => 'سودان', :en => 'Sudan' },
397
- { :iso2 => 'SE', :fa => 'سوئد', :en => 'Sweden' },
398
- { :iso2 => 'SG', :fa => 'سنگاپور', :en => 'Singapore' },
399
- { :iso2 => 'SH', :fa => 'سنت هلن', :en => 'Saint Helena' },
400
- { :iso2 => 'SI', :fa => 'اسلوونی', :en => 'Slovenia' },
401
- { :iso2 => 'SJ', :fa => 'جزیره های اسوالبارد و جان ماین', :en => 'Svalbard and Jan Mayen' },
402
- { :iso2 => 'SK', :fa => 'اسلواکی', :en => 'Slovakia' },
403
- { :iso2 => 'SL', :fa => 'سیرالئون', :en => 'Sierra Leone' },
404
- { :iso2 => 'SM', :fa => 'سان مارینو', :en => 'San Marino' },
405
- { :iso2 => 'SN', :fa => 'سنگال', :en => 'Senegal' },
406
- { :iso2 => 'SO', :fa => 'سومالی', :en => 'Somalia' },
407
- { :iso2 => 'SR', :fa => 'سورينام', :en => 'Suriname' },
408
- { :iso2 => 'ST', :fa => 'سائو تومه و پرینسیپه', :en => 'São Tomé and Príncipe' },
409
- { :iso2 => 'SV', :fa => 'السالوادور', :en => 'El Salvador' },
410
- { :iso2 => 'SY', :fa => 'سوریه', :en => 'Syria' },
411
- { :iso2 => 'SZ', :fa => 'سوازیلند', :en => 'Swaziland' },
412
- { :iso2 => 'TA', :fa => 'تریستان دا سونا', :en => 'Tristan da Cunha' },
413
- { :iso2 => 'TC', :fa => 'جزایر ترک و کایکوس', :en => 'Turks and Caicos Islands' },
414
- { :iso2 => 'TD', :fa => 'چاد', :en => 'Chad' },
415
- { :iso2 => 'TF', :fa => 'مستعمره‌های جنوبی فرانسه', :en => 'French Southern Territories' },
416
- { :iso2 => 'TG', :fa => 'توگو', :en => 'Togo' },
417
- { :iso2 => 'TH', :fa => 'تایلند', :en => 'Thailand' },
418
- { :iso2 => 'TJ', :fa => 'تاجیکستان', :en => 'Tajikistan' },
419
- { :iso2 => 'TK', :fa => 'توکلائو', :en => 'Tokelau' },
420
- { :iso2 => 'TL', :fa => 'تیمور شرقی', :en => 'East Timor' },
421
- { :iso2 => 'TM', :fa => 'ترکمنستان', :en => 'Turkmenistan' },
422
- { :iso2 => 'TN', :fa => 'تونس', :en => 'Tunisia' },
423
- { :iso2 => 'TO', :fa => 'تونگا', :en => 'Tonga' },
424
- { :iso2 => 'TR', :fa => 'ترکیه', :en => 'Turkey' },
425
- { :iso2 => 'TT', :fa => 'ترینیداد و توباگو', :en => 'Trinidad and Tobago' },
426
- { :iso2 => 'TV', :fa => 'تووالو', :en => 'Tuvalu' },
427
- { :iso2 => 'TW', :fa => 'تایوان', :en => 'Taiwan' },
428
- { :iso2 => 'TZ', :fa => 'تانزانیا', :en => 'Tanzania' },
429
- { :iso2 => 'UA', :fa => 'اوکراین', :en => 'Ukraine' },
430
- { :iso2 => 'UG', :fa => 'اوگاندا', :en => 'Uganda' },
431
- { :iso2 => 'UM', :fa => 'جزایر کوچک دورافتادهٔ ایالات متحده', :en => 'U.S. Minor Outlying Islands' },
432
- { :iso2 => 'US', :fa => 'ایالات متحدهٔ امریکا', :en => 'United States' },
433
- { :iso2 => 'UY', :fa => 'اروگوئه', :en => 'Uruguay' },
434
- { :iso2 => 'UZ', :fa => 'ازبکستان', :en => 'Uzbekistan' },
435
- { :iso2 => 'VA', :fa => 'واتیکان', :en => 'Vatican City' },
436
- { :iso2 => 'VC', :fa => 'سنت وینسنت و گرنادین', :en => 'Saint Vincent and the Grenadines' },
437
- { :iso2 => 'VE', :fa => 'ونزوئلا', :en => 'Venezuela' },
438
- { :iso2 => 'VG', :fa => 'جزایر ویرجین بریتانیا', :en => 'British Virgin Islands' },
439
- { :iso2 => 'VI', :fa => 'جزایر ویرجین ایالات متحده', :en => 'U.S. Virgin Islands' },
440
- { :iso2 => 'VN', :fa => 'ویتنام', :en => 'Vietnam' },
441
- { :iso2 => 'VU', :fa => 'وانواتو', :en => 'Vanuatu' },
442
- { :iso2 => 'WF', :fa => 'والیس و فیوتونا', :en => 'Wallis and Futuna' },
443
- { :iso2 => 'WS', :fa => 'ساموا', :en => 'Samoa' },
444
- { :iso2 => 'YE', :fa => 'یمن', :en => 'Yemen' },
445
- { :iso2 => 'YT', :fa => 'مایوت', :en => 'Mayotte' },
446
- { :iso2 => 'ZA', :fa => 'افریقای جنوبی', :en => 'South Africa' },
447
- { :iso2 => 'ZM', :fa => 'زامبیا', :en => 'Zambia' },
448
- { :iso2 => 'ZW', :fa => 'زیمبابوه', :en => 'Zimbabwe' },
449
- { :iso2 => 'ZZ', :fa => 'ناحیهٔ نامشخص یا نامعتبر', :en => 'Unknown or Invalid Region' }
450
-
451
- ]
452
- # :startdoc:
13
+ if RUBY_VERSION < '1.9'
14
+ require 'jcode'
15
+ $KCODE = 'u'
16
+ end
453
17
  end
454
-
455
- String.send(:include, FarsiFu::NumbersExtensions::InstanceMethods)
456
- Integer.send(:include, FarsiFu::NumbersExtensions::InstanceMethods)
457
- Numeric.send(:include, FarsiFu::NumbersExtensions::InstanceMethods)
458
- Fixnum.send(:include, FarsiFu::NumbersExtensions::InstanceMethods)
459
- Float.send(:include, FarsiFu::NumbersExtensions::InstanceMethods)