farsifu 0.2.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/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2009 Aziz A. Bargi
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.rdoc ADDED
@@ -0,0 +1,41 @@
1
+ = farsifu
2
+ farsifu is a toolbox for developing ruby applications in Persian (Farsi) language.
3
+
4
+ == Features
5
+ * Coverting numbers to Persian numbers
6
+ * Spelling numbers in Persian
7
+ * List of Iran's provinces, cities, counties
8
+ * List of countries in Persian
9
+
10
+ == Install
11
+ gem install farsifu
12
+
13
+ == History
14
+
15
+ ==== 0.2 - 2.MAR.2010
16
+ * renamed gem from FarsiFu to farsifu
17
+ * Added a spec suite
18
+ * Migrated the gem to rubygems.org
19
+ * Added Iran Module
20
+
21
+ ==== 0.02 - 10.AUG.2008
22
+ * converted into a gem
23
+ * rdocs added
24
+
25
+ ==== 0.01 - 07.AUG.2008
26
+ * initial release
27
+
28
+
29
+ == Note on Patches/Pull Requests
30
+
31
+ * Fork the project.
32
+ * Make your feature addition or bug fix.
33
+ * Add tests for it. This is important so I don't break it in a
34
+ future version unintentionally.
35
+ * Commit, do not mess with rakefile, version, or history.
36
+ (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
37
+ * Send me a pull request. Bonus points for topic branches.
38
+
39
+ == Copyright
40
+
41
+ Copyright (c) 2010 Allen Bargi. See LICENSE for details.
data/Rakefile ADDED
@@ -0,0 +1,73 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+
4
+ begin
5
+ require 'jeweler'
6
+ Jeweler::Tasks.new do |gem|
7
+ gem.name = "farsifu"
8
+ gem.version = "0.2.0"
9
+ gem.authors = ["Aziz A. Bargi"]
10
+ gem.email = "allen.bargi@gmail.com"
11
+ gem.homepage = "http://github.com/aziz/farsifu"
12
+ gem.summary = "a toolbox for developing ruby applications in Persian (Farsi) language, see readme for features"
13
+ gem.platform = Gem::Platform::RUBY
14
+ gem.has_rdoc = true
15
+ gem.extra_rdoc_files = ["README.rdoc","LICENSE"]
16
+ gem.add_development_dependency "rspec", ">= 1.2.9"
17
+ # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
18
+ end
19
+ Jeweler::GemcutterTasks.new
20
+ rescue LoadError
21
+ puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
22
+ end
23
+
24
+ require 'spec/rake/spectask'
25
+ Spec::Rake::SpecTask.new(:spec) do |spec|
26
+ spec.libs << 'lib' << 'spec'
27
+ spec.spec_files = FileList['spec/**/*_spec.rb']
28
+ end
29
+
30
+ Spec::Rake::SpecTask.new(:rcov) do |spec|
31
+ spec.libs << 'lib' << 'spec'
32
+ spec.pattern = 'spec/**/*_spec.rb'
33
+ spec.rcov = true
34
+ end
35
+
36
+ task :spec => :check_dependencies
37
+
38
+ begin
39
+ require 'reek/adapters/rake_task'
40
+ Reek::RakeTask.new do |t|
41
+ t.fail_on_error = true
42
+ t.verbose = false
43
+ t.source_files = 'lib/**/*.rb'
44
+ end
45
+ rescue LoadError
46
+ task :reek do
47
+ abort "Reek is not available. In order to run reek, you must: sudo gem install reek"
48
+ end
49
+ end
50
+
51
+ begin
52
+ require 'roodi'
53
+ require 'roodi_task'
54
+ RoodiTask.new do |t|
55
+ t.verbose = false
56
+ end
57
+ rescue LoadError
58
+ task :roodi do
59
+ abort "Roodi is not available. In order to run roodi, you must: sudo gem install roodi"
60
+ end
61
+ end
62
+
63
+ task :default => :spec
64
+
65
+ require 'rake/rdoctask'
66
+ Rake::RDocTask.new do |rdoc|
67
+ version = File.exist?('VERSION') ? File.read('VERSION') : ""
68
+
69
+ rdoc.rdoc_dir = 'rdoc'
70
+ rdoc.title = "farsifu #{version}"
71
+ rdoc.rdoc_files.include('README*')
72
+ rdoc.rdoc_files.include('lib/**/*.rb')
73
+ end
data/TODO ADDED
File without changes
data/lib/farsifu.rb ADDED
@@ -0,0 +1,428 @@
1
+ #:title: FarsiFu
2
+ module FarsiFu
3
+
4
+ module NumbersExtensions
5
+ module InstanceMethods
6
+ # :stopdoc:
7
+ require 'jcode'
8
+ $KCODE = 'u'
9
+ PERSIAN_CHARS = "۱۲۳۴۵۶۷۸۹۰،×؛"
10
+ ENGLISH_CHARS = "1234567890,*;"
11
+ PERSIAN_DIGIT_JOINT = " و "
12
+ PERSIAN_DIGIT_SIGN = ["منفی ", "مثبت ", " ممیز "]
13
+ PERSIAN_DIGIT_SPELL = {
14
+ 0 => [ nil ,"یک","دو","سه","چهار","پنج","شش","هفت","هشت","نه", "صفر"] ,
15
+ 1 => [ nil ,"ده","بیست","سی","چهل","پنجاه","شصت","هفتاد","هشتاد","نود"],
16
+ 2 => [ nil ,"صد","دویست","سیصد","چهارصد","پانصد","ششصد","هفتصد","هشتصد","نهصد"],
17
+ "10..19" => [ "ده" ,"یازده","دوازده","سیزده","چهارده","پانزده","شانزده","هفده","هجده","نوزده"],
18
+ "zillion" => [ nil ,"هزار","میلیون","میلیارد","بیلیون","تریلیون","کوادریلیون","کوینتیلیون","سیکستیلیون","سپتیلیون","اکتیلیون","نونیلیون","دسیلیون"],
19
+ "decimals" => [ nil, "دهم", "صدم", "هزارم", "ده‌هزارم", "صدهزارم", "میلیونیم", "ده‌میلیونیم","صدمیلیونیم","میلیاردیم"]
20
+ }
21
+ # :startdoc:
22
+
23
+ # Returns a string which is the equivalent English number of a Persian number (in String)
24
+ #
25
+ # Example:
26
+ # "۱۲۳".to_english # => "123"
27
+ def to_english
28
+ self.to_s.tr(PERSIAN_CHARS,ENGLISH_CHARS)
29
+ end
30
+
31
+ # Returns a string which is the equivalent Persian number of an English number (in String)
32
+ # accepts instances of String, Integer and Numeric classes (Fixnum,Bignum and floats are accepted)
33
+ #
34
+ # alias: to_persian
35
+ #
36
+ # Example:
37
+ # "123".to_farsi # => "۱۲۳"
38
+ # "456".to_persian # => "۴۵۶"
39
+ # 789.to_farsi # => "۷۸۹"
40
+ def to_farsi
41
+ self.to_s.tr(ENGLISH_CHARS,PERSIAN_CHARS)
42
+ end
43
+ alias_method :to_persian, :to_farsi
44
+
45
+ # Spells a number in Persian
46
+ # accpets english numbers (in float,fixnum or string)
47
+ #
48
+ # Example:
49
+ # 5678.spell_farsi # => "پنج هزار و ششصد و هفتاد و هشت"
50
+ def spell_farsi
51
+ # Distigushing the number (float and )
52
+ if self.class == Float
53
+ num_array = self.to_f.to_s.split(".").first.split(//).reverse
54
+ dec_array = self.to_f.to_s.split(".").last.split(//).slice(0..9).compact.reverse
55
+ dec_copy_b = dec_array.clone ; dec_copy_a = dec_array.clone
56
+ result = spell(num_array)
57
+ ( 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)
58
+ return result
59
+ else
60
+ num_array = self.to_i.to_s.split(//).reverse
61
+ return spell(num_array)
62
+ end
63
+ end
64
+
65
+ private #---------------------------------------------------------
66
+ def spell(num_array)
67
+ # Dealing with signs
68
+ sign_m = num_array.include?("-") ? PERSIAN_DIGIT_SIGN[0] : ""
69
+ sign_p = num_array.include?("+") ? PERSIAN_DIGIT_SIGN[1] : ""
70
+ num_array.delete_at(num_array.index("-")) if sign_m.size > 0
71
+ num_array.delete_at(num_array.index("+")) if sign_p.size > 0
72
+ sign = sign_m + sign_p
73
+
74
+ zillion = 0
75
+ farsi_number = []
76
+
77
+ # Dealing with Zero
78
+ if (num_array.length == 1 && num_array[0] == "0" )
79
+ farsi_number = [PERSIAN_DIGIT_SPELL[0][10]]
80
+ num_array = []
81
+ end
82
+
83
+ while num_array.length > 0 do
84
+ spelling = []
85
+ num_array[0..2].each_with_index do |digit,index|
86
+ spelling[index] = PERSIAN_DIGIT_SPELL[index][digit.to_i]
87
+ if index == 1 && digit == "1" # Dealing with 10..19
88
+ spelling[1] = PERSIAN_DIGIT_SPELL["10..19"][num_array[0].to_i]
89
+ spelling[0] = nil
90
+ end
91
+ end
92
+
93
+ 3.times { num_array.shift if num_array.length > 0 } # Eliminating the first 3 number of the array
94
+ dig = spelling.reverse.compact.join(PERSIAN_DIGIT_JOINT)
95
+ if dig.size > 0
96
+ dig << (" " + PERSIAN_DIGIT_SPELL["zillion"][zillion].to_s)
97
+ farsi_number.unshift(dig)
98
+ end
99
+
100
+ zillion += 1
101
+ end # End of While
102
+
103
+ sign + farsi_number.compact.join(PERSIAN_DIGIT_JOINT).strip
104
+ end
105
+
106
+ end
107
+ end
108
+
109
+ end
110
+
111
+ # Defines some data structures related to Iran
112
+ # ==== Provinces
113
+ # An array of hashes with information about Iran's provinces. has these keys:
114
+ # [:name] string in Persian
115
+ # [:eng_name] string in English
116
+ # [:capital] string in Persian
117
+ # [:eng_capital] string in English
118
+ # [:counties] array of county names in Persian
119
+ #
120
+ # ==== Countries
121
+ # An array of hashes of the name of countries in the world in Persian and Eglish. has these keys:
122
+ # [:iso2] two character code of the country
123
+ # [:en] English name
124
+ # [:fa] Persian name
125
+ module Iran
126
+
127
+ # :stopdoc:
128
+ Provinces = [
129
+ {:name => "آذربایجان شرقی" , :eng_name => "Azerbaijan, East", :capital => "تبریز", :eng_capital => "Tabriz", :counties => ["آذرشهر", "اسکو", "اهر", "بستان‌آباد", "بناب", "تبریز", "جلفا", "چاراویماق", "سراب", "شبستر", "عجب‌شیر", "کلیبر", "مراغه", "مرند", "ملکان", "میانه", "ورزقان", "هریس", "هشترود"]},
130
+ {:name => "آذربایجان غربی" , :eng_name => "Azerbaijan, West", :capital => "ارومیه", :eng_capital => "Urmia", :counties => ["ارومیه", "اشنویه", "بوکان", "پلدشت", "پیرانشهر", "تکاب", "چالدران", "چایپاره", "خوی", "سردشت", "سلماس", "شاهین‌دژ", "شوط", "ماکو", "مهاباد", "میاندوآب", "نقده"]},
131
+ {:name => "اردبیل" , :eng_name => "Ardabil", :capital => "اردبیل", :eng_capital => "Ardabil", :counties => ["اردبیل", "بیله‌سوار", "پارس‌آباد", "خلخال", "سرعین", "کوثر", "گرمی", "مشگین‌شهر", "نمین", "نیر"]},
132
+ {:name => "اصفهان" , :eng_name => "Isfahan", :capital => "اصفهان", :eng_capital => "Isfahan", :counties => ["اردستان", "اصفهان", "برخوار", "تیران و کرون", "چادگان", "خمینی‌شهر", "خوانسار", "خور و بیابانک", "سمیرم", "شاهین‌شهر و میمه", "شهرضا", "دهاقان", "فریدن", "فریدون‌شهر", "فلاورجان", "كاشان", "گلپایگان", "لنجان", "مبارکه", "نایین", "نجف‌آباد", "نطنز"]},
133
+ {:name => "ایلام" , :eng_name => "Ilam", :capital => "ایلام", :eng_capital => "Ilam", :counties => ["آبدانان", "ایلام", "ایوان", "دره‌شهر", "دهلران", "شیروان و چرداول", "ملکشاهی", "مهران"]},
134
+ {:name => "بوشهر" , :eng_name => "Bushehr", :capital => "بوشهر", :eng_capital => "Bushehr", :counties => ["بوشهر", "تنگستان", "جم", "دشتستان", "دشتی", "دیر", "دیلم", "کنگان", "گناوه"]},
135
+ {:name => "تهران" , :eng_name => "Tehran", :capital => "تهران", :eng_capital => "Tehran", :counties => ["اسلام‌شهر", "پاکدشت", "تهران", "دماوند", "رباط‌کریم", "ری", "ساوجبلاغ", "شمیرانات", "شهریار", "فیروزکوه", "قدس", "کرج", "ملارد", "نظرآباد", "ورامین"]},
136
+ {:name => "چهارمحال و بختیاری" , :eng_name => "Chahar Mahaal and Bakhtiari",:capital => "شهرکرد", :eng_capital => "Shahrekord", :counties => ["اردل", "بروجن", "شهرکرد", "فارسان", "کوهرنگ", "کیار", "لردگان"]},
137
+ {:name => "خراسان جنوبی" , :eng_name => "Khorasan, South", :capital => "بیرجند", :eng_capital => "Birjand", :counties => ["بشرویه", "بیرجند", "درمیان", "سرایان", "سربیشه", "فردوس", "قائنات", "نهبندان"]},
138
+ {:name => "خراسان رضوی" , :eng_name => "Khorasan, Razavi", :capital => "مشهد", :eng_capital => "Mashhad", :counties => ["بردسکن", "بجستان", "تایباد", "تخت‌جلگه", "تربت جام", "تربت حیدریه", "چناران", "جغتای", "جوین", "خلیل‌آباد", "خواف", "درگز", "رشتخوار", "زاوه", "سبزوار", "سرخس", "فریمان", "قوچان", "طرقبه و شاندیز", "کاشمر", "کلات", "گناباد", "مشهد", "مه‌ولات", "نیشابور"]},
139
+ {:name => "خراسان شمالی" , :eng_name => "Khorasan, North", :capital => "بجنورد", :eng_capital => "Bojnourd", :counties => ["اسفراین", "بجنورد", "جاجرم", "شیروان", "فاروج", "گرمه", "مانه و سملقان"]},
140
+ {:name => "خوزستان" , :eng_name => "Khuzestan", :capital => "اهواز", :eng_capital => "Ahvaz", :counties => ["آبادان", "امیدیه", "اندیکا", "اندیمشک", "اهواز", "ایذه", "باغ‌ملک", "بهبهان", "خرمشهر", "دزفول", "دشت آزادگان", "رامشیر", "رامهرمز", "شادگان", "شوش", "شوشتر", "گتوند", "لالی", "ماهشهر", "مسجدسلیمان", "هفتگل", "هندیجان", "هویزه"]},
141
+ {:name => "زنجان" , :eng_name => "Zanjan", :capital => "زنجان", :eng_capital => "Zanjan", :counties => ["ابهر", "ایجرود", "خدابنده", "خرمدره", "زنجان", "طارم", "ماه‌نشان"]},
142
+ {:name => "سمنان" , :eng_name => "Semnan", :capital => "سمنان", :eng_capital => "Semnan", :counties => ["دامغان", "سمنان", "شاهرود", "گرمسار", "مهدی‌شهر"]},
143
+ {:name => "سیستان و بلوچستان" , :eng_name => "Sistan and Baluchistan", :capital => "زاهدان", :eng_capital => "Zahedan", :counties => ["ایرانشهر", "چابهار", "خاش", "دلگان", "زابل", "زابلی", "زاهدان", "زهک", "سراوان", "سرباز", "سیب و سوران", "کنارک", "نیک‌شهر", "هیرمند"]},
144
+ {:name => "فارس" , :eng_name => "Fars", :capital => "شیراز", :eng_capital => "Shiraz", :counties => ["آباده", "ارسنجان", "استهبان", "اقلید", "بوانات", "پاسارگاد", "جهرم", "خرم‌بید", "خنج", "داراب", "رستم", "زرین‌دشت", "سپیدان", "سروستان", "شیراز", "فراشبند", "فسا", "فیروزآباد", "قیر و کارزین", "کازرون", "گراش", "لارستان", "لامرد", "مرودشت", "ممسنی", "مهر", "نی‌ریز"]},
145
+ {:name => "قزوین" , :eng_name => "Qazvin", :capital => "قزوین", :eng_capital => "Qazvin", :counties => ["آبیک", "البرز", "بویین‌زهرا", "تاکستان", "قزوین"]},
146
+ {:name => "قم" , :eng_name => "Qom", :capital => "قم", :eng_capital => "Qom", :counties => ["قم"]},
147
+ {:name => "کردستان" , :eng_name => "Kurdistan", :capital => "سنندج", :eng_capital => "Sanandaj", :counties => ["بانه", "بیجار", "دهگلان", "دیواندره", "سروآباد", "سقز", "سنندج", "قروه", "کامیاران", "مریوان"]},
148
+ {:name => "کرمان" , :eng_name => "Kerman", :capital => "کرمان", :eng_capital => "Kerman", :counties => ["بافت", "بردسیر", "بم", "جیرفت", "رابر", "راور", "رفسنجان", "رودبار جنوب", "زرند", "سیرجان", "شهر بابک", "عنبرآباد", "فهرج", "قلعه گنج", "کرمان", "کوهبنان", "کهنوج", "منوجان"]},
149
+ {:name => "کرمانشاه" , :eng_name => "Kermanshah", :capital => "کرمانشاه",:eng_capital => "Kermanshah", :counties => ["اسلام‌آباد غرب", "پاوه", "ثلاث باباجانی", "جوانرود", "دالاهو", "روانسر", "سرپل ذهاب", "سنقر", "صحنه", "قصر شیرین", "کرمانشاه", "کنگاور", "گیلان غرب", "هرسین"]},
150
+ {:name => "کهگیلویه و بویراحمد", :eng_name => "Kohgiluyeh and Boyer-Ahmad", :capital => "یاسوج", :eng_capital => "Yasuj", :counties => ["بویراحمد", "بهمئی", "دنا", "کهگیلویه", "گچساران"]},
151
+ {:name => "گلستان" , :eng_name => "Golestan", :capital => "گرگان", :eng_capital => "Gorgan", :counties => ["آزادشهر", "آق‌قلا", "بندر گز", "ترکمن", "رامیان", "علی‌آباد", "کردکوی", "کلاله", "گرگان", "گنبد کاووس", "مراوه‌تپه", "مینودشت"]},
152
+ {:name => "گیلان" , :eng_name => "Gilan", :capital => "رشت", :eng_capital => "Rasht", :counties => ["آستارا", "آستانه اشرفیه", "املش", "بندر انزلی", "رشت", "رضوان‌شهر", "رودبار زیتون", "رودسر", "سیاهکل", "شفت", "صومعه‌سرا", "طوالش", "فومن", "لاهیجان", "لنگرود", "ماسال"]},
153
+ {:name => "لرستان" , :eng_name => "Lorestan", :capital => "خرم آباد",:eng_capital => "Khorramabad", :counties => ["ازنا", "الیگودرز", "بروجرد", "پل‌دختر", "خرم‌آباد", "دورود", "دوره", "دلفان", "سلسله", "کوهدشت"]},
154
+ {:name => "مازندران" , :eng_name => "Mazandaran", :capital => "ساری", :eng_capital => "Sari", :counties => ["آمل", "بابل", "بابلسر", "بهشهر", "تنکابن", "جویبار", "چالوس", "رامسر", "ساری", "سوادکوه", "فریدون‌کنار", "قائم‌شهر", "گلوگاه", "محمودآباد", "نکا", "نور", "نوشهر"]},
155
+ {:name => "مرکزی" , :eng_name => "Markazi", :capital => "اراک", :eng_capital => "Arak", :counties => ["آشتیان", "اراک", "تفرش", "خمین", "خنداب", "دلیجان", "زرندیه", "ساوه", "شازند", "کمیجان", "محلات"]},
156
+ {:name => "هرمزگان" , :eng_name => "Hormozgan", :capital => "بندرعباس",:eng_capital => "Bandar Abbas",:counties => ["ابوموسی", "بستک", "بندر عباس", "بندر لنگه", "پارسیان", "جاسک", "حاجی‌آباد", "خمیر", "رودان", "قشم", "میناب"]},
157
+ {:name => "همدان" , :eng_name => "Hamadan", :capital => "همدان", :eng_capital => "Hamadan", :counties => ["اسدآباد", "بهار", "تویسرکان", "رزن", "فامنین", "کبودرآهنگ", "ملایر", "نهاوند", "همدان"]},
158
+ {:name => "یزد" , :eng_name => "Yazd", :capital => "یزد", :eng_capital => "Yazd", :counties => ["ابرکوه", "اردکان", "بافق", "بهاباد", "تفت", "خاتم", "صدوق", "طبس", "مهریز", "میبد", "یزد"]},
159
+ ]
160
+
161
+ Countries = [
162
+ { :iso2 => 'AC', :fa => 'جزایر آسنسیون', :en => 'Ascension Island' },
163
+ { :iso2 => 'AD', :fa => 'آندورا', :en => 'Andorra' },
164
+ { :iso2 => 'AE', :fa => 'امارات متحدهٔ عربی', :en => 'United Arab Emirates' },
165
+ { :iso2 => 'AF', :fa => 'افغانستان', :en => 'Afghanistan' },
166
+ { :iso2 => 'AG', :fa => 'آنتيگوآ و باربودا', :en => 'Antigua and Barbuda' },
167
+ { :iso2 => 'AI', :fa => 'آنگیل', :en => 'Anguilla' },
168
+ { :iso2 => 'AL', :fa => 'آلبانی', :en => 'Albania' },
169
+ { :iso2 => 'AM', :fa => 'ارمنستان', :en => 'Armenia' },
170
+ { :iso2 => 'AN', :fa => 'آنتیل هلند', :en => 'Netherlands Antilles' },
171
+ { :iso2 => 'AO', :fa => 'آنگولا', :en => 'Angola' },
172
+ { :iso2 => 'AQ', :fa => 'قطب جنوب', :en => 'Antarctica' },
173
+ { :iso2 => 'AR', :fa => 'آرژانتین', :en => 'Argentina' },
174
+ { :iso2 => 'AS', :fa => 'ساموای امریکا', :en => 'American Samoa' },
175
+ { :iso2 => 'AT', :fa => 'اتریش', :en => 'Austria' },
176
+ { :iso2 => 'AU', :fa => 'استرالیا', :en => 'Australia' },
177
+ { :iso2 => 'AW', :fa => 'آروبا', :en => 'Aruba' },
178
+ { :iso2 => 'AX', :fa => 'جزایر آلاند', :en => 'Åland Islands' },
179
+ { :iso2 => 'AZ', :fa => 'جمهوری آذربایجان', :en => 'Azerbaijan' },
180
+ { :iso2 => 'BA', :fa => 'بوسنی و هرزگوین', :en => 'Bosnia and Herzegovina' },
181
+ { :iso2 => 'BB', :fa => 'باربادوس', :en => 'Barbados' },
182
+ { :iso2 => 'BD', :fa => 'بنگلادش', :en => 'Bangladesh' },
183
+ { :iso2 => 'BE', :fa => 'بلژیک', :en => 'Belgium' },
184
+ { :iso2 => 'BF', :fa => 'بورکینافاسو', :en => 'Burkina Faso' },
185
+ { :iso2 => 'BG', :fa => 'بلغارستان', :en => 'Bulgaria' },
186
+ { :iso2 => 'BH', :fa => 'بحرین', :en => 'Bahrain' },
187
+ { :iso2 => 'BI', :fa => 'بروندی', :en => 'Burundi' },
188
+ { :iso2 => 'BJ', :fa => 'بنین', :en => 'Benin' },
189
+ { :iso2 => 'BL', :fa => 'سنت بارتلیمی', :en => 'Saint Barthélemy' },
190
+ { :iso2 => 'BM', :fa => 'برمودا', :en => 'Bermuda' },
191
+ { :iso2 => 'BN', :fa => 'برونئی', :en => 'Brunei' },
192
+ { :iso2 => 'BO', :fa => 'بولیوی', :en => 'Bolivia' },
193
+ { :iso2 => 'BR', :fa => 'برزیل', :en => 'Brazil' },
194
+ { :iso2 => 'BS', :fa => 'باهاما', :en => 'Bahamas' },
195
+ { :iso2 => 'BT', :fa => 'بوتان', :en => 'Bhutan' },
196
+ { :iso2 => 'BV', :fa => 'جزیره بووت', :en => 'Bouvet Island' },
197
+ { :iso2 => 'BW', :fa => 'بوتسوانا', :en => 'Botswana' },
198
+ { :iso2 => 'BY', :fa => 'بیلوروسی', :en => 'Belarus' },
199
+ { :iso2 => 'BZ', :fa => 'بلیز', :en => 'Belize' },
200
+ { :iso2 => 'CA', :fa => 'کانادا', :en => 'Canada' },
201
+ { :iso2 => 'CC', :fa => 'جزایر کوکوس', :en => 'Cocos [Keeling] Islands' },
202
+ { :iso2 => 'CD', :fa => 'کنگو - جمهوری دموکراتیک', :en => 'Congo [DRC]' },
203
+ { :iso2 => 'CF', :fa => 'جمهوری افریقای مرکزی', :en => 'Central African Republic' },
204
+ { :iso2 => 'CG', :fa => 'CG', :en => 'Congo [Republic]' },
205
+ { :iso2 => 'CH', :fa => 'سوئیس', :en => 'Switzerland' },
206
+ { :iso2 => 'CI', :fa => 'ساحل عاج', :en => 'Ivory Coast' },
207
+ { :iso2 => 'CK', :fa => 'جزایر کوک', :en => 'Cook Islands' },
208
+ { :iso2 => 'CL', :fa => 'شیلی', :en => 'Chile' },
209
+ { :iso2 => 'CM', :fa => 'کامرون', :en => 'Cameroon' },
210
+ { :iso2 => 'CN', :fa => 'چین', :en => 'China' },
211
+ { :iso2 => 'CO', :fa => 'کلمبیا', :en => 'Colombia' },
212
+ { :iso2 => 'CP', :fa => 'جزایر کلیپرتون', :en => 'Clipperton Island' },
213
+ { :iso2 => 'CR', :fa => 'کاستاریکا', :en => 'Costa Rica' },
214
+ { :iso2 => 'CS', :fa => 'صربستان و مونته‌نگرو', :en => 'Serbia and Montenegro' },
215
+ { :iso2 => 'CU', :fa => 'کوبا', :en => 'Cuba' },
216
+ { :iso2 => 'CV', :fa => 'کیپ ورد', :en => 'Cape Verde' },
217
+ { :iso2 => 'CX', :fa => 'جزیرهٔ کریسمس', :en => 'Christmas Island' },
218
+ { :iso2 => 'CY', :fa => 'قبرس', :en => 'Cyprus' },
219
+ { :iso2 => 'CZ', :fa => 'جمهوری چک', :en => 'Czech Republic' },
220
+ { :iso2 => 'DE', :fa => 'آلمان', :en => 'Germany' },
221
+ { :iso2 => 'DG', :fa => 'دیه گو گارسیا', :en => 'Diego Garcia' },
222
+ { :iso2 => 'DJ', :fa => 'جیبوتی', :en => 'Djibouti' },
223
+ { :iso2 => 'DK', :fa => 'دانمارک', :en => 'Denmark' },
224
+ { :iso2 => 'DM', :fa => 'دومینیک', :en => 'Dominica' },
225
+ { :iso2 => 'DO', :fa => 'جمهوری دومینیکن', :en => 'Dominican Republic' },
226
+ { :iso2 => 'DZ', :fa => 'الجزایر', :en => 'Algeria' },
227
+ { :iso2 => 'EA', :fa => 'کوتا و میللا', :en => 'Ceuta and Melilla' },
228
+ { :iso2 => 'EC', :fa => 'اكوادور', :en => 'Ecuador' },
229
+ { :iso2 => 'EE', :fa => 'استونی', :en => 'Estonia' },
230
+ { :iso2 => 'EG', :fa => 'مصر', :en => 'Egypt' },
231
+ { :iso2 => 'EH', :fa => 'صحرای غربی', :en => 'Western Sahara' },
232
+ { :iso2 => 'ER', :fa => 'اریتره', :en => 'Eritrea' },
233
+ { :iso2 => 'ES', :fa => 'اسپانیا', :en => 'Spain' },
234
+ { :iso2 => 'ET', :fa => 'اتیوپی', :en => 'Ethiopia' },
235
+ { :iso2 => 'EU', :fa => 'EU', :en => 'EU' },
236
+ { :iso2 => 'FI', :fa => 'فنلاند', :en => 'Finland' },
237
+ { :iso2 => 'FJ', :fa => 'فیجی', :en => 'Fiji' },
238
+ { :iso2 => 'FK', :fa => 'جزایر فالکلند -ایسلاس مالویناس', :en => 'Falkland Islands [Islas Malvinas]' },
239
+ { :iso2 => 'FM', :fa => 'میکرونزی', :en => 'Micronesia' },
240
+ { :iso2 => 'FO', :fa => 'جزایر فارو', :en => 'Faroe Islands' },
241
+ { :iso2 => 'FR', :fa => 'فرانسه', :en => 'France' },
242
+ { :iso2 => 'GA', :fa => 'گابون', :en => 'Gabon' },
243
+ { :iso2 => 'GB', :fa => 'بریتانیا', :en => 'United Kingdom' },
244
+ { :iso2 => 'GD', :fa => 'گرانادا', :en => 'Grenada' },
245
+ { :iso2 => 'GE', :fa => 'گرجستان', :en => 'Georgia' },
246
+ { :iso2 => 'GF', :fa => 'گویان فرانسه', :en => 'French Guiana' },
247
+ { :iso2 => 'GG', :fa => 'گرنزی', :en => 'Guernsey' },
248
+ { :iso2 => 'GH', :fa => 'غنا', :en => 'Ghana' },
249
+ { :iso2 => 'GI', :fa => 'جبل‌الطارق', :en => 'Gibraltar' },
250
+ { :iso2 => 'GL', :fa => 'گرینلند', :en => 'Greenland' },
251
+ { :iso2 => 'GM', :fa => 'گامبیا', :en => 'Gambia' },
252
+ { :iso2 => 'GN', :fa => 'گینه', :en => 'Guinea' },
253
+ { :iso2 => 'GP', :fa => 'جزیره گوادلوپ', :en => 'Guadeloupe' },
254
+ { :iso2 => 'GQ', :fa => 'گینهٔ استوایی', :en => 'Equatorial Guinea' },
255
+ { :iso2 => 'GR', :fa => 'یونان', :en => 'Greece' },
256
+ { :iso2 => 'GS', :fa => 'جورجیای جنوبی و جزایر ساندویچ جنوبی', :en => 'South Georgia and the South Sandwich Islands' },
257
+ { :iso2 => 'GT', :fa => 'گواتمالا', :en => 'Guatemala' },
258
+ { :iso2 => 'GU', :fa => 'گوام', :en => 'Guam' },
259
+ { :iso2 => 'GW', :fa => 'گینهٔ بیسائو', :en => 'Guinea-Bissau' },
260
+ { :iso2 => 'GY', :fa => 'گویان', :en => 'Guyana' },
261
+ { :iso2 => 'HK', :fa => 'هنگ‌ کنگ', :en => 'Hong Kong' },
262
+ { :iso2 => 'HM', :fa => 'جزیرهٔ هرد و جزایر مک‌دونالد', :en => 'Heard Island and McDonald Islands' },
263
+ { :iso2 => 'HN', :fa => 'هندوراس', :en => 'Honduras' },
264
+ { :iso2 => 'HR', :fa => 'کرواسی', :en => 'Croatia' },
265
+ { :iso2 => 'HT', :fa => 'هاییتی', :en => 'Haiti' },
266
+ { :iso2 => 'HU', :fa => 'مجارستان', :en => 'Hungary' },
267
+ { :iso2 => 'IC', :fa => 'جزایر قناری', :en => 'Canary Islands' },
268
+ { :iso2 => 'ID', :fa => 'اندونزی', :en => 'Indonesia' },
269
+ { :iso2 => 'IE', :fa => 'ایرلند', :en => 'Ireland' },
270
+ { :iso2 => 'IL', :fa => 'اسرائیل', :en => 'Israel' },
271
+ { :iso2 => 'IM', :fa => 'جزیرهٔ مان', :en => 'Isle of Man' },
272
+ { :iso2 => 'IN', :fa => 'هند', :en => 'India' },
273
+ { :iso2 => 'IO', :fa => 'مستعمره‌های بریتانیا در اقیانوس هند', :en => 'British Indian Ocean Territory' },
274
+ { :iso2 => 'IQ', :fa => 'عراق', :en => 'Iraq' },
275
+ { :iso2 => 'IR', :fa => 'ایران', :en => 'Iran' },
276
+ { :iso2 => 'IS', :fa => 'ایسلند', :en => 'Iceland' },
277
+ { :iso2 => 'IT', :fa => 'ایتالیا', :en => 'Italy' },
278
+ { :iso2 => 'JE', :fa => 'جرسی', :en => 'Jersey' },
279
+ { :iso2 => 'JM', :fa => 'جامائیکا', :en => 'Jamaica' },
280
+ { :iso2 => 'JO', :fa => 'اردن', :en => 'Jordan' },
281
+ { :iso2 => 'JP', :fa => 'ژاپن', :en => 'Japan' },
282
+ { :iso2 => 'KE', :fa => 'کنیا', :en => 'Kenya' },
283
+ { :iso2 => 'KG', :fa => 'قرقیزستان', :en => 'Kyrgyzstan' },
284
+ { :iso2 => 'KH', :fa => 'کامبوج', :en => 'Cambodia' },
285
+ { :iso2 => 'KI', :fa => 'کریباتی', :en => 'Kiribati' },
286
+ { :iso2 => 'KM', :fa => 'کومورو', :en => 'Comoros' },
287
+ { :iso2 => 'KN', :fa => 'سنت کیتس و نویس', :en => 'Saint Kitts and Nevis' },
288
+ { :iso2 => 'KP', :fa => 'کره شمالی', :en => 'North Korea' },
289
+ { :iso2 => 'KR', :fa => 'کرهٔ جنوبی', :en => 'South Korea' },
290
+ { :iso2 => 'KW', :fa => 'کویت', :en => 'Kuwait' },
291
+ { :iso2 => 'KY', :fa => 'جزایر کِیمن', :en => 'Cayman Islands' },
292
+ { :iso2 => 'KZ', :fa => 'قزاقستان', :en => 'Kazakhstan' },
293
+ { :iso2 => 'LA', :fa => 'لائوس', :en => 'Laos' },
294
+ { :iso2 => 'LB', :fa => 'لبنان', :en => 'Lebanon' },
295
+ { :iso2 => 'LC', :fa => 'سنت لوسیا', :en => 'Saint Lucia' },
296
+ { :iso2 => 'LI', :fa => 'لیختن‌اشتاین', :en => 'Liechtenstein' },
297
+ { :iso2 => 'LK', :fa => 'سريلانكا', :en => 'Sri Lanka' },
298
+ { :iso2 => 'LR', :fa => 'لیبریا', :en => 'Liberia' },
299
+ { :iso2 => 'LS', :fa => 'لسوتو', :en => 'Lesotho' },
300
+ { :iso2 => 'LT', :fa => 'لیتوانی', :en => 'Lithuania' },
301
+ { :iso2 => 'LU', :fa => 'لوکزامبورگ', :en => 'Luxembourg' },
302
+ { :iso2 => 'LV', :fa => 'لتونی', :en => 'Latvia' },
303
+ { :iso2 => 'LY', :fa => 'لیبی', :en => 'Libya' },
304
+ { :iso2 => 'MA', :fa => 'مراکش', :en => 'Morocco' },
305
+ { :iso2 => 'MC', :fa => 'موناکو', :en => 'Monaco' },
306
+ { :iso2 => 'MD', :fa => 'مولداوی', :en => 'Moldova' },
307
+ { :iso2 => 'ME', :fa => 'مونته‌نگرو', :en => 'Montenegro' },
308
+ { :iso2 => 'MF', :fa => 'سنت مارتین', :en => 'Saint Martin' },
309
+ { :iso2 => 'MG', :fa => 'ماداگاسکار', :en => 'Madagascar' },
310
+ { :iso2 => 'MH', :fa => 'جزایر مارشال', :en => 'Marshall Islands' },
311
+ { :iso2 => 'MK', :fa => 'مقدونیه- فایروم', :en => 'Macedonia [FYROM]' },
312
+ { :iso2 => 'ML', :fa => 'مالی', :en => 'Mali' },
313
+ { :iso2 => 'MM', :fa => 'میانمار', :en => 'Myanmar [Burma]' },
314
+ { :iso2 => 'MN', :fa => 'مغولستان', :en => 'Mongolia' },
315
+ { :iso2 => 'MO', :fa => 'ماکائو', :en => 'Macau' },
316
+ { :iso2 => 'MP', :fa => 'جزایر ماریانای شمالی', :en => 'Northern Mariana Islands' },
317
+ { :iso2 => 'MQ', :fa => 'مارتینیک', :en => 'Martinique' },
318
+ { :iso2 => 'MR', :fa => 'موریتانی', :en => 'Mauritania' },
319
+ { :iso2 => 'MS', :fa => 'مونت‌سرات', :en => 'Montserrat' },
320
+ { :iso2 => 'MT', :fa => 'مالت', :en => 'Malta' },
321
+ { :iso2 => 'MU', :fa => 'موریس', :en => 'Mauritius' },
322
+ { :iso2 => 'MV', :fa => 'مالدیو', :en => 'Maldives' },
323
+ { :iso2 => 'MW', :fa => 'مالاوی', :en => 'Malawi' },
324
+ { :iso2 => 'MX', :fa => 'مکزیک', :en => 'Mexico' },
325
+ { :iso2 => 'MY', :fa => 'مالزی', :en => 'Malaysia' },
326
+ { :iso2 => 'MZ', :fa => 'موزامبیک', :en => 'Mozambique' },
327
+ { :iso2 => 'NA', :fa => 'نامیبیا', :en => 'Namibia' },
328
+ { :iso2 => 'NC', :fa => 'کالدونیای جدید', :en => 'New Caledonia' },
329
+ { :iso2 => 'NE', :fa => 'نیجر', :en => 'Niger' },
330
+ { :iso2 => 'NF', :fa => 'جزیرهٔ نورفولک', :en => 'Norfolk Island' },
331
+ { :iso2 => 'NG', :fa => 'نیجریه', :en => 'Nigeria' },
332
+ { :iso2 => 'NI', :fa => 'نیکاراگوئه', :en => 'Nicaragua' },
333
+ { :iso2 => 'NL', :fa => 'هلند', :en => 'Netherlands' },
334
+ { :iso2 => 'NO', :fa => 'نروژ', :en => 'Norway' },
335
+ { :iso2 => 'NP', :fa => 'نپال', :en => 'Nepal' },
336
+ { :iso2 => 'NR', :fa => 'نائورو', :en => 'Nauru' },
337
+ { :iso2 => 'NU', :fa => 'نیوئه', :en => 'Niue' },
338
+ { :iso2 => 'NZ', :fa => 'زلاند نو', :en => 'New Zealand' },
339
+ { :iso2 => 'OM', :fa => 'عمان', :en => 'Oman' },
340
+ { :iso2 => 'PA', :fa => 'پاناما', :en => 'Panama' },
341
+ { :iso2 => 'PE', :fa => 'پرو', :en => 'Peru' },
342
+ { :iso2 => 'PF', :fa => 'پلی‌نزی فرانسه', :en => 'French Polynesia' },
343
+ { :iso2 => 'PG', :fa => 'پاپوا گینه نو', :en => 'Papua New Guinea' },
344
+ { :iso2 => 'PH', :fa => 'فیلیپین', :en => 'Philippines' },
345
+ { :iso2 => 'PK', :fa => 'پاكستان', :en => 'Pakistan' },
346
+ { :iso2 => 'PL', :fa => 'لهستان', :en => 'Poland' },
347
+ { :iso2 => 'PM', :fa => 'سنت پیر و میکلون', :en => 'Saint Pierre and Miquelon' },
348
+ { :iso2 => 'PN', :fa => 'پیتکایرن', :en => 'Pitcairn Islands' },
349
+ { :iso2 => 'PR', :fa => 'پورتو ریکو', :en => 'Puerto Rico' },
350
+ { :iso2 => 'PS', :fa => 'فلسطین', :en => 'Palestinian Territories' },
351
+ { :iso2 => 'PT', :fa => 'پرتغال', :en => 'Portugal' },
352
+ { :iso2 => 'PW', :fa => 'پالائو', :en => 'Palau' },
353
+ { :iso2 => 'PY', :fa => 'پاراگوئه', :en => 'Paraguay' },
354
+ { :iso2 => 'QA', :fa => 'قطر', :en => 'Qatar' },
355
+ { :iso2 => 'QO', :fa => 'بخش‌های دورافتادهٔ اقیانوسیه', :en => 'Outlying Oceania' },
356
+ { :iso2 => 'QU', :fa => 'اتحادیهٔ اروپا', :en => 'European Union' },
357
+ { :iso2 => 'RE', :fa => 'ریونیون', :en => 'Réunion' },
358
+ { :iso2 => 'RO', :fa => 'رومانی', :en => 'Romania' },
359
+ { :iso2 => 'RS', :fa => 'صربستان', :en => 'Serbia' },
360
+ { :iso2 => 'RU', :fa => 'روسیه', :en => 'Russia' },
361
+ { :iso2 => 'RW', :fa => 'رواندا', :en => 'Rwanda' },
362
+ { :iso2 => 'SA', :fa => 'عربستان', :en => 'Saudi Arabia' },
363
+ { :iso2 => 'SB', :fa => 'جزایر سلیمان', :en => 'Solomon Islands' },
364
+ { :iso2 => 'SC', :fa => 'سیشل', :en => 'Seychelles' },
365
+ { :iso2 => 'SD', :fa => 'سودان', :en => 'Sudan' },
366
+ { :iso2 => 'SE', :fa => 'سوئد', :en => 'Sweden' },
367
+ { :iso2 => 'SG', :fa => 'سنگاپور', :en => 'Singapore' },
368
+ { :iso2 => 'SH', :fa => 'سنت هلن', :en => 'Saint Helena' },
369
+ { :iso2 => 'SI', :fa => 'اسلوونی', :en => 'Slovenia' },
370
+ { :iso2 => 'SJ', :fa => 'جزیره های اسوالبارد و جان ماین', :en => 'Svalbard and Jan Mayen' },
371
+ { :iso2 => 'SK', :fa => 'اسلواکی', :en => 'Slovakia' },
372
+ { :iso2 => 'SL', :fa => 'سیرالئون', :en => 'Sierra Leone' },
373
+ { :iso2 => 'SM', :fa => 'سان مارینو', :en => 'San Marino' },
374
+ { :iso2 => 'SN', :fa => 'سنگال', :en => 'Senegal' },
375
+ { :iso2 => 'SO', :fa => 'سومالی', :en => 'Somalia' },
376
+ { :iso2 => 'SR', :fa => 'سورينام', :en => 'Suriname' },
377
+ { :iso2 => 'ST', :fa => 'سائو تومه و پرینسیپه', :en => 'São Tomé and Príncipe' },
378
+ { :iso2 => 'SV', :fa => 'السالوادور', :en => 'El Salvador' },
379
+ { :iso2 => 'SY', :fa => 'سوریه', :en => 'Syria' },
380
+ { :iso2 => 'SZ', :fa => 'سوازیلند', :en => 'Swaziland' },
381
+ { :iso2 => 'TA', :fa => 'تریستان دا سونا', :en => 'Tristan da Cunha' },
382
+ { :iso2 => 'TC', :fa => 'جزایر ترک و کایکوس', :en => 'Turks and Caicos Islands' },
383
+ { :iso2 => 'TD', :fa => 'چاد', :en => 'Chad' },
384
+ { :iso2 => 'TF', :fa => 'مستعمره‌های جنوبی فرانسه', :en => 'French Southern Territories' },
385
+ { :iso2 => 'TG', :fa => 'توگو', :en => 'Togo' },
386
+ { :iso2 => 'TH', :fa => 'تایلند', :en => 'Thailand' },
387
+ { :iso2 => 'TJ', :fa => 'تاجیکستان', :en => 'Tajikistan' },
388
+ { :iso2 => 'TK', :fa => 'توکلائو', :en => 'Tokelau' },
389
+ { :iso2 => 'TL', :fa => 'تیمور شرقی', :en => 'East Timor' },
390
+ { :iso2 => 'TM', :fa => 'ترکمنستان', :en => 'Turkmenistan' },
391
+ { :iso2 => 'TN', :fa => 'تونس', :en => 'Tunisia' },
392
+ { :iso2 => 'TO', :fa => 'تونگا', :en => 'Tonga' },
393
+ { :iso2 => 'TR', :fa => 'ترکیه', :en => 'Turkey' },
394
+ { :iso2 => 'TT', :fa => 'ترینیداد و توباگو', :en => 'Trinidad and Tobago' },
395
+ { :iso2 => 'TV', :fa => 'تووالو', :en => 'Tuvalu' },
396
+ { :iso2 => 'TW', :fa => 'تایوان', :en => 'Taiwan' },
397
+ { :iso2 => 'TZ', :fa => 'تانزانیا', :en => 'Tanzania' },
398
+ { :iso2 => 'UA', :fa => 'اوکراین', :en => 'Ukraine' },
399
+ { :iso2 => 'UG', :fa => 'اوگاندا', :en => 'Uganda' },
400
+ { :iso2 => 'UM', :fa => 'جزایر کوچک دورافتادهٔ ایالات متحده', :en => 'U.S. Minor Outlying Islands' },
401
+ { :iso2 => 'US', :fa => 'ایالات متحدهٔ امریکا', :en => 'United States' },
402
+ { :iso2 => 'UY', :fa => 'اروگوئه', :en => 'Uruguay' },
403
+ { :iso2 => 'UZ', :fa => 'ازبکستان', :en => 'Uzbekistan' },
404
+ { :iso2 => 'VA', :fa => 'واتیکان', :en => 'Vatican City' },
405
+ { :iso2 => 'VC', :fa => 'سنت وینسنت و گرنادین', :en => 'Saint Vincent and the Grenadines' },
406
+ { :iso2 => 'VE', :fa => 'ونزوئلا', :en => 'Venezuela' },
407
+ { :iso2 => 'VG', :fa => 'جزایر ویرجین بریتانیا', :en => 'British Virgin Islands' },
408
+ { :iso2 => 'VI', :fa => 'جزایر ویرجین ایالات متحده', :en => 'U.S. Virgin Islands' },
409
+ { :iso2 => 'VN', :fa => 'ویتنام', :en => 'Vietnam' },
410
+ { :iso2 => 'VU', :fa => 'وانواتو', :en => 'Vanuatu' },
411
+ { :iso2 => 'WF', :fa => 'والیس و فیوتونا', :en => 'Wallis and Futuna' },
412
+ { :iso2 => 'WS', :fa => 'ساموا', :en => 'Samoa' },
413
+ { :iso2 => 'YE', :fa => 'یمن', :en => 'Yemen' },
414
+ { :iso2 => 'YT', :fa => 'مایوت', :en => 'Mayotte' },
415
+ { :iso2 => 'ZA', :fa => 'افریقای جنوبی', :en => 'South Africa' },
416
+ { :iso2 => 'ZM', :fa => 'زامبیا', :en => 'Zambia' },
417
+ { :iso2 => 'ZW', :fa => 'زیمبابوه', :en => 'Zimbabwe' },
418
+ { :iso2 => 'ZZ', :fa => 'ناحیهٔ نامشخص یا نامعتبر', :en => 'Unknown or Invalid Region' }
419
+
420
+ ]
421
+ # :startdoc:
422
+ end
423
+
424
+ String.send(:include, FarsiFu::NumbersExtensions::InstanceMethods)
425
+ Integer.send(:include, FarsiFu::NumbersExtensions::InstanceMethods)
426
+ Numeric.send(:include, FarsiFu::NumbersExtensions::InstanceMethods)
427
+ Fixnum.send(:include, FarsiFu::NumbersExtensions::InstanceMethods)
428
+ Float.send(:include, FarsiFu::NumbersExtensions::InstanceMethods)
@@ -0,0 +1,31 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+
3
+ describe "Farsifu" do
4
+
5
+ before(:all) do
6
+ PERSIAN_CHARS = "۱۲۳۴۵۶۷۸۹۰،×؛"
7
+ ENGLISH_CHARS = "1234567890,*;"
8
+ end
9
+
10
+ it "should convert English numbers to Persian numbers" do
11
+ ENGLISH_CHARS.to_farsi.should == PERSIAN_CHARS
12
+ end
13
+
14
+ it "should convert Persian numbers to Eersian numbers" do
15
+ PERSIAN_CHARS.to_english.should == ENGLISH_CHARS
16
+ end
17
+
18
+ it "should be able to spell positive and negetive integers in Persian" do
19
+ 1024.spell_farsi.should == "یک هزار و بیست و چهار"
20
+ -2567023.spell_farsi.should == "منفی دو میلیون و پانصد و شصت و هفت هزار و بیست و سه"
21
+ end
22
+
23
+ it "should be able to spell positive and negetive floats in Persian" do
24
+ 45.5.spell_farsi.should == "چهل و پنج ممیز پنج دهم"
25
+ 7.53.spell_farsi.should == "هفت ممیز پنجاه و سه صدم"
26
+ 0.163.spell_farsi.should == "صفر ممیز صد و شصت و سه هزارم"
27
+ -124.1.spell_farsi.should == "منفی صد و بیست و چهار ممیز یک دهم"
28
+ -0.999.spell_farsi.should == "منفی صفر ممیز نهصد و نود و نه هزارم"
29
+ end
30
+
31
+ end
@@ -0,0 +1,9 @@
1
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
2
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
3
+ require 'farsifu'
4
+ require 'spec'
5
+ require 'spec/autorun'
6
+
7
+ Spec::Runner.configure do |config|
8
+
9
+ end
metadata ADDED
@@ -0,0 +1,83 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: farsifu
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 2
8
+ - 0
9
+ version: 0.2.0
10
+ platform: ruby
11
+ authors:
12
+ - Aziz A. Bargi
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2010-03-03 00:00:00 +01:00
18
+ default_executable:
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: rspec
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ segments:
28
+ - 1
29
+ - 2
30
+ - 9
31
+ version: 1.2.9
32
+ type: :development
33
+ version_requirements: *id001
34
+ description:
35
+ email: allen.bargi@gmail.com
36
+ executables: []
37
+
38
+ extensions: []
39
+
40
+ extra_rdoc_files:
41
+ - LICENSE
42
+ - README.rdoc
43
+ files:
44
+ - LICENSE
45
+ - README.rdoc
46
+ - Rakefile
47
+ - TODO
48
+ - lib/farsifu.rb
49
+ - spec/farsifu_spec.rb
50
+ - spec/spec_helper.rb
51
+ has_rdoc: true
52
+ homepage: http://github.com/aziz/farsifu
53
+ licenses: []
54
+
55
+ post_install_message:
56
+ rdoc_options:
57
+ - --charset=UTF-8
58
+ require_paths:
59
+ - lib
60
+ required_ruby_version: !ruby/object:Gem::Requirement
61
+ requirements:
62
+ - - ">="
63
+ - !ruby/object:Gem::Version
64
+ segments:
65
+ - 0
66
+ version: "0"
67
+ required_rubygems_version: !ruby/object:Gem::Requirement
68
+ requirements:
69
+ - - ">="
70
+ - !ruby/object:Gem::Version
71
+ segments:
72
+ - 0
73
+ version: "0"
74
+ requirements: []
75
+
76
+ rubyforge_project:
77
+ rubygems_version: 1.3.6
78
+ signing_key:
79
+ specification_version: 3
80
+ summary: a toolbox for developing ruby applications in Persian (Farsi) language, see readme for features
81
+ test_files:
82
+ - spec/farsifu_spec.rb
83
+ - spec/spec_helper.rb