farsifu 0.5.0 → 0.5.1

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 77f2e7fa525f962740d9a65c8c32ac608a53f932
4
+ data.tar.gz: 936331335817d203a17e178768fa942627c0a768
5
+ SHA512:
6
+ metadata.gz: 24403f36d3e7ea8b006bcab1555155dd2ae8980d1cb9b60e85d9aa0bcc472b9c660547ecaad757d2addc283f221264728a4ee61d4f8bc772ddc84d2d5ffa2bc4
7
+ data.tar.gz: 9c197a17b8ff8ffa3fa6f912f5a13df6557a2998c18a41dbb22c914ce0549d6836b2b10c276eac1f8921bfbd04a26f723d660751f7db0dd5d081e969eef2c488
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- farsifu (0.4.0)
4
+ farsifu (0.5.1)
5
5
 
6
6
  GEM
7
7
  remote: http://rubygems.org/
@@ -40,7 +40,10 @@ PLATFORMS
40
40
  ruby
41
41
 
42
42
  DEPENDENCIES
43
- bundler (~> 1.2.0)
43
+ bundler (~> 1.10.0)
44
44
  farsifu!
45
45
  guard-rspec
46
46
  rspec (~> 2.12.0)
47
+
48
+ BUNDLED WITH
49
+ 1.10.6
data/README.md CHANGED
@@ -5,7 +5,7 @@ farsifu is a toolbox for developing ruby applications in Persian (Farsi) languag
5
5
  * Converting numbers to and from Persian numbers
6
6
  * Spelling numbers in Persian (supports ordinal spelling of numbers in Persian)
7
7
  * Converting Persian spelling of numbers back to normal numbers (see examples below)
8
- * List of Iran's provinces, cities, counties
8
+ * List of Iran's provinces, cities and counties
9
9
  * List of countries in Persian
10
10
 
11
11
  ## Examples:
@@ -19,7 +19,7 @@ Gem::Specification.new do |s|
19
19
  s.require_paths = ["lib"]
20
20
  s.extra_rdoc_files = [ "LICENSE", "README.md"]
21
21
  s.rdoc_options = ["--charset=UTF-8"]
22
- s.add_development_dependency(%q<rspec>, ["~> 2.12.0"])
23
- s.add_development_dependency(%q<bundler>, ["~> 1.2.0"])
24
- s.add_development_dependency(%q<guard-rspec>)
22
+ s.add_development_dependency 'rspec', '~> 2.12.0'
23
+ s.add_development_dependency 'bundler', '~> 1.10.0'
24
+ s.add_development_dependency 'guard-rspec'
25
25
  end
@@ -4,7 +4,7 @@ module FarsiFu
4
4
  PERSIAN_CHARS = "۱۲۳۴۵۶۷۸۹۰،؛"
5
5
  ENGLISH_CHARS = "1234567890,;"
6
6
 
