persian 0.0.0 → 0.1.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b63cdd29900ab756f4b9131f17fbc9f83c306d3a
4
- data.tar.gz: 620c1558f93094da1e51c55b95e74a6c27f7fe6c
3
+ metadata.gz: a3da98be66c4d89d5616c2ac992dac1ff75e05e9
4
+ data.tar.gz: 667c558c6581d116436f21484a5eeab5521e2226
5
5
  SHA512:
6
- metadata.gz: 67c5de3de078ffd4c88255a99de58205764a11161214710cfab3807fc4d0649905122a00ca56795975e08f7dd76d908a7cf4cde97923b66b4b4fcb1b6eaabfe8
7
- data.tar.gz: d7f8736ebadf999eb1821a7aa64a6f66d6b44d382a4d891d6c28b306e88911e0cb506cfd705246e392bcb61139ffe1f60b8194faff34afd24a3b5a576c69502d
6
+ metadata.gz: 75cb45dd4258664f5c614a303207d55fca8fee6205ce4b46b525e176dd2c1cac5d5c06e131bf7b47855c7abf72771fc83ad14358be8e61c1dd67b85b7da03aee
7
+ data.tar.gz: bf233aa8cc07b30c7abcc3ab9a84203fdbe21208ee3735bdcdf6444ced6378f36d31e335a39aeb3fecea8f46e40551d1bccc8773e4adb580eb91b29d32aa927b
data/lib/persian.rb CHANGED
@@ -1,42 +1,12 @@
1
1
  # -*- coding: UTF-8 -*-
2
2
 
3
- class Persian
4
- def self.number num
5
-
6
- if num.is_a? Numeric
7
- num = num.to_s
8
- end
3
+ require "persian/number"
4
+ require "persian/character"
5
+ require "persian/num_to_char"
9
6
 
10
- nums = {
11
- # english numbers
12
- "0" => "۰",
13
- "1" => "۱",
14
- "2" => "۲",
15
- "3" => "۳",
16
- "4" => "۴",
17
- "5" => "۵",
18
- "6" => "۶",
19
- "7" => "۷",
20
- "8" => "۸",
21
- "9" => "۹",
7
+ #lists
8
+ require "persian/list/number"
22
9
 
23
- #arabic numbers
24
- "٠" => "۰",
25
- "١" => "۱",
26
- "٢" => "۲",
27
- "٣" => "۳",
28
- "٤" => "۴",
29
- "٥" => "۵",
30
- "٦" => "۶",
31
- "٧" => "۷",
32
- "٨" => "۸",
33
- "٩" => "۹",
34
- }
35
-
36
- nums.each {|k, v|
37
- num.gsub!(k, v)
38
- }
10
+ class Persian
39
11
 
40
- return num
41
- end
42
12
  end
@@ -0,0 +1,26 @@
1
+ # -*- coding: UTF-8 -*-
2
+
3
+ class Persian
4
+ def self.character char
5
+
6
+ chars = {
7
+ "ك" => "ک",
8
+ "دِ" => "د",
9
+ "بِ" => "ب",
10
+ "زِ" => "ز",
11
+ "ذِ" => "ذ",
12
+ "شِ" => "ش",
13
+ "سِ" => "س",
14
+ "ى" => "ی",
15
+ "ي" => "ی",
16
+ "ة" => "ه",
17
+ "هٔ" => "ه"
18
+ }
19
+
20
+ chars.each {|k, v|
21
+ char.gsub!(k, v)
22
+ }
23
+
24
+ return char
25
+ end
26
+ end
@@ -0,0 +1,163 @@
1
+ # -*- coding: UTF-8 -*-
2
+
3
+ class Persian
4
+ @english_persian_numbers = {
5
+ # english numbers
6
+ "0" => "۰",
7
+ "1" => "۱",
8
+ "2" => "۲",
9
+ "3" => "۳",
10
+ "4" => "۴",
11
+ "5" => "۵",
12
+ "6" => "۶",
13
+ "7" => "۷",
14
+ "8" => "۸",
15
+ "9" => "۹",
16
+ }
17
+
18
+ @persian_english_numbers = {
19
+ # english numbers
20
+ "۰" => "0",
21
+ "۱" => "1",
22
+ "۲" => "2",
23
+ "۳" => "3",
24
+ "۴" => "4",
25
+ "۵" => "5",
26
+ "۶" => "6",
27
+ "۷" => "7",
28
+ "۸" => "8",
29
+ "۹" => "9",
30
+ }
31
+
32
+ @arabic_persian_numbers = {
33
+ #arabic numbers
34
+ "٠" => "۰",
35
+ "١" => "۱",
36
+ "٢" => "۲",
37
+ "٣" => "۳",
38
+ "٤" => "۴",
39
+ "٥" => "۵",
40
+ "٦" => "۶",
41
+ "٧" => "۷",
42
+ "٨" => "۸",
43
+ "٩" => "۹",
44
+ }
45
+
46
+ @persian_arabic_numbers = {
47
+ #arabic numbers
48
+ "۰" => "٠",
49
+ "۱" => "١",
50
+ "۲" => "٢",
51
+ "۳" => "٣",
52
+ "۴" => "٤",
53
+ "۵" => "٥",
54
+ "۶" => "٦",
55
+ "۷" => "٧",
56
+ "۸" => "٨",
57
+ "۹" => "٩",
58
+ }
59
+
60
+ @arabic_english_numbers = {
61
+ "٠" => "0",
62
+ "١" => "1",
63
+ "٢" => "2",
64
+ "٣" => "3",
65
+ "٤" => "4",
66
+ "٥" => "5",
67
+ "٦" => "6",
68
+ "٧" => "7",
69
+ "٨" => "8",
70
+ "٩" => "9"
71
+ }
72
+
73
+ @english_arabic_numbers = {
74
+ "0" => "٠",
75
+ "1" => "١",
76
+ "2" => "٢",
77
+ "3" => "٣",
78
+ "4" => "٤",
79
+ "5" => "٥",
80
+ "6" => "٦",
81
+ "7" => "٧",
82
+ "8" => "٨",
83
+ "9" => "٩"
84
+ }
85
+
86
+ @ones = [
87
+ "صفر",
88
+ "یک",
89
+ "دو",
90
+ "سه",
91
+ "چهار",
92
+ "پنج",
93
+ "شش",
94
+ "هفت",
95
+ "هشت",
96
+ "نه"
97
+ ]
98
+
99
+ @teens = [
100
+ "ده",
101
+ "یازده",
102
+ "دوازده",
103
+ "سیزده",
104
+ "چهارده",
105
+ "پانزده",
106
+ "شانزده",
107
+ "هفده",
108
+ "هجده",
109
+ "نوزده"
110
+ ]
111
+
112
+ @decimal = [
113
+ "",
114
+ "",
115
+ "بیست",
116
+ "سی",
117
+ "چهل",
118
+ "پنجاه",
119
+ "شصت",
120
+ "هفتاد",
121
+ "هشتاد",
122
+ "نود"
123
+ ]
124
+
125
+ @hundreds = [
126
+ "",
127
+ "صد",
128
+ "دویست",
129
+ "سیصد",
130
+ "چهارصد",
131
+ "پانصد",
132
+ "ششصد",
133
+ "هفتصد",
134
+ "هشتصد",
135
+ "نهصد"
136
+ ]
137
+
138
+ @longscale = [
139
+ "",
140
+ "هزار",
141
+ "میلیون",
142
+ "میلیارد",
143
+ "بیلیون",
144
+ "بیلیارد",
145
+ "تریلیون",
146
+ "تریلیارد",
147
+ "کوآدریلیون",
148
+ "کادریلیارد",
149
+ "کوینتیلیون",
150
+ "کوانتینیارد",
151
+ "سکستیلیون",
152
+ "سکستیلیارد",
153
+ "سپتیلیون",
154
+ "سپتیلیارد",
155
+ "اکتیلیون",
156
+ "اکتیلیارد",
157
+ "نانیلیون",
158
+ "نانیلیارد",
159
+ "دسیلیون",
160
+ "دسیلیارد"
161
+ ]
162
+
163
+ end
@@ -0,0 +1,60 @@
1
+ # -*- coding: UTF-8 -*-
2
+
3
+ class Persian
4
+ def self.num_to_char num, inner = false
5
+
6
+ if num.kind_of? String
7
+ num = Persian.number(num, {lang: "en", return: "int"})
8
+ end
9
+
10
+ words = ""
11
+
12
+
13
+
14
+ if ((num / 100) >= 0) && ((num / 100) < 10)
15
+
16
+ if num < 10
17
+ if (num == 0) && inner
18
+ words += ""
19
+ elsif inner
20
+ words += " و "
21
+ words += @ones[num]
22
+ else
23
+ words += @ones[num]
24
+ end
25
+
26
+ elsif num < 20
27
+ words += @teens[num - 10]
28
+ elsif num < 100
29
+ if inner
30
+ words += " و "
31
+ end
32
+
33
+ words += @decimal[num/10] + num_to_char(num%10, true)
34
+ else
35
+ if inner
36
+ words += " و "
37
+ end
38
+
39
+ words += @hundreds[num/100] + num_to_char(num%100, true)
40
+ end
41
+ else
42
+ if inner
43
+ words += " و "
44
+ end
45
+
46
+ if (num.to_s.length%3) != 0
47
+ current_split = num.to_s[0..(num.to_s.length%3 - 1).to_i]
48
+ more_split = num.to_s.sub(current_split, "")
49
+ words += num_to_char(current_split) + " " + @longscale[(num.to_s.length / 3)] + num_to_char(more_split, true)
50
+ else
51
+ current_split = num.to_s[0..2]
52
+ more_split = num.to_s.sub(current_split, "")
53
+ words += num_to_char(current_split) + " " + @longscale[(num.to_s.length / 3)-1] + num_to_char(more_split, true)
54
+ end
55
+ end
56
+
57
+ words
58
+
59
+ end
60
+ end
@@ -0,0 +1,32 @@
1
+ # -*- coding: UTF-8 -*-
2
+
3
+ class Persian
4
+
5
+ def self.number num, opts = {:lang => "fa", :return => "string" }
6
+
7
+ if num.is_a? Numeric
8
+ num = num.to_s
9
+ end
10
+
11
+ if opts[:lang] == "fa" || opts[:lang] == nil
12
+ nums = @english_persian_numbers.merge(@arabic_persian_numbers)
13
+ elsif opts[:lang] == "en"
14
+ nums = @persian_english_numbers.merge(@arabic_english_numbers)
15
+ elsif opts[:lang] == "ar"
16
+ nums = @persian_arabic_numbers.merge(@english_arabic_numbers)
17
+ end
18
+
19
+ nums.each {|k, v|
20
+ num.gsub!(k, v)
21
+ }
22
+
23
+ if opts[:return] == "string"
24
+ return num
25
+ elsif opts[:return] == "int"
26
+ return num.to_i
27
+ else
28
+ return num
29
+ end
30
+ end
31
+
32
+ end
@@ -1,5 +1,5 @@
1
1
  # -*- coding: UTF-8 -*-
2
2
 
3
3
  module Persian
4
- VERSION = '0.0.0'
4
+ VERSION = '0.1.0'
5
5
  end
metadata CHANGED
@@ -1,36 +1,40 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: persian
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.0
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dariush Abbasi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-09-03 00:00:00.000000000 Z
11
+ date: 2016-06-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: 3.4.0
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0'
27
- description: ''
26
+ version: 3.4.0
27
+ description: A set of utilities for Persian language.
28
28
  email: poshtehani@gmail.com
29
29
  executables: []
30
30
  extensions: []
31
31
  extra_rdoc_files: []
32
32
  files:
33
33
  - lib/persian.rb
34
+ - lib/persian/character.rb
35
+ - lib/persian/list/number.rb
36
+ - lib/persian/num_to_char.rb
37
+ - lib/persian/number.rb
34
38
  - lib/persian/version.rb
35
39
  homepage: http://github.com/goonia/persian
36
40
  licenses:
@@ -55,6 +59,6 @@ rubyforge_project:
55
59
  rubygems_version: 2.4.6
56
60
  signing_key:
57
61
  specification_version: 4
58
- summary: Persian language set of utilities.
62
+ summary: A set of utilities for Persian language.
59
63
  test_files: []
60
64
  has_rdoc: