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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 62c6bea054e83b3cd1d731cfbcb37b2704b3f788
4
- data.tar.gz: d7b74ae3ff6bb08e9c3a66545883c894c43ca4fb
3
+ metadata.gz: 6ab9b3216247da3d4d6d303c3a3d14f8accc42f3
4
+ data.tar.gz: a7ad007a936cd6cda892a722fe8ddd854696bd39
5
5
  SHA512:
6
- metadata.gz: 22fb7d51308547ca73b00e0f4e59b387b259f1a96dfdbfc815029761e44a58c2b677b9ec4b9a2b0c207d424a15edcc2f84415723fdc8c42c7fecdb13db8ab6a9
7
- data.tar.gz: 9243ade0c22b2f88d1b4291c1342043dddf3f1f1a3cf86570592ffb5bcc73724b52838bd9460cdf9a09b760bdec0653cbdf5979b70a287146d27e8478b22e90f
6
+ metadata.gz: 3e0bde4ed6f87a70a865a68a040323ee4c1ccd9c89e2bd64223e9ebdb88b45a8d4d9108efe39f94615dd7875b64294dc6aff02e4c3a4990c90c11566b22225ee
7
+ data.tar.gz: 7b18931e5cb42141ed5ed2d66cc7abdf5429b9645de6d55d20c07e2b540681ccc3a41717f1aec6c7626d3b66ebc61e5c2ca1480fa434ed3b3045daca129fae2b
@@ -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", "~> 10.0"
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
@@ -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 }
@@ -1,3 +1,3 @@
1
1
  module Bassy
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
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.0
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: '10.0'
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: '10.0'
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: '0'
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: '0'
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: