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 +20 -0
- data/README.rdoc +41 -0
- data/Rakefile +73 -0
- data/TODO +0 -0
- data/lib/farsifu.rb +428 -0
- data/spec/farsifu_spec.rb +31 -0
- data/spec/spec_helper.rb +9 -0
- metadata +83 -0
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
|
data/spec/spec_helper.rb
ADDED
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
|