hodorhodor 1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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:
|