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 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
@@ -0,0 +1,18 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ coverage
6
+ InstalledFiles
7
+ lib/bundler/man
8
+ pkg
9
+ rdoc
10
+ spec/reports
11
+ test/tmp
12
+ test/version_tmp
13
+ tmp
14
+
15
+ # YARD artifacts
16
+ .yardoc
17
+ _yardoc
18
+ doc/
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in *.gemspec
4
+ gemspec
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,9 @@
1
+ string_to_large_number
2
+ ====================
3
+
4
+ Convert common finance abbreviations to normal numbers ('mil', 'bil', 'tri', etc)
5
+
6
+
7
+ Examples
8
+ ========
9
+ puts "2.4 mil".to_large_number # 2_400_000
@@ -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
@@ -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