failtrain 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.
- data/README +12 -0
- data/README.train +5 -0
- data/bin/failtrain +12 -0
- data/failtrain.gemspec +18 -0
- data/lib/failtrain.rb +67 -0
- metadata +72 -0
data/README
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
o o o o o o o . . . __________________________ ________________________ ______________________________
|
2
|
+
o _____ | | | | | |
|
3
|
+
.][__n_n_|DD[ ====_____ | gem install failtrain | | failtrain choo choo | | cat lines.txt | failtrain |
|
4
|
+
>(________|__|_[_________]__|________________________|_|______________________|_|____________________________|
|
5
|
+
_/oo OOOOO oo` ooo ooo 'o!o!o o!o!o` 'o!o!o o!o!o` 'o!o!o o!o!o`
|
6
|
+
-+-+-+-+-+-+-+-+-+-+-+-+-+--+-+-+-+-+-+-+-+-+-+-+-+-+--+-+-+-+-+-+-+-+-+-+-+-+--+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
|
7
|
+
____________________________ ________________
|
8
|
+
| | | |
|
9
|
+
| fun for the whole family | | no specs lol |
|
10
|
+
_|__________________________|_|______________|
|
11
|
+
'o!o!o o!o!o` 'o!o!o o!o!o`
|
12
|
+
-+-+-+-+-+-+-+-+-+-+-+-+-+-+--+-+-+-+-+-+-+-+-
|
data/README.train
ADDED
data/bin/failtrain
ADDED
data/failtrain.gemspec
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
Gem::Specification.new do |s|
|
2
|
+
s.name = 'failtrain'
|
3
|
+
s.version = '1.0.0'
|
4
|
+
s.summary = 'All aboard the fail train'
|
5
|
+
s.platform = Gem::Platform::RUBY
|
6
|
+
s.authors = ["Xavier Shay"]
|
7
|
+
s.email = ["hello@xaviershay.com"]
|
8
|
+
s.homepage = "http://github.com/xaviershay/failtrain"
|
9
|
+
s.has_rdoc = false
|
10
|
+
|
11
|
+
s.files = Dir.glob("lib/**/*.rb") +
|
12
|
+
Dir.glob("bin/*") +
|
13
|
+
%w(README.train README failtrain.gemspec)
|
14
|
+
|
15
|
+
s.bindir = 'bin'
|
16
|
+
s.require_path = 'lib'
|
17
|
+
s.executables << %q{failtrain}
|
18
|
+
end
|
data/lib/failtrain.rb
ADDED
@@ -0,0 +1,67 @@
|
|
1
|
+
class Failtrain
|
2
|
+
def self.construct(sentences)
|
3
|
+
head = <<-EOS
|
4
|
+
o o o o o o o . . .
|
5
|
+
o _____
|
6
|
+
.][__n_n_|DD[ ====_____
|
7
|
+
>(________|__|_[_________]_
|
8
|
+
_/oo OOOOO oo` ooo ooo
|
9
|
+
-+-+-+-+-+-+-+-+-+-+-+-+-+-
|
10
|
+
EOS
|
11
|
+
|
12
|
+
carriage_start = <<-EOS
|
13
|
+
_______
|
14
|
+
|
|
15
|
+
| XXXXX
|
16
|
+
_|______
|
17
|
+
'o!o!o
|
18
|
+
-+-+-+-+
|
19
|
+
EOS
|
20
|
+
carriage_middle = <<-EOS
|
21
|
+
__
|
22
|
+
|
23
|
+
XX
|
24
|
+
__
|
25
|
+
|
26
|
+
-+
|
27
|
+
EOS
|
28
|
+
carriage_end = <<-EOS
|
29
|
+
_______
|
30
|
+
|
|
31
|
+
XXXXX |
|
32
|
+
______|
|
33
|
+
o!o!o`
|
34
|
+
-+-+-+-
|
35
|
+
EOS
|
36
|
+
|
37
|
+
parts = [head]
|
38
|
+
line_length = head.lines.first.length
|
39
|
+
sentences.each do |word|
|
40
|
+
len = word.length
|
41
|
+
line_length += len + 4
|
42
|
+
mid_n = ([0, (len - 10)].max + 1) / 2
|
43
|
+
parts << carriage_start.gsub("XXXXX", "%5s" % word[0..4])
|
44
|
+
mid_n.times do |n|
|
45
|
+
parts << carriage_middle.gsub("XX", "%-2s" % word[5 + n * 2 .. 6 + n * 2])
|
46
|
+
end
|
47
|
+
parts << carriage_end.gsub("XXXXX", "%-5s" % word[5 + mid_n * 2 .. -1])
|
48
|
+
if line_length > 80
|
49
|
+
line_length = 0
|
50
|
+
parts << :break
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
buffer = ''
|
55
|
+
a = parts.first
|
56
|
+
parts[1..-1].each do |v|
|
57
|
+
a = if v == :break
|
58
|
+
buffer += a + "\n"
|
59
|
+
"\n" * 6
|
60
|
+
else
|
61
|
+
a.lines.to_a.map(&:chomp).zip(v.lines.to_a.map(&:chomp)).map(&:join).join("\n")
|
62
|
+
end
|
63
|
+
end
|
64
|
+
buffer += a if a.length > 6
|
65
|
+
buffer
|
66
|
+
end
|
67
|
+
end
|
metadata
ADDED
@@ -0,0 +1,72 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: failtrain
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 23
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 1
|
8
|
+
- 0
|
9
|
+
- 0
|
10
|
+
version: 1.0.0
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- Xavier Shay
|
14
|
+
autorequire:
|
15
|
+
bindir: bin
|
16
|
+
cert_chain: []
|
17
|
+
|
18
|
+
date: 2011-09-21 00:00:00 -07:00
|
19
|
+
default_executable:
|
20
|
+
dependencies: []
|
21
|
+
|
22
|
+
description:
|
23
|
+
email:
|
24
|
+
- hello@xaviershay.com
|
25
|
+
executables:
|
26
|
+
- failtrain
|
27
|
+
extensions: []
|
28
|
+
|
29
|
+
extra_rdoc_files: []
|
30
|
+
|
31
|
+
files:
|
32
|
+
- lib/failtrain.rb
|
33
|
+
- bin/failtrain
|
34
|
+
- README.train
|
35
|
+
- README
|
36
|
+
- failtrain.gemspec
|
37
|
+
has_rdoc: true
|
38
|
+
homepage: http://github.com/xaviershay/failtrain
|
39
|
+
licenses: []
|
40
|
+
|
41
|
+
post_install_message:
|
42
|
+
rdoc_options: []
|
43
|
+
|
44
|
+
require_paths:
|
45
|
+
- lib
|
46
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
47
|
+
none: false
|
48
|
+
requirements:
|
49
|
+
- - ">="
|
50
|
+
- !ruby/object:Gem::Version
|
51
|
+
hash: 3
|
52
|
+
segments:
|
53
|
+
- 0
|
54
|
+
version: "0"
|
55
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
56
|
+
none: false
|
57
|
+
requirements:
|
58
|
+
- - ">="
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
hash: 3
|
61
|
+
segments:
|
62
|
+
- 0
|
63
|
+
version: "0"
|
64
|
+
requirements: []
|
65
|
+
|
66
|
+
rubyforge_project:
|
67
|
+
rubygems_version: 1.6.2
|
68
|
+
signing_key:
|
69
|
+
specification_version: 3
|
70
|
+
summary: All aboard the fail train
|
71
|
+
test_files: []
|
72
|
+
|