bassy 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bassy.gemspec +2 -2
- data/lib/bassy.rb +18 -1
- data/lib/bassy/version.rb +1 -1
- metadata +7 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6ab9b3216247da3d4d6d303c3a3d14f8accc42f3
|
4
|
+
data.tar.gz: a7ad007a936cd6cda892a722fe8ddd854696bd39
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3e0bde4ed6f87a70a865a68a040323ee4c1ccd9c89e2bd64223e9ebdb88b45a8d4d9108efe39f94615dd7875b64294dc6aff02e4c3a4990c90c11566b22225ee
|
7
|
+
data.tar.gz: 7b18931e5cb42141ed5ed2d66cc7abdf5429b9645de6d55d20c07e2b540681ccc3a41717f1aec6c7626d3b66ebc61e5c2ca1480fa434ed3b3045daca129fae2b
|
data/bassy.gemspec
CHANGED
@@ -29,6 +29,6 @@ Gem::Specification.new do |spec|
|
|
29
29
|
spec.require_paths = ["lib"]
|
30
30
|
|
31
31
|
spec.add_development_dependency "bundler", "~> 1.10"
|
32
|
-
spec.add_development_dependency "rake", "~>
|
33
|
-
spec.add_development_dependency "rspec"
|
32
|
+
spec.add_development_dependency "rake", "~> 11.0"
|
33
|
+
spec.add_development_dependency "rspec", "~> 3.4"
|
34
34
|
end
|
data/lib/bassy.rb
CHANGED
@@ -1,37 +1,52 @@
|
|
1
1
|
require "bassy/version"
|
2
2
|
|
3
|
+
# Encapsulates the functionality of the gem
|
3
4
|
module Bassy
|
5
|
+
|
6
|
+
# Public facing API to handle the conversion
|
7
|
+
# +number+ - the number to convert
|
8
|
+
# +from+ - the base to convert from
|
9
|
+
# +to+ - the base to convert to
|
10
|
+
# Returns a string representation of the the number in the new base
|
4
11
|
def self.convert(number, from, *too)
|
5
12
|
from = from.to_s
|
6
13
|
number = number.to_s
|
7
14
|
|
15
|
+
# Handle case where something is to be converted to decimal
|
8
16
|
if too.empty?
|
9
17
|
to = 10.to_s
|
10
18
|
else
|
11
19
|
to = too.first.to_s
|
12
20
|
end
|
13
21
|
|
22
|
+
# Can only handle bases upto 36
|
14
23
|
fail ArgumentError if [from, to].any? { |a| !(2..36).include? a.to_i }
|
15
24
|
|
25
|
+
# No conversion required if both bases are same
|
16
26
|
if from == to
|
17
27
|
return number
|
18
28
|
else
|
19
29
|
convert_base(number, from, to)
|
20
|
-
|
21
30
|
end
|
22
31
|
end
|
23
32
|
|
24
33
|
private
|
25
34
|
|
35
|
+
# Handle the actual conversion
|
26
36
|
def self.convert_base(number, from, to)
|
37
|
+
# A mapping of ordinality
|
27
38
|
mapping = create_mapping
|
39
|
+
|
40
|
+
# Convert to decimal first
|
28
41
|
dec = number.chars.reduce(0) do |conv, c|
|
29
42
|
conv = conv * from.to_i + mapping[c]
|
30
43
|
end
|
31
44
|
|
32
45
|
reverse_mapping = mapping.invert
|
46
|
+
|
33
47
|
conv = ""
|
34
48
|
|
49
|
+
# Then convert decimal to the new base
|
35
50
|
while dec > 0
|
36
51
|
conv << reverse_mapping[dec % to.to_i]
|
37
52
|
dec /= to.to_i
|
@@ -40,11 +55,13 @@ module Bassy
|
|
40
55
|
conv.reverse
|
41
56
|
end
|
42
57
|
|
58
|
+
# Creates a mapping of ordinality for each character possible till base 36
|
43
59
|
def self.create_mapping
|
44
60
|
h = {}
|
45
61
|
keys = ('0'..'9').to_a
|
46
62
|
values = (0..9).to_a
|
47
63
|
keys.zip(values) { |k,v| h[k] = v }
|
64
|
+
|
48
65
|
keys = ('A'..'Z').to_a
|
49
66
|
values = (10..35).to_a
|
50
67
|
keys.zip(values) { |k,v| h[k] = v }
|
data/lib/bassy/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bassy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pawan Dubey
|
@@ -30,28 +30,28 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '11.0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '11.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rspec
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
45
|
+
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '3.4'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - "
|
52
|
+
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
54
|
+
version: '3.4'
|
55
55
|
description: Bassy takes a number and convert it from a given base to the specified
|
56
56
|
base.
|
57
57
|
email:
|