string_to_large_number 1.3
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 +7 -0
- data/.gitignore +18 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +25 -0
- data/README.md +9 -0
- data/lib/string_to_large_number.rb +32 -0
- data/spec/spec_helper.rb +38 -0
- data/spec/string_to_large_numbers/string_to_large_number_spec.rb +12 -0
- data/string_to_large_number.gemspec +22 -0
- metadata +84 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: e8c7b5a77f41237d9e88adced53287b8012fb8f6
|
4
|
+
data.tar.gz: e620c824dbad296ee12e080450a10b82c44666c6
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 79bd7e728237aad8c04ae27b6b87682abb80106e144ef32290ab01a9bc688a435e844b7aaf871551c154b63a83b03b71063697d93c974beb1628688c188bb6f0
|
7
|
+
data.tar.gz: ae7bb4e85586f8096317ec490a7f50707a75c4cadafe15abbb1236d8239db21e428abe58f8ae1ad3732f1dbf86cf32b527b918118757c6aa0bc8173492f26661
|
data/.gitignore
ADDED
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
string_to_large_number (1.3)
|
5
|
+
|
6
|
+
GEM
|
7
|
+
remote: https://rubygems.org/
|
8
|
+
specs:
|
9
|
+
diff-lcs (1.2.4)
|
10
|
+
rspec (2.13.0)
|
11
|
+
rspec-core (~> 2.13.0)
|
12
|
+
rspec-expectations (~> 2.13.0)
|
13
|
+
rspec-mocks (~> 2.13.0)
|
14
|
+
rspec-core (2.13.1)
|
15
|
+
rspec-expectations (2.13.0)
|
16
|
+
diff-lcs (>= 1.1.3, < 2.0)
|
17
|
+
rspec-mocks (2.13.1)
|
18
|
+
|
19
|
+
PLATFORMS
|
20
|
+
ruby
|
21
|
+
|
22
|
+
DEPENDENCIES
|
23
|
+
rspec
|
24
|
+
rspec-expectations
|
25
|
+
string_to_large_number!
|
data/README.md
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
|
3
|
+
class String
|
4
|
+
def to_large_number
|
5
|
+
value = self.strip
|
6
|
+
return nil if value.nil?
|
7
|
+
return nil if value.empty?
|
8
|
+
return nil if value === 'nil'
|
9
|
+
return nil if value.respond_to?(:blank?) && value.blank?
|
10
|
+
|
11
|
+
multipliers = {
|
12
|
+
' mil' => 1000_000,
|
13
|
+
' bil' => 1000_000_000,
|
14
|
+
' tri' => 1000_000_000_000,
|
15
|
+
}
|
16
|
+
|
17
|
+
begin
|
18
|
+
value = value.strip.gsub(/,/, '')
|
19
|
+
value_f = value.to_f
|
20
|
+
|
21
|
+
multipliers.each do |key, multiplier|
|
22
|
+
return value_f * multiplier if value.include?(key)
|
23
|
+
end
|
24
|
+
return value_f
|
25
|
+
rescue => e
|
26
|
+
return nil
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
alias :to_large_f :to_large_number
|
31
|
+
alias :to_f_large :to_large_number
|
32
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rspec'
|
3
|
+
require 'rspec-expectations'
|
4
|
+
require 'benchmark'
|
5
|
+
require_relative '../lib/string_to_large_number.rb'
|
6
|
+
|
7
|
+
$spec_root = File.dirname(__FILE__)
|
8
|
+
|
9
|
+
RSpec.configure do |config|
|
10
|
+
old_verbose, $VERBOSE = $VERBOSE, nil
|
11
|
+
|
12
|
+
def verbose_puts(s)
|
13
|
+
return unless $VERBOSE
|
14
|
+
file = File.basename(caller(1).first)
|
15
|
+
super("puts() from #{file}: #{s}")
|
16
|
+
end
|
17
|
+
|
18
|
+
def puts(s)
|
19
|
+
file = File.basename(caller(1).first)
|
20
|
+
super("puts() from #{file}: #{s}")
|
21
|
+
end
|
22
|
+
|
23
|
+
def print(s)
|
24
|
+
file = File.basename(caller(1).first)
|
25
|
+
super("print() from #{file}: #{s}")
|
26
|
+
end
|
27
|
+
|
28
|
+
def p(s)
|
29
|
+
file = File.basename(caller(1).first)
|
30
|
+
super("p() from #{file}: #{s}")
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_speed(x_speed, x_times = 1000)
|
34
|
+
time = Benchmark.realtime { x_times.times { |n| @result = yield } }
|
35
|
+
(time / x_times).should < x_speed
|
36
|
+
@result
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
require File.expand_path("../spec_helper.rb", File.dirname(__FILE__))
|
2
|
+
|
3
|
+
describe "String.string_to_large_number" do
|
4
|
+
it { "".to_large_number.should be_nil }
|
5
|
+
it { "nil".to_large_number.should be_nil }
|
6
|
+
it { nil.to_s.to_large_number.should be_nil }
|
7
|
+
|
8
|
+
it { "1.234 mil".to_large_number.should === 1_234_000.0 }
|
9
|
+
it { "5.678 bil".to_large_number.should === 5_678_000_000.0 }
|
10
|
+
it { "1.234 tri".to_large_number.should === 1_234_000_000_000.0 }
|
11
|
+
it { "1,234.456 tri".to_large_number.should === 1_234_456_000_000_000.0 }
|
12
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "string_to_large_number"
|
4
|
+
|
5
|
+
Gem::Specification.new do |gem|
|
6
|
+
gem.name = "string_to_large_number"
|
7
|
+
gem.version = '1.3'
|
8
|
+
gem.authors = ["Glenn Nagel"]
|
9
|
+
gem.email = ["glenn@mercury-wireless.com"]
|
10
|
+
gem.homepage = "https://github.com/gnagel/string_to_large_number"
|
11
|
+
gem.summary = %q{Convert common finance abbreviations to normal numbers ('mil', 'bil', 'tri', etc)}
|
12
|
+
gem.description = %q{Handy conversions for finance numbers to floats}
|
13
|
+
gem.license = 'MIT'
|
14
|
+
|
15
|
+
gem.files = `git ls-files`.split($/)
|
16
|
+
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
17
|
+
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
18
|
+
gem.require_paths = ["lib", "tasks"]
|
19
|
+
|
20
|
+
gem.add_development_dependency('rspec')
|
21
|
+
gem.add_development_dependency('rspec-expectations')
|
22
|
+
end
|
metadata
ADDED
@@ -0,0 +1,84 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: string_to_large_number
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: '1.3'
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Glenn Nagel
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2013-06-02 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rspec
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rspec-expectations
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
description: Handy conversions for finance numbers to floats
|
42
|
+
email:
|
43
|
+
- glenn@mercury-wireless.com
|
44
|
+
executables: []
|
45
|
+
extensions: []
|
46
|
+
extra_rdoc_files: []
|
47
|
+
files:
|
48
|
+
- .gitignore
|
49
|
+
- Gemfile
|
50
|
+
- Gemfile.lock
|
51
|
+
- README.md
|
52
|
+
- lib/string_to_large_number.rb
|
53
|
+
- spec/spec_helper.rb
|
54
|
+
- spec/string_to_large_numbers/string_to_large_number_spec.rb
|
55
|
+
- string_to_large_number.gemspec
|
56
|
+
homepage: https://github.com/gnagel/string_to_large_number
|
57
|
+
licenses:
|
58
|
+
- MIT
|
59
|
+
metadata: {}
|
60
|
+
post_install_message:
|
61
|
+
rdoc_options: []
|
62
|
+
require_paths:
|
63
|
+
- lib
|
64
|
+
- tasks
|
65
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
72
|
+
- - '>='
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: '0'
|
75
|
+
requirements: []
|
76
|
+
rubyforge_project:
|
77
|
+
rubygems_version: 2.0.3
|
78
|
+
signing_key:
|
79
|
+
specification_version: 4
|
80
|
+
summary: Convert common finance abbreviations to normal numbers ('mil', 'bil', 'tri',
|
81
|
+
etc)
|
82
|
+
test_files:
|
83
|
+
- spec/spec_helper.rb
|
84
|
+
- spec/string_to_large_numbers/string_to_large_number_spec.rb
|