roman_numerals 1.0.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: c699ac562d648abec9680c660e68efedbd82b38c
4
+ data.tar.gz: 4da2d24cc705819cabc09e8e2cecac32c9095536
5
+ SHA512:
6
+ metadata.gz: 625a05f67b672bbd3dcb66f874f2932f830bc6e6acbd0a2c9a3d273b51cc5ab63c730347a75c788b186f041ece0af42502a191a999d7903aa000c90670a25d36
7
+ data.tar.gz: 548d4f5cf014268c41cc078dbba390f7545e815e0fe9a0ecaf865ab532bae5b53e773a77146478a1d22da0d5d913acb66fa024dd5d382eb701ef5aa7d7238971
data/.gitignore ADDED
@@ -0,0 +1,2 @@
1
+ .DS_Store
2
+ Gemfile.lock
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --color --format documentation
data/Gemfile ADDED
@@ -0,0 +1,5 @@
1
+ source "https://rubygems.org"
2
+
3
+ gemspec
4
+ gem "rspec"
5
+ gem "rake"
data/Rakefile ADDED
@@ -0,0 +1,7 @@
1
+ require 'rubygems'
2
+ require 'rspec/core'
3
+ require 'rspec/core/rake_task'
4
+
5
+ RSpec::Core::RakeTask.new(:spec)
6
+
7
+ task default: :spec
@@ -0,0 +1,40 @@
1
+ module RomanNumerals
2
+
3
+ def r_to_i()
4
+
5
+ numeral = self
6
+ value = 0
7
+
8
+ if numeral.empty?
9
+ return nil
10
+ end
11
+
12
+ numeral.strip!
13
+ numeral.upcase!
14
+
15
+ if (numeral != numeral[/[MCDLXVI]*/])
16
+ return nil
17
+ end
18
+
19
+ until numeral.length == 0 do
20
+ value += 900 unless (numeral.sub! "CM", "").nil?
21
+ value += 1000 unless (numeral.sub! "M", "").nil?
22
+ value += 400 unless (numeral.sub! "CD", "").nil?
23
+ value += 500 unless (numeral.sub! "D", "").nil?
24
+ value += 90 unless (numeral.sub! "XC", "").nil?
25
+ value += 100 unless (numeral.sub! "C", "").nil?
26
+ value += 40 unless (numeral.sub! "XL", "").nil?
27
+ value += 50 unless (numeral.sub! "L", "").nil?
28
+ value += 9 unless (numeral.sub! "IX", "").nil?
29
+ value += 10 unless (numeral.sub! "X", "").nil?
30
+ value += 4 unless (numeral.sub! "IV", "").nil?
31
+ value += 5 unless (numeral.sub! "V", "").nil?
32
+ value += 1 unless (numeral.sub! "I", "").nil?
33
+ end
34
+ value
35
+ end
36
+ end
37
+
38
+ class String
39
+ include RomanNumerals
40
+ end
@@ -0,0 +1,3 @@
1
+ module RomanNumerals
2
+ VERSION = "1.0.0"
3
+ end
@@ -0,0 +1,22 @@
1
+ lib = File.expand_path('../lib', __FILE__)
2
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
+ require 'roman_numerals/version'
4
+
5
+ Gem::Specification.new do |gem|
6
+ gem.name = "roman_numerals"
7
+ gem.version = RomanNumerals::VERSION
8
+ gem.authors = ["abwinkler999"]
9
+ gem.email = ["abwinkler999@gmail.com"]
10
+ gem.description = %q{Converts Roman numerals into integers}
11
+ gem.summary = %q{Adds .r_to_i method to String, to convert a Roman numeral string to integer}
12
+ gem.homepage = "http://www.github.com/abwinkler999/roman_numeral_gem"
13
+
14
+ gem.files = `git ls-files`.split($/)
15
+ gem.license = 'MIT'
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"]
19
+
20
+ gem.add_development_dependency "rake"
21
+ gem.add_development_dependency "rspec"
22
+ end
@@ -0,0 +1,96 @@
1
+ require 'roman_numerals'
2
+
3
+ describe RomanNumerals do
4
+
5
+ it "refuses to parse strings that are not Roman numerals" do
6
+ "".r_to_i.should == nil
7
+ "FOO".r_to_i.should == nil
8
+ "XXVIIQ".r_to_i.should == nil
9
+ end
10
+
11
+ it "can parse I into 1" do
12
+ "I".r_to_i.should == 1
13
+ end
14
+
15
+ it "can clean up poorly formatted arguments" do
16
+ "i".r_to_i.should == 1
17
+ " i ".r_to_i.should == 1
18
+ end
19
+
20
+ it "can parse II into 2" do
21
+ "II".r_to_i.should == 2
22
+ end
23
+
24
+ it "can parse III into 3" do
25
+ "III".r_to_i.should == 3
26
+ end
27
+
28
+ it "can parse IV into 4" do
29
+ "IV".r_to_i.should == 4
30
+ end
31
+
32
+ it "can parse V into 5" do
33
+ "V".r_to_i.should == 5
34
+ end
35
+
36
+ it "can parse VI into 6" do
37
+ "VI".r_to_i.should == 6
38
+ end
39
+
40
+ it "can parse VII into 7" do
41
+ "VII".r_to_i.should == 7
42
+ end
43
+
44
+ it "can parse VI into 8" do
45
+ "VIII".r_to_i.should == 8
46
+ end
47
+
48
+ it "can parse X into 10" do
49
+ "X".r_to_i.should == 10
50
+ end
51
+
52
+ it "can parse IX into 9" do
53
+ "IX".r_to_i.should == 9
54
+ end
55
+
56
+ it "can parse XIII into 13" do
57
+ "XIII".r_to_i.should == 13
58
+ end
59
+
60
+ it "can parse L into 50" do
61
+ "L".r_to_i.should == 50
62
+ end
63
+
64
+ it "can parse LII into 52" do
65
+ "LII".r_to_i.should == 52
66
+ end
67
+
68
+ it "can parse XIV into 14" do
69
+ "XIV".r_to_i.should == 14
70
+ end
71
+
72
+ it "can parse DCLXVI into 666" do
73
+ "DCLXVI".r_to_i.should == 666
74
+ end
75
+
76
+ it "can parse MCMLXXXVIII into 1988" do
77
+ "MCMLXXXVIII".r_to_i.should == 1988
78
+ end
79
+
80
+ it "can parse XL into 40" do
81
+ "XL".r_to_i.should == 40
82
+ end
83
+
84
+ it "can parse XC into 90" do
85
+ "XC".r_to_i.should == 90
86
+ end
87
+
88
+ it "can parse CD into 400" do
89
+ "CD".r_to_i.should == 400
90
+ end
91
+
92
+ it "can parse CM into 900" do
93
+ "CM".r_to_i.should == 900
94
+ end
95
+
96
+ end
metadata ADDED
@@ -0,0 +1,81 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: roman_numerals
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - abwinkler999
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-11-26 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rake
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
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: Converts Roman numerals into integers
42
+ email:
43
+ - abwinkler999@gmail.com
44
+ executables: []
45
+ extensions: []
46
+ extra_rdoc_files: []
47
+ files:
48
+ - .gitignore
49
+ - .rspec
50
+ - Gemfile
51
+ - Rakefile
52
+ - lib/roman_numerals.rb
53
+ - lib/roman_numerals/version.rb
54
+ - roman_numerals.gemspec
55
+ - spec/roman_numerals_spec.rb
56
+ homepage: http://www.github.com/abwinkler999/roman_numeral_gem
57
+ licenses:
58
+ - MIT
59
+ metadata: {}
60
+ post_install_message:
61
+ rdoc_options: []
62
+ require_paths:
63
+ - lib
64
+ required_ruby_version: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ! '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ required_rubygems_version: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - ! '>='
72
+ - !ruby/object:Gem::Version
73
+ version: '0'
74
+ requirements: []
75
+ rubyforge_project:
76
+ rubygems_version: 2.1.11
77
+ signing_key:
78
+ specification_version: 4
79
+ summary: Adds .r_to_i method to String, to convert a Roman numeral string to integer
80
+ test_files:
81
+ - spec/roman_numerals_spec.rb