bijective 0.0.0 → 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1e54e88636e6e344cb2c2562a744f0fc5b8206d0
4
- data.tar.gz: 0e9ce56aeb1c7bde458a5dc9e372fceed0435d2e
3
+ metadata.gz: ac434b4d245a7f10b36c4ed8e44363dcd09abcd2
4
+ data.tar.gz: 5e9d82d69e59620ed490dbf624f715f121ab3af8
5
5
  SHA512:
6
- metadata.gz: 2bbed7df489380bc49533cd3fa0edbb9928de0f4d04600137d85e53ca81320dca0380fa745241cbd7568ad302d94a423096ca36dbf9bb5d9a8d358b394ee89ec
7
- data.tar.gz: 731c2e262747af55a7f3ee199a067c1c8a2f759941e823f6f24e07db9a02cbb5cf7d6d06ceec5158f08569d305d5859524757cf2c4ecf6ddcc8840905deecb4d
6
+ metadata.gz: 21f96aab0bf5ec0cbffeb426e38deb33e7035ce525d1913ed4f42cf6887a23c64f54b13aa69bbec4b27b9e8d76504efd56d478d1e678737d0976a13dc550390b
7
+ data.tar.gz: 2ee3a69d68aaa927987d6964110bfcde1a8439d37f3d2e8781098ab1094692472e72d29dcaebb2fe93891fb45e7bc77c39c4af0fea10cd14c0fa4d154ff8085f
data/.gitignore CHANGED
@@ -1 +1,2 @@
1
1
  README.html
2
+ /*.gem
@@ -0,0 +1,14 @@
1
+ language: ruby
2
+ rvm:
3
+ - ruby-head
4
+ - jruby-head
5
+ - 1.9.3
6
+ - 1.8.7
7
+ - jruby-18mode
8
+ - jruby-19mode
9
+ - rbx-18mode
10
+ - rbx-19mode
11
+
12
+ branches:
13
+ only:
14
+ - development
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # bijective
1
+ # bijective [![Build Status](https://travis-ci.org/dnshl/bijective.png)](https://travis-ci.org/dnshl/bijective)
2
2
 
3
3
  ## Install
4
4
  gem install bijective
@@ -9,5 +9,22 @@
9
9
  - Create a new instance with generated sequence
10
10
  - Encode or decode
11
11
 
12
+ ```
13
+ irb(main):001:0> require 'bijective'
14
+ => true
15
+
16
+ irb(main):002:0> sequence = Bijective::Generator.generate_sequence
17
+ => "10mQU8Hc64YhgbItfkKvX37NzlZrVweRx5OJBPqni2dLuDEpsFoMjyATS9aGWC"
18
+
19
+ irb(main):003:0> bijective = Bijective::Instance.new(sequence)
20
+ => #<Bijective::Instance:0x007fe931a80800 @sequence="10mQU8Hc64YhgbItfkKvX37NzlZrVweRx5OJBPqni2dLuDEpsFoMjyATS9aGWC", @base=62>
21
+
22
+ irb(main):004:0> bijective.encode(91939)
23
+ => "NST"
24
+
25
+ irb(main):005:0> bijective.decode('NST')
26
+ => 91939
27
+ ```
28
+
12
29
  ## License
13
30
  See License file.
@@ -10,7 +10,7 @@ Gem::Specification.new do |s|
10
10
  s.description = "bijective can be used to decode strings and encode numbers"
11
11
  s.authors = ["Dennis Hall"]
12
12
  s.email = 'dennis@dennishall.de'
13
- s.homepage = 'http://rubygems.org/gems/bijective'
13
+ s.homepage = 'https://github.com/dnshl/bijective'
14
14
 
15
15
  s.files = `git ls-files`.split("\n")
16
16
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
@@ -3,6 +3,12 @@ require 'bijective/initialization_error'
3
3
 
4
4
  module Bijective
5
5
  class Instance
6
+ # Constructor initialises instance variables @sequence and @base.
7
+ #
8
+ # @param sequence [String] set instance object variable @sequence
9
+ # @raise [InitializationError] if sequence parameter has duplicate
10
+ # characters
11
+ # @return [Instance] new object instance
6
12
  def initialize sequence
7
13
  dublicate = sequence.split(//).uniq.join
8
14
 
@@ -14,9 +20,12 @@ module Bijective
14
20
  @base = @sequence.length
15
21
  end
16
22
 
17
- # returns string
23
+ # Encodes the given integer
24
+ #
25
+ # @param i [Integer] the integer to encode
26
+ # @return [String] the encoded string
18
27
  def encode i
19
- return @sequence[0] if i == 0
28
+ return @sequence[0,1] if i == 0
20
29
  s = ''
21
30
  while i > 0
22
31
  s << @sequence[i.modulo(@base)]
@@ -25,7 +34,10 @@ module Bijective
25
34
  s.reverse
26
35
  end
27
36
 
28
- # returns integer
37
+ # Decodes the given string
38
+ #
39
+ # @param s [String] the string to decode
40
+ # @return [Integer] the decoded integer
29
41
  def decode s
30
42
  i = 0
31
43
  s.each_char { |c| i = i * @base + @sequence.index(c) }
@@ -1,5 +1,9 @@
1
1
  module Bijective
2
2
  class Generator
3
+ # Class method to generate a random string containing uppercase / lowercase
4
+ # letters and numbers from 0 to 9
5
+ #
6
+ # @return [String] random string; with length 62
3
7
  def self.generate_sequence
4
8
  upcase_letters = ('A'..'Z').to_a
5
9
  downcase_letters = ('a'..'z').to_a
@@ -1,3 +1,3 @@
1
1
  module Bijective
2
- VERSION = '0.0.0'
2
+ VERSION = '1.0.0'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bijective
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dennis Hall
@@ -17,6 +17,7 @@ extensions: []
17
17
  extra_rdoc_files: []
18
18
  files:
19
19
  - .gitignore
20
+ - .travis.yml
20
21
  - License
21
22
  - README.md
22
23
  - Rakefile
@@ -29,7 +30,7 @@ files:
29
30
  - test/test_bijective.rb
30
31
  - test/test_generator.rb
31
32
  - test/test_initialization_error.rb
32
- homepage: http://rubygems.org/gems/bijective
33
+ homepage: https://github.com/dnshl/bijective
33
34
  licenses: []
34
35
  metadata: {}
35
36
  post_install_message: