c12-commons 0.0.1.beta2 → 0.0.1.beta3
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/.gitignore +2 -0
- data/c12-commons.gemspec +5 -4
- data/lib/{c12-commons/ruby.rb → c12/core.rb} +1 -1
- data/lib/c12/ka.rb +138 -0
- data/lib/c12/pdf-assets/Arial Unicode.ttf +0 -0
- data/lib/c12/pdf-assets/DejaVuSerif-Bold.ttf +0 -0
- data/lib/c12/pdf-assets/DejaVuSerif-BoldItalic.ttf +0 -0
- data/lib/c12/pdf-assets/DejaVuSerif-Italic.ttf +0 -0
- data/lib/c12/pdf-assets/DejaVuSerif.ttf +0 -0
- data/lib/c12/pdf.rb +40 -0
- data/lib/{c12-commons → c12}/version.rb +1 -1
- data/lib/c12-commons.rb +4 -4
- data/spec/c12-commons/month_spec.rb +1 -1
- data/spec/c12-commons/number_spec.rb +16 -0
- data/spec/c12-commons/pdf_spec.rb +14 -0
- data/spec/c12-commons/ruby_spec.rb +1 -1
- metadata +35 -14
- data/lib/c12-commons/ka.rb +0 -43
data/.gitignore
CHANGED
data/c12-commons.gemspec
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
2
|
$:.push File.expand_path("../lib", __FILE__)
|
3
|
-
require "c12
|
3
|
+
require "c12/version"
|
4
4
|
|
5
5
|
Gem::Specification.new do |s|
|
6
6
|
s.name = "c12-commons"
|
7
7
|
s.version = C12::Commons::VERSION
|
8
8
|
s.authors = ["Dimitri Kurashvili"]
|
9
9
|
s.email = ["dimitri@c12.ge"]
|
10
|
-
s.homepage = ""
|
11
|
-
s.summary = %q{
|
12
|
-
s.description = %q{
|
10
|
+
s.homepage = "http://c12.ge"
|
11
|
+
s.summary = %q{Simple functions}
|
12
|
+
s.description = %q{Simple functionality used in my projects}
|
13
13
|
|
14
14
|
s.rubyforge_project = "c12-commons"
|
15
15
|
|
@@ -22,4 +22,5 @@ Gem::Specification.new do |s|
|
|
22
22
|
s.add_development_dependency 'simplecov'
|
23
23
|
|
24
24
|
s.add_runtime_dependency 'actionpack', '~> 3'
|
25
|
+
s.add_runtime_dependency 'prawn', '~> 0.12'
|
25
26
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# -*- encoding : utf-8 -*-
|
2
2
|
|
3
3
|
# Returns the first argument unless it's <code>nil</code>,
|
4
|
-
# in which
|
4
|
+
# in which case the second argument is returned.
|
5
5
|
def nvl(value, value_if_nil = 0)
|
6
6
|
value.nil? ? value_if_nil : value
|
7
7
|
end
|
data/lib/c12/ka.rb
ADDED
@@ -0,0 +1,138 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
|
3
|
+
module C12
|
4
|
+
|
5
|
+
# This module is used for managing Georgian locale data.
|
6
|
+
module KA
|
7
|
+
private
|
8
|
+
|
9
|
+
MONTHS_EN_SHORT = {'jan' => 1, 'feb' => 2, 'mar' => 3, 'apr' => 4, 'may' => 5, 'jun' => 6, 'jul' => 7, 'aug' => 8, 'sep' => 9, 'oct' => 10, 'nov' => 11, 'dec' => 12}
|
10
|
+
MONTHS_EN = {'january' => 1, 'february' => 2, 'march' => 3, 'april' => 4, 'may' => 5, 'june' => 6, 'july' => 7, 'august' => 8, 'september' => 9, 'october' => 10, 'november' => 11, 'december' => 12}
|
11
|
+
MONTHS = ['იანვარი', 'თებერვალი', 'მარტი', 'აპრილი', 'მაისი', 'ივნისი', 'ივლისი', 'აგვისტო', 'სექტემბერი', 'ოქტომბერი', 'ნოემბერი', 'დეკემბერი']
|
12
|
+
MONTHS_SHORT = ['იან', 'თებ', 'მარ', 'აპრ', 'მაი', 'ივნ', 'ივლ', 'აგვ', 'სექ', 'ოქტ', 'ნოე', 'დეკ']
|
13
|
+
|
14
|
+
public
|
15
|
+
|
16
|
+
# Returns the name of the month in georgian.
|
17
|
+
#
|
18
|
+
# Month can be given as a number (January is <code>1</code>)
|
19
|
+
# or as an instance of <code>Time</code>. Alternatively you
|
20
|
+
# can use month name in English (either short or long names).
|
21
|
+
# <code>nil</code> value for the argument returns <code>nil</code>
|
22
|
+
# as a month name.
|
23
|
+
#
|
24
|
+
# If you need a short version of the month's name, then use
|
25
|
+
# <code>:format => :short</code> in options.
|
26
|
+
def self.month(month, opts = {})
|
27
|
+
if month.instance_of? Time
|
28
|
+
index = month.month
|
29
|
+
elsif month.instance_of? Fixnum
|
30
|
+
index = month % 12
|
31
|
+
elsif month.instance_of? String
|
32
|
+
index = MONTHS_EN[month.downcase] || MONTHS_EN_SHORT[month.downcase]
|
33
|
+
end
|
34
|
+
(opts[:format] == :short ? MONTHS_SHORT : MONTHS)[index - 1] if index
|
35
|
+
end
|
36
|
+
|
37
|
+
# Georgian number formatter.
|
38
|
+
def self.number(number, opts = {})
|
39
|
+
number_with_precision(number, :precision => opts[:precision] || 2, :delimiter => ' ', :separator => ',')
|
40
|
+
end
|
41
|
+
|
42
|
+
# Tokenize integer argument to georgian language.
|
43
|
+
#
|
44
|
+
# Example usage:
|
45
|
+
#
|
46
|
+
# C12::KA::tokenize(1) => 'ერთი'
|
47
|
+
# C12::KA::tokenize(2) => 'ორი'
|
48
|
+
#
|
49
|
+
# The maximum value for the argument is the value <code>999,999,999,999</code>.
|
50
|
+
def self.tokenize(num)
|
51
|
+
num_ge_0 = nvl(num, 0).abs
|
52
|
+
if num < 0
|
53
|
+
"მინუს #{tokenize_int_ge_0(num_ge_0)}"
|
54
|
+
else
|
55
|
+
tokenize_int_ge_0(num_ge_0)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
private
|
60
|
+
|
61
|
+
def self.tokenize_int_ge_0(num)
|
62
|
+
case num
|
63
|
+
when 0 then return 'ნული'
|
64
|
+
when 1 then return 'ერთი'
|
65
|
+
when 2 then return 'ორი'
|
66
|
+
when 3 then return 'სამი'
|
67
|
+
when 4 then return 'ოთხი'
|
68
|
+
when 5 then return 'ხუთი'
|
69
|
+
when 6 then return 'ექვსი'
|
70
|
+
when 7 then return 'შვიდი'
|
71
|
+
when 8 then return 'რვა'
|
72
|
+
when 9 then return 'ცხრა'
|
73
|
+
when 10 then return 'ათი'
|
74
|
+
when 11 then return 'თერთმეტი'
|
75
|
+
when 12 then return 'თორმეტი'
|
76
|
+
when 13 then return 'ცამეტი'
|
77
|
+
when 14 then return 'თოთხმეტი'
|
78
|
+
when 15 then return 'თხუთმეტი'
|
79
|
+
when 16 then return 'თექვსმეტი'
|
80
|
+
when 17 then return 'ჩვიდმეტი'
|
81
|
+
when 18 then return 'თვრამეტი'
|
82
|
+
when 19 then return 'ცხრამეტი'
|
83
|
+
when 20 then return 'ოცი'
|
84
|
+
when 40 then return 'ორმოცი'
|
85
|
+
when 60 then return 'სამოცი'
|
86
|
+
when 80 then return 'ოთხმოცი'
|
87
|
+
when 100 then return 'ასი'
|
88
|
+
when 200 then return 'ორასი'
|
89
|
+
when 300 then return 'სამასი'
|
90
|
+
when 400 then return 'ოთხასი'
|
91
|
+
when 500 then return 'ხუთასი'
|
92
|
+
when 600 then return 'ექვსასი'
|
93
|
+
when 700 then return 'შვიდასი'
|
94
|
+
when 800 then return 'რვაასი'
|
95
|
+
when 900 then return 'ცხრაასი'
|
96
|
+
when 1000 then return 'ათასი'
|
97
|
+
when 1000000 then return 'მილიონი'
|
98
|
+
when 1000000000 then return 'მილიარდი'
|
99
|
+
end
|
100
|
+
return "ოცდა #{tokenize_int_ge_0(num-20)}" if num > 20 and num < 40
|
101
|
+
return "ორმოცდა #{tokenize_int_ge_0(num-40)}" if num > 40 and num < 60
|
102
|
+
return "სამოცდა #{tokenize_int_ge_0(num-60)}" if num > 60 and num < 80
|
103
|
+
return "ოთხმოცდა #{tokenize_int_ge_0(num-80)}" if num > 80 and num < 100
|
104
|
+
return "ას #{tokenize_int_ge_0(num-100)}" if num > 100 and num < 200
|
105
|
+
return "ორას #{tokenize_int_ge_0(num-200)}" if num > 200 and num < 300
|
106
|
+
return "სამას #{tokenize_int_ge_0(num-300)}" if num > 300 and num < 400
|
107
|
+
return "ოთხას #{tokenize_int_ge_0(num-400)}" if num > 400 and num < 500
|
108
|
+
return "ხუთას #{tokenize_int_ge_0(num-500)}" if num > 500 and num < 600
|
109
|
+
return "ექვსას #{tokenize_int_ge_0(num-600)}" if num > 600 and num < 700
|
110
|
+
return "შვიდას #{tokenize_int_ge_0(num-700)}" if num > 700 and num < 800
|
111
|
+
return "რვაას #{tokenize_int_ge_0(num-800)}" if num > 800 and num < 900
|
112
|
+
return "ცხრაას #{tokenize_int_ge_0(num-900)}" if num > 900 and num < 1000
|
113
|
+
return "ათას #{tokenize_int_ge_0(num-1000)}" if num > 1000 and num < 2000
|
114
|
+
if num >= 2000 and num <= 999999
|
115
|
+
thousands = num/1000
|
116
|
+
rest = num - thousands * 1000
|
117
|
+
return "#{tokenize_int_ge_0(thousands)} ათას #{tokenize_int_ge_0(rest)}" if rest != 0
|
118
|
+
return "#{tokenize_int_ge_0(thousands)} ათასი" if rest == 0
|
119
|
+
end
|
120
|
+
return "მილიონ #{tokenize_int_ge_0(num-1000000)}" if num > 1000000 and num < 2000000
|
121
|
+
if num >= 2000000 and num <= 999999999
|
122
|
+
millions = num/1000000
|
123
|
+
rest = num - millions * 1000000
|
124
|
+
return "#{tokenize_int_ge_0(millions)} მილიონ #{tokenize_int_ge_0(rest)}" if rest != 0
|
125
|
+
return "#{tokenize_int_ge_0(millions)} მილიონი" if rest == 0
|
126
|
+
end
|
127
|
+
return "მილიარდ #{tokenize_int_ge_0(num-1000000000)}" if num > 1000000000 and num < 2000000000
|
128
|
+
if num >= 2000000000 and num <= 999999999999
|
129
|
+
billions = num/1000000000
|
130
|
+
rest = num - billions * 1000000000
|
131
|
+
return "#{tokenize_int_ge_0(billions)} მილიარდ #{tokenize_int_ge_0(rest)}" if rest != 0
|
132
|
+
return "#{tokenize_int_ge_0(billions)} მილიარდი"
|
133
|
+
end
|
134
|
+
return num.to_s
|
135
|
+
end
|
136
|
+
|
137
|
+
end
|
138
|
+
end
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/lib/c12/pdf.rb
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
|
3
|
+
require 'prawn'
|
4
|
+
|
5
|
+
module C12
|
6
|
+
# This module is used for working with PDF.
|
7
|
+
module PDF
|
8
|
+
|
9
|
+
class Document < Prawn::Document
|
10
|
+
|
11
|
+
# Sets the current font of the document.
|
12
|
+
# Font names are predefined.
|
13
|
+
# All of them are Georgian-character friendly fonts.
|
14
|
+
#
|
15
|
+
# @param font name of the font. This may be one of
|
16
|
+
# <code>default</code>, <code>serif</code>, <code>sefit-italic</code>,
|
17
|
+
# <code>serif-bold</code>, <code>serif-bold-italic</code>.
|
18
|
+
# Value <code>nil</code> or any other value is considered as <code>default</code>.
|
19
|
+
# @param size size for the font. This parameter defaults to 10pt.
|
20
|
+
def change_font(font = :default, size = 10)
|
21
|
+
case font.to_s
|
22
|
+
when 'serif'
|
23
|
+
ff = 'DejaVuSerif'
|
24
|
+
when 'serif-italic'
|
25
|
+
ff = 'DejaVuSerif-Italic'
|
26
|
+
when 'serif-bold'
|
27
|
+
ff = 'DejaVuSerif-Bold'
|
28
|
+
when 'serif-bold-italic'
|
29
|
+
ff = 'DejaVuSerif-BoldItalic'
|
30
|
+
else
|
31
|
+
ff = 'Arial Unicode'
|
32
|
+
end
|
33
|
+
#pdf.font "#{Prawn::BASEDIR}/data/fonts/DejaVuSans.ttf"
|
34
|
+
self.font File.expand_path("../pdf-assets/#{ff}.ttf", __FILE__), :size => size
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
end
|
data/lib/c12-commons.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
# -*- encoding : utf-8 -*-
|
2
2
|
|
3
3
|
require 'action_controller'
|
4
|
-
|
5
4
|
include ActionView::Helpers::NumberHelper
|
6
5
|
|
7
|
-
require 'c12
|
8
|
-
require 'c12
|
9
|
-
require 'c12
|
6
|
+
require 'c12/version'
|
7
|
+
require 'c12/core'
|
8
|
+
require 'c12/ka'
|
9
|
+
require 'c12/pdf'
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
def test_number_tokenizer(num, expected_token)
|
6
|
+
describe "#{num} is" do
|
7
|
+
specify(expected_token) { C12::KA::tokenize(num).should == expected_token }
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
test_number_tokenizer(-102, 'მინუს ას ორი')
|
12
|
+
test_number_tokenizer(-1, 'მინუს ერთი')
|
13
|
+
test_number_tokenizer(0, 'ნული')
|
14
|
+
test_number_tokenizer(1, 'ერთი')
|
15
|
+
test_number_tokenizer(999, 'ცხრაას ოთხმოცდა ცხრამეტი')
|
16
|
+
test_number_tokenizer(-9999, 'მინუს ცხრა ათას ცხრაას ოთხმოცდა ცხრამეტი')
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
describe 'Simple PDF generation' do
|
6
|
+
before(:all) do
|
7
|
+
C12::PDF::Document.generate 'tmp/example.pdf' do |pdf|
|
8
|
+
pdf.change_font
|
9
|
+
pdf.text 'დიმიტრი ყურაშვილი'
|
10
|
+
end
|
11
|
+
end
|
12
|
+
specify { File.exists?('tmp/example.pdf').should == true }
|
13
|
+
specify { File.zero?('tmp/example.pdf').should == false }
|
14
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: c12-commons
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.1.
|
4
|
+
version: 0.0.1.beta3
|
5
5
|
prerelease: 6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-03-
|
12
|
+
date: 2012-03-03 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
16
|
-
requirement: &
|
16
|
+
requirement: &70164365351300 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '2'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70164365351300
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: simplecov
|
27
|
-
requirement: &
|
27
|
+
requirement: &70164365350680 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70164365350680
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: actionpack
|
38
|
-
requirement: &
|
38
|
+
requirement: &70164365350060 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,8 +43,19 @@ dependencies:
|
|
43
43
|
version: '3'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
47
|
-
|
46
|
+
version_requirements: *70164365350060
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: prawn
|
49
|
+
requirement: &70164365349560 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0.12'
|
55
|
+
type: :runtime
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *70164365349560
|
58
|
+
description: Simple functionality used in my projects
|
48
59
|
email:
|
49
60
|
- dimitri@c12.ge
|
50
61
|
executables: []
|
@@ -58,13 +69,21 @@ files:
|
|
58
69
|
- Rakefile
|
59
70
|
- c12-commons.gemspec
|
60
71
|
- lib/c12-commons.rb
|
61
|
-
- lib/c12
|
62
|
-
- lib/c12
|
63
|
-
- lib/c12-
|
72
|
+
- lib/c12/core.rb
|
73
|
+
- lib/c12/ka.rb
|
74
|
+
- lib/c12/pdf-assets/Arial Unicode.ttf
|
75
|
+
- lib/c12/pdf-assets/DejaVuSerif-Bold.ttf
|
76
|
+
- lib/c12/pdf-assets/DejaVuSerif-BoldItalic.ttf
|
77
|
+
- lib/c12/pdf-assets/DejaVuSerif-Italic.ttf
|
78
|
+
- lib/c12/pdf-assets/DejaVuSerif.ttf
|
79
|
+
- lib/c12/pdf.rb
|
80
|
+
- lib/c12/version.rb
|
64
81
|
- spec/c12-commons/month_spec.rb
|
82
|
+
- spec/c12-commons/number_spec.rb
|
83
|
+
- spec/c12-commons/pdf_spec.rb
|
65
84
|
- spec/c12-commons/ruby_spec.rb
|
66
85
|
- spec/spec_helper.rb
|
67
|
-
homepage:
|
86
|
+
homepage: http://c12.ge
|
68
87
|
licenses: []
|
69
88
|
post_install_message:
|
70
89
|
rdoc_options: []
|
@@ -87,9 +106,11 @@ rubyforge_project: c12-commons
|
|
87
106
|
rubygems_version: 1.8.15
|
88
107
|
signing_key:
|
89
108
|
specification_version: 3
|
90
|
-
summary:
|
109
|
+
summary: Simple functions
|
91
110
|
test_files:
|
92
111
|
- spec/c12-commons/month_spec.rb
|
112
|
+
- spec/c12-commons/number_spec.rb
|
113
|
+
- spec/c12-commons/pdf_spec.rb
|
93
114
|
- spec/c12-commons/ruby_spec.rb
|
94
115
|
- spec/spec_helper.rb
|
95
116
|
has_rdoc:
|
data/lib/c12-commons/ka.rb
DELETED
@@ -1,43 +0,0 @@
|
|
1
|
-
# -*- encoding : utf-8 -*-
|
2
|
-
|
3
|
-
module C12
|
4
|
-
|
5
|
-
# This module is used for managing Georgian locale data.
|
6
|
-
module KA
|
7
|
-
private
|
8
|
-
|
9
|
-
MONTHS_EN_SHORT = {'jan' => 1, 'feb' => 2, 'mar' => 3, 'apr' => 4, 'may' => 5, 'jun' => 6, 'jul' => 7, 'aug' => 8, 'sep' => 9, 'oct' => 10, 'nov' => 11, 'dec' => 12}
|
10
|
-
MONTHS_EN = {'january' => 1, 'february' => 2, 'march' => 3, 'april' => 4, 'may' => 5, 'june' => 6, 'july' => 7, 'august' => 8, 'september' => 9, 'october' => 10, 'november' => 11, 'december' => 12}
|
11
|
-
MONTHS = ['იანვარი', 'თებერვალი', 'მარტი', 'აპრილი', 'მაისი', 'ივნისი', 'ივლისი', 'აგვისტო', 'სექტემბერი', 'ოქტომბერი', 'ნოემბერი', 'დეკემბერი']
|
12
|
-
MONTHS_SHORT = ['იან', 'თებ', 'მარ', 'აპრ', 'მაი', 'ივნ', 'ივლ', 'აგვ', 'სექ', 'ოქტ', 'ნოე', 'დეკ']
|
13
|
-
|
14
|
-
public
|
15
|
-
|
16
|
-
# Returns the name of the month in georgian.
|
17
|
-
#
|
18
|
-
# Month can be given as a number (January is <code>1</code>)
|
19
|
-
# or as an instance of <code>Time</code>. Alternatively you
|
20
|
-
# can use month name in English (either short or long names).
|
21
|
-
# <code>nil</code> value for the argument returns <code>nil</code>
|
22
|
-
# as a month name.
|
23
|
-
#
|
24
|
-
# If you need a short version of the month's name, then use
|
25
|
-
# <code>:format => :short</code> in options.
|
26
|
-
def self.month(month, opts = {})
|
27
|
-
if month.instance_of? Time
|
28
|
-
index = month.month
|
29
|
-
elsif month.instance_of? Fixnum
|
30
|
-
index = month % 12
|
31
|
-
elsif month.instance_of? String
|
32
|
-
index = MONTHS_EN[month.downcase] || MONTHS_EN_SHORT[month.downcase]
|
33
|
-
end
|
34
|
-
(opts[:format] == :short ? MONTHS_SHORT : MONTHS)[index - 1] if index
|
35
|
-
end
|
36
|
-
|
37
|
-
#
|
38
|
-
def self.number(number, opts = {})
|
39
|
-
number_with_precision(number, :precision => opts[:precision] || 2, :delimiter => ' ', :separator => ',')
|
40
|
-
end
|
41
|
-
|
42
|
-
end
|
43
|
-
end
|