bijective 0.0.0 → 1.0.0

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: 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: