ariejan-valerii 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.0
1
+ 1.1.0
@@ -1,16 +1,12 @@
1
1
  require 'enumerator'
2
2
 
3
3
  class Valerii
4
- # The encode character set
4
+
5
5
  ENCODE_CHARS =
6
- %w( 0 1 2 3 4 5 6 7
7
- 8 9 A B C D E F
8
- G H J K M N P Q
9
- R S T V W X Y Z
10
- a b c d e f h i
11
- j k l m n o p q
12
- r s t u v w x y
13
- z = - + [ ] $ # )
6
+ %w( B C D F G H J K
7
+ M N P Q R S T V
8
+ W Z b c d f h j
9
+ k m n p r x t v )
14
10
 
15
11
  DECODE_MAP = ENCODE_CHARS.to_enum(:each_with_index).inject({}) do |h,(c,i)|
16
12
  h[c] = i; h
@@ -21,7 +17,7 @@ class Valerii
21
17
  # Valerii.encode(1234) # => "KJ"
22
18
  #
23
19
  def self.encode(number, opts = {})
24
- str = number.to_s(2).reverse.scan(/.{1,6}/).map do |bits|
20
+ str = number.to_s(2).reverse.scan(/.{1,5}/).map do |bits|
25
21
  ENCODE_CHARS[bits.reverse.to_i(2)]
26
22
  end.reverse.join
27
23
 
@@ -35,6 +31,6 @@ class Valerii
35
31
  def self.decode(string)
36
32
  string.split(//).map { |char|
37
33
  DECODE_MAP[char] or return nil
38
- }.inject(0) { |result,val| (result << 6) + val }
34
+ }.inject(0) { |result,val| (result << 5) + val }
39
35
  end
40
36
  end
@@ -0,0 +1,27 @@
1
+ require File.dirname(__FILE__) + '/test_helper.rb'
2
+
3
+ class ValeriiTest < Test::Unit::TestCase
4
+
5
+ def test_encoding_and_decoding_single_chars
6
+ from = (0..31).to_a
7
+ to = %w( B C D F G H J K M N P Q R S T V W Z b c d f h j k m n p r x t v )
8
+
9
+ from.zip(to) do |symbol_value, encode_symbol|
10
+ assert_equal encode_symbol, Valerii.encode(symbol_value)
11
+ assert_equal symbol_value, Valerii.decode(encode_symbol)
12
+ end
13
+ end
14
+
15
+ def test_encoding_larger_numbers
16
+ assert_equal("CB", Valerii.encode(32))
17
+ assert_equal("CJb", Valerii.encode(1234))
18
+ assert_equal("GbNfdbmNWprxRHbVCJGmkHvKDhTMDKDDJcrfPmGJDHMHnKZBBBBBBBBBBBBBBBBBBBB", Valerii.encode(10**100))
19
+ end
20
+
21
+ def test_decoding_strings
22
+ assert_equal(32, Valerii.decode("CB"))
23
+ assert_equal(1234, Valerii.decode("CJb"))
24
+ assert_equal(10**100, Valerii.decode("GbNfdbmNWprxRHbVCJGmkHvKDhTMDKDDJcrfPmGJDHMHnKZBBBBBBBBBBBBBBBBBBBB"))
25
+ end
26
+
27
+ end
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{valerii}
8
- s.version = "1.0.0"
8
+ s.version = "1.1.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Ariejan de Vroom"]
12
- s.date = %q{2009-09-03}
12
+ s.date = %q{2009-09-04}
13
13
  s.description = %q{Convert integers to short strings and vice versa.}
14
14
  s.email = %q{ariejan@ariejan.net}
15
15
  s.extra_rdoc_files = [
@@ -24,7 +24,7 @@ Gem::Specification.new do |s|
24
24
  "VERSION",
25
25
  "lib/valerii.rb",
26
26
  "test/test_helper.rb",
27
- "test/test_valerii.rb",
27
+ "test/valerii_test.rb",
28
28
  "valerii.gemspec"
29
29
  ]
30
30
  s.has_rdoc = true
@@ -35,7 +35,7 @@ Gem::Specification.new do |s|
35
35
  s.summary = %q{Convert integers to short strings and vice versa.}
36
36
  s.test_files = [
37
37
  "test/test_helper.rb",
38
- "test/test_valerii.rb"
38
+ "test/valerii_test.rb"
39
39
  ]
40
40
 
41
41
  if s.respond_to? :specification_version then
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ariejan-valerii
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ariejan de Vroom
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-09-03 00:00:00 -07:00
12
+ date: 2009-09-04 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
@@ -30,7 +30,7 @@ files:
30
30
  - VERSION
31
31
  - lib/valerii.rb
32
32
  - test/test_helper.rb
33
- - test/test_valerii.rb
33
+ - test/valerii_test.rb
34
34
  - valerii.gemspec
35
35
  has_rdoc: true
36
36
  homepage: http://github.com/ariejan/valerii
@@ -61,4 +61,4 @@ specification_version: 2
61
61
  summary: Convert integers to short strings and vice versa.
62
62
  test_files:
63
63
  - test/test_helper.rb
64
- - test/test_valerii.rb
64
+ - test/valerii_test.rb
@@ -1,27 +0,0 @@
1
- require File.dirname(__FILE__) + '/test_helper.rb'
2
-
3
- class TestValerii < Test::Unit::TestCase
4
-
5
- def test_encoding_and_decoding_single_chars
6
- from = (0..63).to_a
7
- to = %w(0 1 2 3 4 5 6 7 8 9 A B C D E F G H J K M N P Q R S T V W X Y Z a b c d e f h i j k l m n o p q r s t u v w x y z = - + [ ] $ # )
8
-
9
- from.zip(to) do |symbol_value, encode_symbol|
10
- assert_equal encode_symbol, Valerii.encode(symbol_value)
11
- assert_equal symbol_value, Valerii.decode(encode_symbol)
12
- end
13
- end
14
-
15
- def test_encoding_larger_numbers
16
- assert_equal("a", Valerii.encode(32))
17
- assert_equal("KJ", Valerii.encode(1234))
18
- assert_equal("4eho9SK3ZEnB9zK4uaqucn=0dc4TZAltGrcjBj[G0000000000000000", Valerii.encode(10**100))
19
- end
20
-
21
- def test_decoding_strings
22
- assert_equal(32, Valerii.decode("a"))
23
- assert_equal(1234, Valerii.decode("KJ"))
24
- assert_equal(10**100, Valerii.decode("4eho9SK3ZEnB9zK4uaqucn=0dc4TZAltGrcjBj[G0000000000000000"))
25
- end
26
-
27
- end