7
- SIGNS ={
7
+ SIGNS = {
8
8
  "-" => "منفی ",
9
9
  "+" => "مثبت "
10
10
  }
@@ -54,7 +54,7 @@ module FarsiFu
54
54
  EXCEPTIONS_INVERT = EXCEPTIONS.invert
55
55
 
56
56
  POWER_OF_TEN = {
57
- # based on:
57
+ # based on:
58
58
  # https://fa.wikipedia.org/wiki/%D9%86%D8%A7%D9%85_%D8%A7%D8%B9%D8%AF%D8%A7%D8%AF_%D8%A8%D8%B2%D8%B1%DA%AF
59
59
  "ده" => 1,
60
60
  "هزار" => 3,
@@ -70,7 +70,7 @@ module FarsiFu
70
70
  "کوانتینیارد" => 33,
71
71
  "سکستیلیون" => 36,
72
72
  "سکستیلیارد" => 39,
73
- "دسیلیون" => 42,
73
+ "سپتیلیون" => 42,
74
74
  "سپتیلیارد" => 45,
75
75
  "اکتیلیون" => 48,
76
76
  "اکتیلیارد" => 51,
@@ -10,9 +10,9 @@ module FarsiFu
10
10
  # Returns a string which is the equivalent English number of a Persian number (in String)
11
11
  #
12
12
  # Example:
13
- # "۱۲۳".to_english # => "123"
13
+ # "۱۲۳".to_english # => "123"
14
14
  def to_english
15
- self.to_s.tr(PERSIAN_CHARS,ENGLISH_CHARS)
15
+ to_s.tr(PERSIAN_CHARS, ENGLISH_CHARS)
16
16
  end
17
17
 
18
18
  # Returns a string which is the equivalent Persian number of an English number (in String)
@@ -21,15 +21,15 @@ module FarsiFu
21
21
  # alias: to_persian
22
22
  #
23
23
  # Example:
24
- # "123".to_farsi # => "۱۲۳"
25
- # "456".to_persian # => "۴۵۶"
26
- # 789.to_farsi # => "۷۸۹"
24
+ # "123".to_farsi # => "۱۲۳"
25
+ # "456".to_persian # => "۴۵۶"
26
+ # 789.to_farsi # => "۷۸۹"
27
27
  def to_farsi
28
- self.to_s.tr(ENGLISH_CHARS,PERSIAN_CHARS)
28
+ to_s.tr(ENGLISH_CHARS, PERSIAN_CHARS)
29
29
  end
30
30
 
31
31
  def to_s
32
32
  @number.to_s
33
33
  end
34
34
  end
35
- end
35
+ end
@@ -14,8 +14,8 @@ module FarsiFu
14
14
  # accpets english numbers (in float,fixnum or string)
15
15
  #
16
16
  # Example:
17
- # 5678.spell_farsi # => "پنج هزار و ششصد و هفتاد و هشت"
18
- # 3.22.spell_farsi # => "سه ممیز بیست و دو صدم"
17
+ # 5678.spell_farsi # => "پنج هزار و ششصد و هفتاد و هشت"
18
+ # 3.22.spell_farsi # => "سه ممیز بیست و دو صدم"
19
19
  def spell_farsi
20
20
  if @float
21
21
  parse_and_spell_float
@@ -27,23 +27,24 @@ module FarsiFu
27
27
  # Spells numbers in sequentional format. If pass `true`, it will use the second format
28
28
  #
29
29
  # Example:
30
- # 1.spell_ordinal_farsi # => "اول"
31
- # 121.spell_ordinal_farsi # => "صد و بیست و یکم"
32
- # 2.spell_ordinal_farsi(true) # => "دومین"
33
- # 2054.spell_ordinal_farsi(true) # => "دو هزار و پنجاه چهارمین"
30
+ # 1.spell_ordinal_farsi # => "اول"
31
+ # 121.spell_ordinal_farsi # => "صد و بیست و یکم"
32
+ # 2.spell_ordinal_farsi(true) # => "دومین"
33
+ # 2054.spell_ordinal_farsi(true) # => "دو هزار و پنجاه چهارمین"
34
34
  def spell_ordinal_farsi(second_type = false)
35
35
  if second_type
36
- exceptions = {'0' => "صفر", '1' => "اولین", '3' => "سومین"}
37
- suffix = "مین"
36
+ exceptions = { '0' => 'صفر', '1' => 'اولین', '3' => 'سومین' }
37
+ suffix = 'مین'
38
38
  else
39
- exceptions = {'0' => "صفر", '1' => "اول", '3' => "سوم"}
40
- suffix = "م"
39
+ exceptions = { '0' => 'صفر', '1' => 'اول', '3' => 'سوم' }
40
+ suffix = 'م'
41
41
  end
42
42
 
43
43
  make_ordinal_spell(exceptions, suffix)
44
44
  end
45
45
 
46
- private
46
+ private
47
+
47
48
  def parse_and_spell_real_number
48
49
  answer = []
49
50
  group_by_power do |power, num|
@@ -52,23 +53,23 @@ module FarsiFu
52
53
  end
53
54
  spell = answer.compact.reverse.join(' و ').prepend("#{SIGNS[@sign]}")
54
55
  # verbose false?
55
- spell.gsub!(/^(منفی\s|مثبت\s)*یک\sهزار/) {"#{$1}هزار"} unless @verbose
56
+ spell.gsub!(/^(منفی\s|مثبت\s)*یک\sهزار/) { "#{$1}هزار" } unless @verbose
56
57
  spell
57
58
  end
58
59
 
59
60
  def parse_and_spell_float
60
61
  # Seperate floating point
61
- float_num = @number.match(/\./)
62
- pre_num, post_num = float_num.pre_match.prepend("#{@sign}"), float_num.post_match
62
+ float_num = @number.match(/\./)
63
+ pre_num = float_num.pre_match.prepend("#{@sign}")
64
+ post_num = float_num.post_match
63
65
  # To convert it to دهم, صدم...
64
- floating_point_power = 10 ** post_num.size
65
-
66
+ floating_point_power = 10**post_num.size
66
67
  pre_num_spell = NumToWord.new(pre_num).spell_farsi
67
- pre_num_spell << 'صفر' if pre_num == '0' and @verbose
68
+ pre_num_spell << 'صفر' if pre_num == '0' && @verbose
68
69
  post_num_spell = NumToWord.new(post_num).spell_farsi
69
70
  floating_point_power_spell = NumToWord.new(floating_point_power, false).spell_ordinal_farsi.gsub(/یک\s*/, '')
70
71
 
71
- if pre_num != '0' or @verbose
72
+ if pre_num != '0' || @verbose
72
73
  "#{pre_num_spell} ممیز #{post_num_spell} #{floating_point_power_spell}"
73
74
  else
74
75
  "#{pre_num_spell if pre_num_spell.size > 0}#{post_num_spell} #{floating_point_power_spell}"
@@ -78,15 +79,14 @@ module FarsiFu
78
79
  # checks if the first char is `+` or `-` and returns the sign
79
80
  def check_for_sign
80
81
  sign = @number.slice(0).match(/(-|\+)/)
81
- if sign
82
- # remove the sign from number
83
- @number.slice!(0)
84
- sign[1]
85
- end
82
+ return unless sign
83
+ # remove the sign from number
84
+ @number.slice!(0)
85
+ sign[1]
86
86
  end
87
87
 
88
88
  # '1234567' #=> {0=>["7", "6", "5"], 3=>["4", "3", "2"], 6=>["1"]}
89
- def group_by_power &block
89
+ def group_by_power(&block)
90
90
  power = 0
91
91
  @number.split('').reverse.each_slice(3) do |digit|
92
92
  yield power, digit
@@ -101,7 +101,7 @@ module FarsiFu
101
101
  num.each_with_index do |n, i|
102
102
  # The 'n' is zero? no need to evaluate
103
103
  next if n == '0'
104
- exception_index = n.to_i * (10 ** i)
104
+ exception_index = n.to_i * (10**i)
105
105
 
106
106
  case i
107
107
  when 0
@@ -131,4 +131,4 @@ module FarsiFu
131
131
  end
132
132
  end
133
133
  end
134
- end
134
+ end
@@ -1,3 +1,3 @@
1
1
  module FarsiFu
2
- VERSION = "0.5.0"
3
- end
2
+ VERSION = "0.5.1"
3
+ end
@@ -11,7 +11,7 @@ module FarsiFu
11
11
  # Example:
12
12
  # "صد و بیست و یک".to_number #=> 121
13
13
  def to_number
14
- return @number_in_words if !(@number_in_words.is_a? String)
14
+ return @number_in_words unless @number_in_words.is_a?(String)
15
15
 
16
16
  numbers_array = make_integer_array(@number_in_words)
17
17
 
@@ -32,7 +32,8 @@ module FarsiFu
32
32
  answer += memory
33
33
  end
34
34
 
35
- private
35
+ private
36
+
36
37
  # returns an array of corresponding numbers from string
37
38
  # [1, 1000000, 200, 30, 5, 1000, 400, 30, 3]
38
39
  def make_integer_array(number_in_words)
@@ -40,7 +41,7 @@ module FarsiFu
40
41
  numbers_array = []
41
42
  number_in_words.each do |number|
42
43
  if power_of_ten? number
43
- numbers_array << 10 ** POWER_OF_TEN[number]
44
+ numbers_array << 10**POWER_OF_TEN[number]
44
45
  else
45
46
  numbers_array << EXCEPTIONS[number]
46
47
  end
@@ -57,10 +58,10 @@ module FarsiFu
57
58
  def divisible_by_thousand?(number)
58
59
  number % 1000 == 0
59
60
  end
60
-
61
+
61
62
  # Checks if the number is power of ten
62
- def power_of_ten? number
63
+ def power_of_ten?(number)
63
64
  POWER_OF_TEN.keys.include? number
64
65
  end
65
66
  end
66
- end
67
+ end
@@ -308,7 +308,6 @@ module Iran
308
308
  { :iso2 => 'ZM', :fa => 'زامبیا', :en => 'Zambia' },
309
309
  { :iso2 => 'ZW', :fa => 'زیمبابوه', :en => 'Zimbabwe' },
310
310
  { :iso2 => 'ZZ', :fa => 'ناحیهٔ نامشخص یا نامعتبر', :en => 'Unknown or Invalid Region' }
311
-
312
311
  ]
313
312
  # :startdoc:
314
313
  end
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: farsifu
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
5
- prerelease:
4
+ version: 0.5.1
6
5
  platform: ruby
7
6
  authors:
8
7
  - Allen A. Bargi
@@ -10,54 +9,48 @@ authors:
10
9
  autorequire:
11
10
  bindir: bin
12
11
  cert_chain: []
13
- date: 2013-02-15 00:00:00.000000000 Z
12
+ date: 2015-09-03 00:00:00.000000000 Z
14
13
  dependencies:
15
14
  - !ruby/object:Gem::Dependency
16
15
  name: rspec
17
16
  requirement: !ruby/object:Gem::Requirement
18
- none: false
19
17
  requirements:
20
- - - ~>
18
+ - - "~>"
21
19
  - !ruby/object:Gem::Version
22
20
  version: 2.12.0
23
21
  type: :development
24
22
  prerelease: false
25
23
  version_requirements: !ruby/object:Gem::Requirement
26
- none: false
27
24
  requirements:
28
- - - ~>
25
+ - - "~>"
29
26
  - !ruby/object:Gem::Version
30
27
  version: 2.12.0
31
28
  - !ruby/object:Gem::Dependency
32
29
  name: bundler
33
30
  requirement: !ruby/object:Gem::Requirement
34
- none: false
35
31
  requirements:
36
- - - ~>
32
+ - - "~>"
37
33
  - !ruby/object:Gem::Version
38
- version: 1.2.0
34
+ version: 1.10.0
39
35
  type: :development
40
36
  prerelease: false
41
37
  version_requirements: !ruby/object:Gem::Requirement
42
- none: false
43
38
  requirements:
44
- - - ~>
39
+ - - "~>"
45
40
  - !ruby/object:Gem::Version
46
- version: 1.2.0
41
+ version: 1.10.0
47
42
  - !ruby/object:Gem::Dependency
48
43
  name: guard-rspec
49
44
  requirement: !ruby/object:Gem::Requirement
50
- none: false
51
45
  requirements:
52
- - - ! '>='
46
+ - - ">="
53
47
  - !ruby/object:Gem::Version
54
48
  version: '0'
55
49
  type: :development
56
50
  prerelease: false
57
51
  version_requirements: !ruby/object:Gem::Requirement
58
- none: false
59
52
  requirements:
60
- - - ! '>='
53
+ - - ">="
61
54
  - !ruby/object:Gem::Version
62
55
  version: '0'
63
56
  description: a toolbox for developing ruby applications in Persian (Farsi) language,
@@ -69,7 +62,7 @@ extra_rdoc_files:
69
62
  - LICENSE
70
63
  - README.md
71
64
  files:
72
- - .gitignore
65
+ - ".gitignore"
73
66
  - Gemfile
74
67
  - Gemfile.lock
75
68
  - Guardfile
@@ -93,28 +86,27 @@ files:
93
86
  - spec/spec_helper.rb
94
87
  homepage: http://github.com/aziz/farsifu
95
88
  licenses: []
89
+ metadata: {}
96
90
  post_install_message:
97
91
  rdoc_options:
98
- - --charset=UTF-8
92
+ - "--charset=UTF-8"
99
93
  require_paths:
100
94
  - lib
101
95
  required_ruby_version: !ruby/object:Gem::Requirement
102
- none: false
103
96
  requirements:
104
- - - ! '>='
97
+ - - ">="
105
98
  - !ruby/object:Gem::Version
106
99
  version: '0'
107
100
  required_rubygems_version: !ruby/object:Gem::Requirement
108
- none: false
109
101
  requirements:
110
- - - ! '>='
102
+ - - ">="
111
103
  - !ruby/object:Gem::Version
112
104
  version: '0'
113
105
  requirements: []
114
106
  rubyforge_project: farsifu
115
- rubygems_version: 1.8.23
107
+ rubygems_version: 2.4.8
116
108
  signing_key:
117
- specification_version: 3
109
+ specification_version: 4
118
110
  summary: a toolbox for developing ruby applications in Persian (Farsi) language, see
119
111
  readme file for features
120
112
  test_files: