basecustom 1.0.0 → 1.0.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1518a7c42b93431aca84dae5aed485f57a41d3d9
4
- data.tar.gz: 43f26a363cf54eeb8e27c0147fbe07512fbb2a11
3
+ metadata.gz: c2233eb5a114e59208ab286a6538e4cbbf7fe49b
4
+ data.tar.gz: a001b263d87d549297dea8fb39617dfde233586a
5
5
  SHA512:
6
- metadata.gz: df61c42c3452574ebc8c8e20c4a061e349da59f29e6ef92e41f723fe5181b3e90957a4beaf83c224c218cdb47952311a95d06ef369b4fc0053412544b3c7f019
7
- data.tar.gz: 18631b343764b359a653d8c324f17c249810585c24323974dc85be958911f9a757d1047c42a8ddc0273bd53c93c1d6e2cb756b6b586acecb5f22fdbc274cee48
6
+ metadata.gz: a34d824e497bfc29dc5f1aa77b610933a9bb775003dee7edde96e95f33313d6088d42f152e3f5d5a5579f1ba41fe66c90d12f3ca55c4233d0182413cd5da5ba2
7
+ data.tar.gz: 4b2901922a0b9629fdd89ff9ce7ab76904c45d38f719e433682f0b3002578ad6d385a71216a413776e46b1e82b7d704480677df90d0530aa4046568965072705
data/README.md CHANGED
@@ -32,6 +32,11 @@ baseABC.base(123)
32
32
 
33
33
  # Version History
34
34
 
35
+ Version 1.0.1
36
+ * Enabled use of special characters like newline (\n) or tab (\t) to be counted
37
+ as acceptable numeric characters. These characters can now also be printed with
38
+ expected behavior.
39
+
35
40
  Version 1.0.0
36
41
  * Bump version number. Gem has proven ready as a version 1 release.
37
42
 
@@ -1,7 +1,11 @@
1
1
  class BaseCustom
2
- VERSION = "1.0.0"
2
+ VERSION = "1.0.1"
3
3
  end
4
4
 
5
+ # Version 1.0.1
6
+ # * Enabled use of special characters like newline (\n) or tab (\t) to be counted
7
+ # as acceptable numeric characters. These characters can now also be printed with
8
+ # expected behavior.
5
9
  # Version 1.0.0
6
10
  # * Bump version number. Gem has proven ready as a version 1 release.
7
11
  # Version 0.1.8
data/lib/basecustom.rb CHANGED
@@ -7,9 +7,9 @@ require 'basecustom/version'
7
7
 
8
8
  class BaseCustom
9
9
 
10
- def initialize(array_in, delim = '')
10
+ def initialize(array_in, delim = "")
11
11
  if array_in.is_a?(String)
12
- array_in = array_in.split(delim)
12
+ array_in = array_in.split(/#{delim}/)
13
13
  end
14
14
  if not array_in.is_a?(Array)
15
15
  raise "Invalid type! Please provide a String or an Array."
@@ -18,10 +18,13 @@ class BaseCustom
18
18
  if array_in.any? { |i| not i.is_a?(String) }
19
19
  raise "Invalid type! Each array element must be a String."
20
20
  end
21
+ if !delim.is_a? String
22
+ raise "Invalid delimiter type! Delimiter value must be a String."
23
+ end
21
24
  if array_in.any? { |i| i.length > 1 }
22
- if delim.empty?
23
- raise "Error! You must define a delimiter when using multiple characters for a base."
24
- end
25
+ if delim.empty?
26
+ raise "Error! You must define a delimiter when using multiple characters for a base."
27
+ end
25
28
  end
26
29
  @BASE_PRIMITIVES_ARRAY = array_in.uniq
27
30
  @BASE_PRIMITIVES_HASH = Hash[@BASE_PRIMITIVES_ARRAY.each_with_index.map {|x,idx| [x, idx]}]
@@ -30,11 +33,11 @@ class BaseCustom
30
33
 
31
34
  def base(input_val)
32
35
  if input_val.is_a?(String)
33
- if input_val.split(@delim).any? { |i| not @BASE_PRIMITIVES_ARRAY.include?(i) }
36
+ if input_val.split(/#{@delim}/).any? { |i| not @BASE_PRIMITIVES_ARRAY.include?(i) }
34
37
  raise "Characters used are not in predefined base!"
35
38
  end
36
39
  i, i_out = 0, 0
37
- input_val.split(@delim).reverse.each do |c|
40
+ input_val.split(/#{@delim}/).reverse.each do |c|
38
41
  place = @BASE_PRIMITIVES_HASH.size ** i
39
42
  i_out += @BASE_PRIMITIVES_HASH[c] * place
40
43
  i += 1
@@ -44,7 +47,7 @@ class BaseCustom
44
47
  elsif input_val.is_a?(Integer)
45
48
  return @BASE_PRIMITIVES_HASH.first[0] if input_val == 0
46
49
  number = input_val
47
- result = ''
50
+ result = ""
48
51
  while(number != 0)
49
52
  result = @BASE_PRIMITIVES_ARRAY[number % @BASE_PRIMITIVES_ARRAY.size ].to_s + @delim + result
50
53
  number = Integer(number/@BASE_PRIMITIVES_ARRAY.size)
@@ -30,9 +30,10 @@ class TestBaseCustom < Test::Unit::TestCase
30
30
  assert_raise RuntimeError, LoadError do base2.base(:nonexistant); end
31
31
  assert_raise RuntimeError, LoadError do base2.base('abc'); end
32
32
  assert_raise RuntimeError, LoadError do base2.base(4.5); end
33
- assert_raise RuntimeError, LoadError do baseFail = BaseCustom.new(%w[:a :b :c]); end
34
- assert_raise RuntimeError, LoadError do baseFail = BaseCustom.new(0..9); end
35
- assert_raise RuntimeError, LoadError do baseFail = BaseCustom.new(['0','1',2]); end
33
+ assert_raise RuntimeError, LoadError do BaseCustom.new(%w[:a :b :c]); end
34
+ assert_raise RuntimeError, LoadError do BaseCustom.new(0..9); end
35
+ assert_raise RuntimeError, LoadError do BaseCustom.new(['0','1',2]); end
36
+ assert_raise RuntimeError, LoadError do BaseCustom.new("123", //); end
36
37
  end
37
38
 
38
39
  def test_delim
@@ -58,4 +59,11 @@ class TestBaseCustom < Test::Unit::TestCase
58
59
  assert baseMND.base(12) == "bb:bb:aa:"
59
60
  assert baseMND.base("bb:bb:aa:") == 12
60
61
  end
62
+
63
+ def test_special_characters
64
+ baseSC = BaseCustom.new("\n 0 1 \t", " ")
65
+ assert baseSC.base(12345) == "\t \n \n \n \t 1 0 "
66
+ baseSC = BaseCustom.new(["\n", "0", "1", "\t"])
67
+ assert baseSC.base(12345) == "\t\n\n\n\t10"
68
+ end
61
69
  end
metadata CHANGED
@@ -1,17 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: basecustom
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel P. Clark / 6ftDan(TM)
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-07-12 00:00:00.000000000 Z
11
+ date: 2015-02-15 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Define your own numberic base! Highly advanced and ultimately simple!
14
- email: webmaster@6ftdan.com
14
+ email: 6ftdan@gmail.com
15
15
  executables: []
16
16
  extensions: []
17
17
  extra_rdoc_files: []
@@ -20,7 +20,7 @@ files:
20
20
  - README.md
21
21
  - lib/basecustom.rb
22
22
  - lib/basecustom/version.rb
23
- - test/test_bc.rb
23
+ - test/bc_test.rb
24
24
  homepage: https://rubygems.org/gems/basecustom
25
25
  licenses:
26
26
  - The MIT License (MIT)
@@ -41,7 +41,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
41
41
  version: '0'
42
42
  requirements: []
43
43
  rubyforge_project:
44
- rubygems_version: 2.3.0
44
+ rubygems_version: 2.4.5
45
45
  signing_key:
46
46
  specification_version: 4
47
47
  summary: Define your own numberic base!