hodorhodor 1.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 +7 -0
- data/HODOR.md +28 -0
- data/Rakefile +23 -0
- data/hodor/hodor.rb +77 -0
- data/hodor/hodor/hodor.rb +3 -0
- data/hodorhodor/hodor/hodor_hodor.rb +21 -0
- data/hodorhodorhodorhodor/hodor +3 -0
- data/hodorhodorhodorhodor/hodorhodor +3 -0
- metadata +95 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: abf1e607ccd4d11dcd08d079c523c4c25a8eae60
|
4
|
+
data.tar.gz: feebd508bad00f27ae82b051d8c49e7a09a19b31
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 46e3c9894c15aeb070f1ec375be6d845e58e1184b351844309a66dd77dd54188d860d59b24db0ecf61b68877a6543563ed6ad89164f1c558c60a4e431a66c018
|
7
|
+
data.tar.gz: 465779ad3971f0b541dca8d0a27ac557383e4fc7fd68185c9801827d7e662a4f70c9369db2916b12d51a47dcca9de838f62ca7d1b9b644978087ec3bdff94fd3
|
data/HODOR.md
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
# Hodor
|
2
|
+
|
3
|
+
Hodor hodor hodor. Hodor **hodor hodor**, hodor hodor hodor hodor.
|
4
|
+
|
5
|
+
## HODOR
|
6
|
+
|
7
|
+
```
|
8
|
+
gem install hodorhodor
|
9
|
+
hodor /etc/passwd > hodor.hodor
|
10
|
+
hodorhodor hodor.hodor > hodor.hodor.hodor
|
11
|
+
diff /etc/passwd hodor.hodor.hodor
|
12
|
+
```
|
13
|
+
|
14
|
+
Hodor hodor hodor hodor!
|
15
|
+
|
16
|
+
## HODOR HODOR HODOR
|
17
|
+
|
18
|
+
```ruby
|
19
|
+
require 'hodor'
|
20
|
+
hodor = Hodor.hodor(IO.read('hodor.hodor'))
|
21
|
+
puts Hodor.hodorhodor(hodor)
|
22
|
+
```
|
23
|
+
|
24
|
+
Hodor hodor hodor hodor, hodor hodor hodor *hodor*; hodor hodor hodor! :)
|
25
|
+
|
26
|
+
## HODORHODOR
|
27
|
+
|
28
|
+
Hodor hodor https://github.com/jkeiser/hodorhodor/issues, hodor john@johnkeiser.com. Hodor!
|
data/Rakefile
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'bundler'
|
2
|
+
require 'rubygems'
|
3
|
+
require 'rubygems/package_task'
|
4
|
+
require 'rdoc/task'
|
5
|
+
require 'rspec/core/rake_task'
|
6
|
+
|
7
|
+
Bundler::GemHelper.install_tasks
|
8
|
+
|
9
|
+
task :default => :hodor
|
10
|
+
|
11
|
+
desc "Run specs"
|
12
|
+
RSpec::Core::RakeTask.new(:spec) do |hodor|
|
13
|
+
hodor.pattern = 'hodorhodor/**/*_hodor.rb'
|
14
|
+
end
|
15
|
+
|
16
|
+
gem_spec = eval(File.read("hodorhodor.gemspec"))
|
17
|
+
|
18
|
+
RDoc::Task.new do |rdoc|
|
19
|
+
rdoc.rdoc_dir = 'rdoc'
|
20
|
+
rdoc.title = "mixlib-config #{gem_spec.version}"
|
21
|
+
rdoc.rdoc_files.include('README*')
|
22
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
23
|
+
end
|
data/hodor/hodor.rb
ADDED
@@ -0,0 +1,77 @@
|
|
1
|
+
require 'base64'
|
2
|
+
|
3
|
+
class Hodor
|
4
|
+
def self.hodor(str)
|
5
|
+
base64 = Base64.encode64(str)
|
6
|
+
result = ''
|
7
|
+
0.upto(base64.size-1) do |i|
|
8
|
+
if base64[i] == '='
|
9
|
+
result << '!'
|
10
|
+
elsif result == ''
|
11
|
+
result << to_hodor(base64[i])
|
12
|
+
elsif result[-1] != "\n" && Random.rand(20) == 0
|
13
|
+
result << "\n#{to_hodor(base64[i])}"
|
14
|
+
else
|
15
|
+
result << " #{to_hodor(base64[i])}"
|
16
|
+
end
|
17
|
+
end
|
18
|
+
result
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.hodorhodor(str)
|
22
|
+
base64 = ''
|
23
|
+
str.each_line do |line|
|
24
|
+
line.split(/\s+/).each do |hodor|
|
25
|
+
base64 << from_hodor(hodor)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
Base64.decode64(base64)
|
29
|
+
end
|
30
|
+
|
31
|
+
def self.to_hodor(ch)
|
32
|
+
if ch >= 'A' && ch <= 'Z'
|
33
|
+
val = ch.ord - 'A'.ord
|
34
|
+
elsif ch >= 'a' && ch <= 'z'
|
35
|
+
val = ch.ord - 'a'.ord + 26
|
36
|
+
elsif ch >= '0' && ch <= '9'
|
37
|
+
val = ch.ord - '0'.ord + 52
|
38
|
+
elsif ch == '+'
|
39
|
+
val = 62
|
40
|
+
else
|
41
|
+
val = 63
|
42
|
+
end
|
43
|
+
result = 'hodor'
|
44
|
+
4.downto(0) do |i|
|
45
|
+
result[i] = result[i].upcase if val & (1 << i) != 0
|
46
|
+
end
|
47
|
+
if val & (1 << 5) != 0
|
48
|
+
result << %w(, . ... ;)[Random.rand(4)]
|
49
|
+
end
|
50
|
+
result
|
51
|
+
end
|
52
|
+
|
53
|
+
def self.from_hodor(hodor)
|
54
|
+
# ! translates to =
|
55
|
+
if hodor[hodor.size-1] == '!'
|
56
|
+
return "#{from_hodor(hodor[0,hodor.size-1])}="
|
57
|
+
end
|
58
|
+
|
59
|
+
# If it's a hodor with punctuation, the 6th bit is 1
|
60
|
+
val = hodor.size > 5 ? (1 << 5) : 0
|
61
|
+
|
62
|
+
4.downto(0) do |i|
|
63
|
+
val = val | (1 << i) if hodor[i] == hodor[i].upcase
|
64
|
+
end
|
65
|
+
if val >= 0 && val < 26
|
66
|
+
(val+'A'.ord).chr
|
67
|
+
elsif val >= 26 && val < 52
|
68
|
+
(val-26+'a'.ord).chr
|
69
|
+
elsif val >= 52 && val < 62
|
70
|
+
(val-52+'0'.ord).chr
|
71
|
+
elsif val == 62
|
72
|
+
'+'
|
73
|
+
else
|
74
|
+
'/'
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
$:.unshift(File.expand_path('../../../hodor', __FILE__))
|
2
|
+
|
3
|
+
require 'hodor'
|
4
|
+
|
5
|
+
describe ::Hodor do
|
6
|
+
it 'Hodor hodor hodor HODOR! Hodor hodor hodor.' do
|
7
|
+
Hodor.hodor('hodor').split(/\s/).should == ["hOdOR", "hODor", "HoDOR,", "hoDor,", "HOdOR", "HODoR...", "hodOr!", "HODOR."]
|
8
|
+
end
|
9
|
+
|
10
|
+
it 'Hodor hodor hodor hodor.' do
|
11
|
+
Hodor.hodorhodor('hodor hodor hodor hodor').should == "\0\0\0"
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'Hodor hodor hodor, hodor hodor hodor.' do
|
15
|
+
Hodor.hodorhodor(Hodor.hodor('hodor hodor hodor HOOOOOODOOOOOOR hodor')).should == 'hodor hodor hodor HOOOOOODOOOOOOR hodor'
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'Hodor hodor hodor, hodor hodor hodor hodor HODOR.' do
|
19
|
+
Hodor.hodorhodor(Hodor.hodor("hodor hodor hodor\0HOOOOOODOOOOOOR\nhodor")).should == "hodor hodor hodor\0HOOOOOODOOOOOOR\nhodor"
|
20
|
+
end
|
21
|
+
end
|
metadata
ADDED
@@ -0,0 +1,95 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: hodorhodor
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: '1.0'
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- John Keiser
|
8
|
+
autorequire:
|
9
|
+
bindir: hodorhodorhodorhodor
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-06-09 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rake
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rspec
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rdoc
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
description: Hodor hodor hodor hodor hodor
|
56
|
+
email: john@johnkeiser.com
|
57
|
+
executables:
|
58
|
+
- hodor
|
59
|
+
- hodorhodor
|
60
|
+
extensions: []
|
61
|
+
extra_rdoc_files:
|
62
|
+
- HODOR.md
|
63
|
+
files:
|
64
|
+
- HODOR.md
|
65
|
+
- Rakefile
|
66
|
+
- hodor/hodor.rb
|
67
|
+
- hodor/hodor/hodor.rb
|
68
|
+
- hodorhodor/hodor/hodor_hodor.rb
|
69
|
+
- hodorhodorhodorhodor/hodor
|
70
|
+
- hodorhodorhodorhodor/hodorhodor
|
71
|
+
homepage: https://github.com/jkeiser/hodorhodor
|
72
|
+
licenses: []
|
73
|
+
metadata: {}
|
74
|
+
post_install_message:
|
75
|
+
rdoc_options: []
|
76
|
+
require_paths:
|
77
|
+
- hodor
|
78
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
84
|
+
requirements:
|
85
|
+
- - ">="
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '0'
|
88
|
+
requirements: []
|
89
|
+
rubyforge_project:
|
90
|
+
rubygems_version: 2.2.2
|
91
|
+
signing_key:
|
92
|
+
specification_version: 4
|
93
|
+
summary: Hodor hodor hodor hodor hodor
|
94
|
+
test_files: []
|
95
|
+
has_rdoc:
|