rotn 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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: d41d0eab13053e5dac4d849c1fa6df9ac2dd2763
4
+ data.tar.gz: ec184df48a7a7f7dc38fe805d76f0e30c7c57b0a
5
+ SHA512:
6
+ metadata.gz: e3e055ef996f666a4577ef9392b7b9f4f11b1ae1fd2cb04056f0366a3717d0732838472713c8f36c34ce754f5089ed6f63c938ddf3086b9e5aa28a3c2e75a777
7
+ data.tar.gz: 06c04d2f0d5159d892a965029ce4d4ec2067c01fc080d7a38bb3a834addc4faa7333643c5573a716f817afaa5db03361a2b81f9ec713784b94b6fc48b8dbb2bf
checksums.yaml.gz.sig ADDED
Binary file
data/lib/rotn/local.rb ADDED
@@ -0,0 +1,9 @@
1
+ class Rotn
2
+ def self.shift_dictionary(amount, type)
3
+ numbers = "0123456789"
4
+ small = "abcdefghijklmnopqrstuvwxyz"
5
+ big = small.upcase
6
+ return "#{small[amount..-1]}#{small[0..amount]}#{big[amount+1..-1]}#{big[0..amount+1]}" if type == :a
7
+ return "#{numbers[amount..-1]}#{numbers[0..amount]}" if type == :n
8
+ end
9
+ end
data/lib/rotn.rb ADDED
@@ -0,0 +1,57 @@
1
+ require 'rotn/local'
2
+
3
+ # The String class
4
+ class String
5
+ # Shift a string by N symbols
6
+ #
7
+ # Example:
8
+ # >> "Hello World 123".encode({:a => 13, :n => 5})
9
+ # => "Uryyb Jbeyq 678"
10
+ #
11
+ # Arguments:
12
+ # map: (Hash)
13
+ def shift(map)
14
+ string = self.dup
15
+ string.tr!("a-zA-Z", Rotn.shift_dictionary(map[:a], :a)) if map.has_key? :a
16
+ string.tr!("0-9", Rotn.shift_dictionary(map[:n], :n)) if map.has_key? :n
17
+ return string
18
+ end
19
+ # In-place shift by N symbols
20
+ #
21
+ # Example:
22
+ # >> a = "Hello World 123"
23
+ # => "Hello World 123"
24
+ # >> a.encode!({:a => 4, :n => 1})
25
+ # => "Lipps Asvph 234"
26
+ # >> a
27
+ # => "Lipps Asvph 234"
28
+ #
29
+ # Arguments:
30
+ # map: (Hash)
31
+ def shift!(map)
32
+ replace shift(map)
33
+ end
34
+ # Unshift a string by N symbols
35
+ #
36
+ # Example:
37
+ # >> "Yvccf Nficu 345".unshift({:a => 17, :n => 2})
38
+ # => "Hello World 123"
39
+ def unshift(map)
40
+ string = self.dup
41
+ string.tr!(Rotn.shift_dictionary(map[:a], :a), "a-zA-Z") if map.has_key? :a
42
+ string.tr!(Rotn.shift_dictionary(map[:n], :n), "0-9") if map.has_key? :n
43
+ return string
44
+ end
45
+ # In-place unshift by N symbols
46
+ #
47
+ # Example:
48
+ # >> a = "Rovvy Gybvn 567"
49
+ # => "Rovvy Gybvn 567"
50
+ # >> a.encode!({:a => 10, :n => 4})
51
+ # => "Hello World 123"
52
+ # >> a
53
+ # => "Hello World 123"
54
+ def unshift!(map)
55
+ replace unshift(map)
56
+ end
57
+ end
data.tar.gz.sig ADDED
Binary file
metadata ADDED
@@ -0,0 +1,67 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rotn
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Mark Black
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain:
11
+ - |
12
+ -----BEGIN CERTIFICATE-----
13
+ MIIDijCCAnKgAwIBAgIBATANBgkqhkiG9w0BAQUFADBFMRUwEwYDVQQDDAxhbm5v
14
+ eWluZy1kb2cxFzAVBgoJkiaJk/IsZAEZFgdvdXRsb29rMRMwEQYKCZImiZPyLGQB
15
+ GRYDY29tMB4XDTE2MDgzMDExMDg0MloXDTE3MDgzMDExMDg0MlowRTEVMBMGA1UE
16
+ AwwMYW5ub3lpbmctZG9nMRcwFQYKCZImiZPyLGQBGRYHb3V0bG9vazETMBEGCgmS
17
+ JomT8ixkARkWA2NvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKcc
18
+ iSxgSTpOlNYBgE45PBzrruyajHudG63gvMkmX/Q2hBt2ZaHSxr5987xJxFrnrA2V
19
+ y/tTJKhBz7PthZxGN2BVfUM5YoJfMZJfB8UR58x0cmC1pnRXDLqhIRkdne0J7gcj
20
+ gmvkYG3KztMn0bscTfZUbQE0N3/63U1fvYnfh0rVXI4zqXlMLQrQc2JuqkBm9yYz
21
+ VRoCIL7neU7cKY/J13hnvS+ZbNJUEBY8F7QBnduJyO2ebC6Wxq6UMzvwAfLj+sjO
22
+ X0fJWpn0TV/E4qW4+Jd8kbJ/337X/wtZe8hzTmcmrU5oznjt0n5XkRbzzuyJorX7
23
+ vDxbaZgLZlWI7nDA66UCAwEAAaOBhDCBgTAJBgNVHRMEAjAAMAsGA1UdDwQEAwIE
24
+ sDAdBgNVHQ4EFgQUZfd8Ir9L8Gx8TTvA7OpmDH8TPSAwIwYDVR0RBBwwGoEYYW5u
25
+ b3lpbmctZG9nQG91dGxvb2suY29tMCMGA1UdEgQcMBqBGGFubm95aW5nLWRvZ0Bv
26
+ dXRsb29rLmNvbTANBgkqhkiG9w0BAQUFAAOCAQEAoeM9efUIyihbdEq1USbjJQij
27
+ zMI4tw/haoOae/BNR4dNwdNKvkOQpaUk1h1FSopAjXuKg5XK8ZYE8oASGwfQTcNt
28
+ 2M2wpBSwoQbDBa8T5NqIJQ34RVmzh62XwYxnFZa4JWcC7cbrwpTiywKsl0DimlBc
29
+ bjdX1MyhxQ+Wxuy6oov4fM1nn+MDc5mxk+ZdUesvkKue1xj1C8rUqI3wxowSqX0q
30
+ Axuy/yOJMbFmpkrP4EiYeDjWwpZ3U80Z6J3jExBR+GDVoy/8+uPSxfh+7UD8a0QH
31
+ LgOq3QTHStbVqOBVA/XiTIapLxpC2xOUDpVxKsktRFaBCzBe6XOC/+Hy6YI89g==
32
+ -----END CERTIFICATE-----
33
+ date: 2016-08-29 00:00:00.000000000 Z
34
+ dependencies: []
35
+ description: A library to perform a Caesar cypher by N symbols
36
+ email: annoying-dog@outlook.com
37
+ executables: []
38
+ extensions: []
39
+ extra_rdoc_files: []
40
+ files:
41
+ - lib/rotn.rb
42
+ - lib/rotn/local.rb
43
+ homepage: https://github.com/annoying-dog/rotn
44
+ licenses:
45
+ - MIT
46
+ metadata: {}
47
+ post_install_message:
48
+ rdoc_options: []
49
+ require_paths:
50
+ - lib
51
+ required_ruby_version: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - '>='
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ required_rubygems_version: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - '>='
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ requirements: []
62
+ rubyforge_project:
63
+ rubygems_version: 2.0.14
64
+ signing_key:
65
+ specification_version: 4
66
+ summary: Rotate by N
67
+ test_files: []
metadata.gz.sig ADDED
@@ -0,0 +1 @@
1
+ a�SZ ����^uu��O`xv��n(�4/