turkish_numeric 0.0.1 → 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
  SHA256:
3
- metadata.gz: 29df8a76d18edcf7da4ba05ffb469626b89146760c7618aae45d517da61ebab5
4
- data.tar.gz: b3907fe5ab989fc6899c3ed0211070ebfa591836c466a889fcb6b0795901d1be
3
+ metadata.gz: 271ea6e0a9ca641c53d182ea49ce3511a5815eb21d424c7cad97f538e2744e4c
4
+ data.tar.gz: 681cae2db83a633cd474c81d22d38473a0b0588a93d5fecf34ee2bd521123248
5
5
  SHA512:
6
- metadata.gz: 2562228d34a67fa9dcff088ba07a3f7c6ccdf103e0d37516f19f2bc2c7e93fc6fac1437c4d6790d02d8d1d0f22025f75dc05e5a66ae7ee017c1683e1ed60508d
7
- data.tar.gz: 45d6147d125729765de105534711d3fa3be3369e62246e263b3013e5cd6fa50b3314e76529d16d85950e57d18ef7c2df68228664ce11e26fa0fe8317576698f1
6
+ metadata.gz: 0e618195377ce4199f55020de3977e9e8170435c469dc57fb7093373e62538c751a9974d587dea20e46762caa5cebf3c21930bd9c38fa4b4d9d7fb271afa8091
7
+ data.tar.gz: c9f2553ec242b3494c745701f4aec6512be7b27b57c24fa1e60ab3b493929ccdd57b16f2f526c2f673fb527a40b9f9b56d7d5bfd9c1c6a261b7febedfce5e85b
data/.gitignore CHANGED
@@ -1,3 +1,4 @@
1
+ *.gem
1
2
  /.bundle/
2
3
  /.yardoc
3
4
  /_yardoc/
data/.rubocop.yml CHANGED
@@ -1,5 +1,6 @@
1
1
  AllCops:
2
2
  TargetRubyVersion: 2.7.0
3
+ NewCops: enable
3
4
 
4
5
  Style/StringLiterals:
5
6
  Enabled: true
@@ -21,3 +22,4 @@ Style/MixinUsage:
21
22
  Metrics/BlockLength:
22
23
  Exclude:
23
24
  - 'spec/*'
25
+
data/.travis.yml CHANGED
@@ -3,4 +3,4 @@ language: ruby
3
3
  cache: bundler
4
4
  rvm:
5
5
  - 2.7.0
6
- before_install: gem install bundler -v 2.2.5
6
+ before_install: gem install bundler -v 2.2.8
data/Gemfile CHANGED
@@ -1,8 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  source 'https://rubygems.org'
4
-
5
- # Specify your gem's dependencies in turkish_numeric.gemspec
6
4
  gemspec
7
5
 
8
6
  gem 'rake', '~> 13.0'
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- turkish_numeric (0.0.1)
4
+ turkish_numeric (0.1.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -49,6 +49,7 @@ GEM
49
49
 
50
50
  PLATFORMS
51
51
  x86_64-darwin-19
52
+ x86_64-linux
52
53
 
53
54
  DEPENDENCIES
54
55
  rake (~> 13.0)
@@ -59,4 +60,4 @@ DEPENDENCIES
59
60
  turkish_numeric!
60
61
 
61
62
  BUNDLED WITH
62
- 2.2.5
63
+ 2.2.8
data/README.md CHANGED
@@ -1,11 +1,6 @@
1
- # TurkishNumeric
1
+ # TurkishNumeric [![Gem Version](https://badge.fury.io/rb/turkish_numeric.svg)](https://badge.fury.io/rb/turkish_numeric) [![Build Status](https://travis-ci.com/sbagdat/turkish_numeric.svg?branch=main)](https://travis-ci.com/sbagdat/turkish_numeric) [![Code Climate](https://codeclimate.com/github/sbagdat/turkish_numeric/badges/gpa.svg)](https://codeclimate.com/github/sbagdat/turkish_numeric) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
2
2
 
3
- [![Gem Version](https://badge.fury.io/rb/turkish_numeric.svg)](https://badge.fury.io/rb/turkish_numeric)
4
- [![Build Status](https://travis-ci.com/sbagdat/turkish_numeric.svg?branch=main)](https://travis-ci.com/sbagdat/turkish_numeric)
5
- [![Code Climate](https://codeclimate.com/github/sbagdat/turkish_numeric/badges/gpa.svg)](https://codeclimate.com/github/sbagdat/turkish_numeric)
6
- [![Coverage Status](https://coveralls.io/repos/github/sbagdat/turkish_numeric/badge.svg?branch=main)](https://coveralls.io/github/sbagdat/turkish_numeric?branch=main)
7
-
8
- Translate any numeric value into Turkish text.
3
+ Translate any numeric value into Turkish text, currency notation and text representation of money.
9
4
 
10
5
  ## Installation
11
6
 
@@ -25,21 +20,75 @@ Or install it yourself as:
25
20
 
26
21
  ## Usage
27
22
 
28
- After the installation of the gem, you can use it as shown below:
23
+ First, you should require the gem (if you are using rails you don't need to require).
29
24
 
30
25
  ```ruby
31
26
  require 'turkish_numeric'
27
+ ```
32
28
 
29
+ If you like shorter code lines you can include the module and can use `TrNum(numeric_value)` utility method.
30
+ Otherwise you should use `TurkishNumeric::TrNum.new(numeric_value)` or `TurkishNumeric.TrNum(numeric_value)`.
31
+ At the examples below, shorter version is used.
32
+
33
+ ```ruby
33
34
  include TurkishNumeric
35
+ ```
36
+
37
+ ### Translating integer numbers
34
38
 
35
- # Translating integers
39
+ ```ruby
40
+ TrNum(0).to_text # => "sıfır"
36
41
  TrNum(34_430_002).to_text # => "otuz dört milyon dört yüz otuz bin iki"
42
+ TrNum(-999999).to_text # => "eksi dokuz yüz doksan dokuz bin dokuz yüz doksan dokuz"
43
+ ```
44
+
45
+ You can translate any integer value from **-999 * 10<sup>63</sup>** to **999 * 10<sup>63</sup>**.
46
+
47
+ ```ruby
48
+ TrNum(999_000_000_999_000_000_000_000_000_000_000_000_000_000_009_900_000_000_000_000_000_000).to_text
49
+ # => "dokuz yüz doksan dokuz vigintilyon dokuz yüz doksan dokuz septendesilyon dokuz sekstilyon dokuz yüz kentilyon"
50
+ ```
51
+
52
+ ### Translating floating point numbers
53
+
54
+ ```ruby
55
+ TrNum(1234.00001).to_text # => "bin iki yüz otuz dört tam yüz binde bir"
56
+ TrNum(34_430_002.45).to_text # => "otuz dört milyon dört yüz otuz bin iki yüzde kırk beş"
57
+ TrNum(12.00120012).to_text # => "on iki tam yüz milyonda yüz yirmi bin on iki"
58
+ TrNum(0.9999999999999999).to_text
59
+ # => "sıfır tam on katrilyonda dokuz katrilyon dokuz yüz doksan dokuz trilyon dokuz yüz doksan dokuz
60
+ # milyar dokuz yüz doksan dokuz milyon dokuz yüz doksan dokuz bin dokuz yüz doksan dokuz"
61
+ ```
62
+
63
+ ### Translating as money
64
+
65
+ ```ruby
66
+ TrNum(12.34).to_money # => "₺12,34"
67
+ TrNum(120.34).to_money # => "₺0,34"
68
+ TrNum(343_211_122_332.45).to_money # => "₺343.211.122.332,45"
69
+ ```
70
+
71
+ Custom currency symbol, thousand seperator, and penny seperator are also supported.
37
72
 
38
- # Translating floats
39
- TrNum(1234.00001).to_text # => "bin iki yüz otuz dört tam yüz binde bir"
73
+ ```ruby
74
+ TrNum(12_332.45).to_money(symbol: '€',
75
+ thousand_sep: ',',
76
+ penny_sep: '.')
77
+ # => "€12,332.45"
40
78
  ```
41
79
 
42
- For more examples look at teh test files [here](spec/tr_num_spec.rb)
80
+ ### Translating as money text
81
+
82
+ ```ruby
83
+ TrNum(234.05).to_money_text # => "ikiyüzotuzdörtTL,beşkr"
84
+ TrNum(600_000.125).to_money_text # => "altıyüzbinTL,onikikr"
85
+ ```
86
+
87
+ Custom currency and sub currency are also supported.
88
+ ```ruby
89
+ TrNum(234.45).to_money_text(currency: 'USD', sub_currency: 'sent')
90
+ # => 'ikiyüzotuzdörtUSD,kırkbeşsent'
91
+ ```
43
92
 
44
93
  ## Development
45
94
 
@@ -1,10 +1,17 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_relative 'turkish_numeric/version'
4
+ require_relative 'turkish_numeric/number_presenter'
4
5
  require_relative 'turkish_numeric/tr_num'
5
6
 
7
+ # Responsible for converting numerical values into Turkish texts,
8
+ # currency nototaion, or text representation of money.
6
9
  module TurkishNumeric
7
- def TrNum(num)
10
+ # Helper to create TrNum objects quickly
11
+ #
12
+ # @param [Integer, Float] num
13
+ # @return [TurkishNumeric::TrNum]
14
+ def TrNum(num) # rubocop:disable Naming/MethodName
8
15
  TrNum.new(num)
9
16
  end
10
17
  end
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ module TurkishNumeric
4
+ # Responsible for providing helper methods to present numbers as text
5
+ module NumberPresenter
6
+ # Create thousand seperated representaion of numeric value
7
+ #
8
+ # @param [Integer] numeric
9
+ # @param [String] sep
10
+ # @return [String]
11
+ def thousands_separated(numeric, sep: '.')
12
+ numeric.digits.each_slice(3).map(&:join).join(sep).reverse
13
+ end
14
+
15
+ # Creates single spaced string representation of the argument
16
+ #
17
+ # @param [Array] parts
18
+ # @return [String]
19
+ def text_spaced(*parts)
20
+ parts.flatten.compact.join(' ')
21
+ end
22
+
23
+ # Creates non-spaced string representation of the argument
24
+ #
25
+ # @param [Array] parts
26
+ # @return [String]
27
+ def text_non_spaced(*parts)
28
+ parts.join
29
+ end
30
+
31
+ # Extracts pennies from the argument
32
+ #
33
+ # @param [Integer] numeric
34
+ # @return [Integer]
35
+ def to_pennies(numeric)
36
+ return numeric if numeric < 100
37
+
38
+ numeric.to_s[0, 2].to_i
39
+ end
40
+ end
41
+ end
@@ -5,40 +5,64 @@ module TurkishNumeric
5
5
  %w[_ bir iki üç dört beş altı yedi sekiz dokuz].freeze,
6
6
  %w[_ on yirmi otuz kırk elli altmış yetmiş seksen doksan].freeze
7
7
  ].freeze
8
-
9
8
  SUBFIX = %w[yüz bin milyon milyar trilyon katrilyon kentilyon sekstilyon septilyon oktilyon
10
- nonilyon desilyon undesilyon dodesilyon trodesilyon katordesilyon kendesilyon seksdesilyon
11
- septendesilyon oktodesilyon novemdesilyon vigintilyon].freeze
9
+ nonilyon desilyon undesilyon dodesilyon trodesilyon katordesilyon kendesilyon
10
+ seksdesilyon septendesilyon oktodesilyon novemdesilyon vigintilyon].freeze
12
11
 
12
+ # Represents a number in Turkish language
13
13
  class TrNum
14
+ include NumberPresenter
15
+
16
+ # A new instance of TrNum
17
+ #
18
+ # @param [Integer, Float] number
19
+ # @return [TurkishNumeric::TrNum]
14
20
  def initialize(number)
15
- parse_sign(number)
16
- parse_number_parts(number)
21
+ @sign = 'eksi' if number.negative?
22
+ @decimal = Integer(number.abs)
23
+ fraction_str = number.to_s.split('.')[1] || '0'
24
+ @fraction_size = fraction_str.size
25
+ @fraction = Integer(fraction_str, 10)
17
26
  end
18
27
 
19
- def to_text(spaces: true)
20
- text = translate_decimal_part
21
- text += [fractional_prefix] + translate_fractional_part unless fraction.zero?
22
- clean_text(text, spaces)
28
+ # Translate numeric value into Turkish text
29
+ #
30
+ # @return [String]
31
+ def to_text
32
+ decimal_part = translate_partition(decimal)
33
+ fractional_part = fraction.zero? ? nil : [fractional_prefix, translate_partition(fraction)]
34
+ text_spaced(sign, decimal_part, fractional_part)
23
35
  end
24
36
 
25
- private
26
-
27
- attr_accessor :sign, :decimal, :fraction, :fraction_size, :current_processing_part
28
-
29
- def clean_text(text, spaces)
30
- text = text.flatten.delete_if(&:empty?).join(' ').strip
31
- spaces ? text.gsub(/\s+/, ' ') : text.gsub(' ', '').gsub('eksi', 'eksi ')
32
- # TODO: Add test for non-spaced representation
37
+ # Translate numeric value into currency notation
38
+ #
39
+ # @param [String] symbol
40
+ # @param [String] thousand_sep
41
+ # @param [String] penny_sep
42
+ # @return [String]
43
+ def to_money(symbol: '', thousand_sep: '.', penny_sep: ',')
44
+ [symbol,
45
+ thousands_separated(decimal, sep: thousand_sep),
46
+ penny_sep,
47
+ to_pennies(fraction)].join
33
48
  end
34
49
 
35
- def translate_fractional_part
36
- translate_partition(fraction)
50
+ # Translate numeric value into text representaion of money
51
+ #
52
+ # @param [String] currency
53
+ # @param [String] sub_currency
54
+ # @return [String]
55
+ def to_money_text(currency: 'TL', sub_currency: 'kr')
56
+ pennies = to_pennies(fraction)
57
+ decimal_part = decimal.zero? ? nil : [translate_partition(decimal), currency, ',']
58
+ fractional_part = pennies&.zero? ? nil : [translate_partition(pennies), sub_currency]
59
+ text_non_spaced(sign, decimal_part, fractional_part)
37
60
  end
38
61
 
39
- def translate_decimal_part
40
- [sign] + translate_partition(decimal)
41
- end
62
+ private
63
+
64
+ attr_reader :sign, :decimal, :fraction_size, :fraction
65
+ attr_accessor :current_processing_part
42
66
 
43
67
  def translate_partition(partition)
44
68
  self.current_processing_part = partition
@@ -47,29 +71,14 @@ module TurkishNumeric
47
71
  end.reverse
48
72
  end
49
73
 
50
- def fractional_prefix
51
- prefix = self.class.new(10**fraction_size).to_text
52
- "tam #{prefix}#{prefix.end_with?('yüz', 'bin') ? 'de' : 'da'}".gsub('bir', '')
53
- end
54
-
55
- def parse_sign(number)
56
- self.sign = number.negative? ? 'eksi' : ''
57
- end
58
-
59
74
  def translate_triplet(triplet, tri_idx)
60
75
  triplet.map.with_index do |num, idx|
61
76
  digit = translate_digit(num, idx, triplet)
62
- "#{digit}#{subfix(num, tri_idx * 3 + idx) unless triplet.all?(&:zero?)}"
77
+ subfix = triplet.all?(&:zero?) ? nil : subfix(num, tri_idx * 3 + idx)
78
+ [digit, subfix]
63
79
  end.reverse
64
80
  end
65
81
 
66
- def parse_number_parts(number)
67
- self.decimal = Integer(number.abs)
68
- fraction_str = number.to_s.split('.')[1] || '0'
69
- self.fraction_size = fraction_str.size
70
- self.fraction = Integer(fraction_str)
71
- end
72
-
73
82
  def translate_digit(digit, pos, triplet)
74
83
  case digit
75
84
  when 0 then translate_zero
@@ -78,21 +87,26 @@ module TurkishNumeric
78
87
  end
79
88
  end
80
89
 
90
+ def fractional_prefix
91
+ prefix = self.class.new(10**fraction_size).to_text.gsub('bir', '').lstrip
92
+ "tam #{prefix}#{prefix.end_with?('yüz', 'bin') ? 'de' : 'da'}"
93
+ end
94
+
81
95
  def translate_zero
82
- current_processing_part.to_s.size == 1 ? 'sıfır' : ''
96
+ current_processing_part.to_s.size == 1 ? 'sıfır' : nil
83
97
  end
84
98
 
85
99
  def translate_one(digit, pos, triplet)
86
- return '' if triplet.size == 1 && current_processing_part.to_s.size == 4
100
+ return nil if triplet.size == 1 && current_processing_part.to_s.size == 4
87
101
 
88
- 0.step(66, 3).include?(pos) || pos % 3 == 1 ? MAPPINGS[pos % 2][digit] : ''
102
+ 0.step(66, 3).include?(pos) || pos % 3 == 1 ? MAPPINGS[pos % 2][digit] : nil
89
103
  end
90
104
 
91
105
  def subfix(digit, pos)
92
106
  sub_pos = pos % 3
93
- return " #{SUBFIX[0]}" if sub_pos == 2 && !digit.zero?
107
+ return SUBFIX[0] if sub_pos == 2 && !digit.zero?
94
108
 
95
- pos >= 3 && sub_pos.zero? ? " #{SUBFIX[pos / 3]}" : ''
109
+ pos >= 3 && sub_pos.zero? ? SUBFIX[pos / 3] : nil
96
110
  end
97
111
  end
98
112
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module TurkishNumeric
4
- VERSION = '0.0.1'
4
+ VERSION = '0.1.0'
5
5
  end
data/spec/tr_num_spec.rb CHANGED
@@ -49,8 +49,10 @@ RSpec.describe TurkishNumeric do
49
49
  { 0.5 => 'sıfır tam onda beş',
50
50
  0.555 => 'sıfır tam binde beş yüz elli beş',
51
51
  3.14 => 'üç tam yüzde on dört',
52
+ 12.0012 => 'on iki tam on binde on iki',
52
53
  1234.00001 => 'bin iki yüz otuz dört tam yüz binde bir',
53
- 213_321_323.321232 => 'iki yüz on üç milyon üç yüz yirmi bir bin üç yüz yirmi üç tam milyonda üç yüz yirmi bir bin iki yüz otuz iki' }.freeze
54
+ 213_321_323.321232 => 'iki yüz on üç milyon üç yüz yirmi bir bin üç yüz yirmi üç tam milyonda üç yüz yirmi bir bin iki yüz otuz iki',
55
+ 0.9999999999999999 => 'sıfır tam on katrilyonda dokuz katrilyon dokuz yüz doksan dokuz trilyon dokuz yüz doksan dokuz milyar dokuz yüz doksan dokuz milyon dokuz yüz doksan dokuz bin dokuz yüz doksan dokuz' }.freeze
54
56
  end
55
57
 
56
58
  context 'parsing parts' do
@@ -70,19 +72,50 @@ RSpec.describe TurkishNumeric do
70
72
  end
71
73
  end
72
74
 
73
- context 'translates integer numbers into text' do
74
- it 'works for samples' do
75
- sample_integers.each do |num, text|
76
- expect(TrNum.new(num).to_text).to eq text
75
+ context '#to_text' do
76
+ context 'translates integer numbers into text' do
77
+ it 'works for samples' do
78
+ sample_integers.each do |num, text|
79
+ expect(TrNum.new(num).to_text).to eq text
80
+ end
77
81
  end
78
82
  end
79
- end
80
83
 
81
- context 'translates floating point numbers into text' do
82
- it 'works for samples' do
83
- sample_floats.each do |num, text|
84
- expect(TrNum.new(num).to_text).to eq text
84
+ context 'translates floating point numbers into text' do
85
+ it 'works for samples' do
86
+ sample_floats.each do |num, text|
87
+ expect(TrNum.new(num).to_text).to eq text
88
+ end
85
89
  end
86
90
  end
87
91
  end
92
+
93
+ context '#to_money' do
94
+ it 'converts numerical format as currency' do
95
+ expect(TrNum(234.45).to_money).to eq '₺234,45'
96
+ expect(TrNum(0.115).to_money).to eq '₺0,11'
97
+ end
98
+
99
+ it 'uses thousand seperators' do
100
+ expect(TrNum(12_332.45).to_money).to eq '₺12.332,45'
101
+ expect(TrNum(343_211_122_332.45).to_money).to eq '₺343.211.122.332,45'
102
+ end
103
+
104
+ it 'works with custom symbol and seperators' do
105
+ expect(TrNum(12_332.45).to_money(symbol: '€', thousand_sep: ',', penny_sep: '.')).to eq '€12,332.45'
106
+ end
107
+ end
108
+
109
+ context '#to_money_text' do
110
+ it 'translates money to turkish lira' do
111
+ expect(TrNum(234.45).to_money_text).to eq 'ikiyüzotuzdörtTL,kırkbeşkr'
112
+ expect(TrNum(234.05).to_money_text).to eq 'ikiyüzotuzdörtTL,beşkr'
113
+ expect(TrNum(600_000.125).to_money_text).to eq 'altıyüzbinTL,onikikr'
114
+ expect(TrNum(0.15).to_money_text).to eq 'onbeşkr'
115
+ end
116
+
117
+ it 'translates money to custom currency' do
118
+ expect(TrNum(234.45).to_money_text(currency: 'USD', sub_currency: 'sent')).to eq 'ikiyüzotuzdörtUSD,kırkbeşsent'
119
+ end
120
+ end
88
121
  end
@@ -9,7 +9,7 @@ Gem::Specification.new do |spec|
9
9
  spec.email = ['sbagdat@gmail.com']
10
10
 
11
11
  spec.summary = 'Translate any numeric value into Turkish text.'
12
- spec.description = 'Translate any numeric value into Turkish text.'
12
+ spec.description = 'Translate any numeric value into Turkish text, currency notation, or text representation of money.'
13
13
  spec.homepage = 'https://github.com/sbagdat/turkish_numeric'
14
14
  spec.license = 'MIT'
15
15
 
metadata CHANGED
@@ -1,16 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: turkish_numeric
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sıtkı Bağdat
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-02-05 00:00:00.000000000 Z
11
+ date: 2021-02-06 00:00:00.000000000 Z
12
12
  dependencies: []
13
- description: Translate any numeric value into Turkish text.
13
+ description: Translate any numeric value into Turkish text, currency notation, or
14
+ text representation of money.
14
15
  email:
15
16
  - sbagdat@gmail.com
16
17
  executables:
@@ -20,12 +21,6 @@ extensions: []
20
21
  extra_rdoc_files: []
21
22
  files:
22
23
  - ".gitignore"
23
- - ".idea/.gitignore"
24
- - ".idea/inspectionProfiles/Project_Default.xml"
25
- - ".idea/modules.xml"
26
- - ".idea/redis-manager-config.xml"
27
- - ".idea/turkish_numeric.iml"
28
- - ".idea/vcs.xml"
29
24
  - ".rspec"
30
25
  - ".rubocop.yml"
31
26
  - ".travis.yml"
@@ -39,6 +34,7 @@ files:
39
34
  - bin/console
40
35
  - bin/setup
41
36
  - lib/turkish_numeric.rb
37
+ - lib/turkish_numeric/number_presenter.rb
42
38
  - lib/turkish_numeric/tr_num.rb
43
39
  - lib/turkish_numeric/version.rb
44
40
  - spec/spec_helper.rb
@@ -64,7 +60,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
64
60
  - !ruby/object:Gem::Version
65
61
  version: '0'
66
62
  requirements: []
67
- rubygems_version: 3.2.5
63
+ rubygems_version: 3.2.8
68
64
  signing_key:
69
65
  specification_version: 4
70
66
  summary: Translate any numeric value into Turkish text.