vamp 0.1.0 → 0.1.1
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 +4 -4
- data/files/pyramid.txt +3720 -0
- data/lib/vamp/animator.rb +81 -0
- data/lib/vamp/version.rb +1 -1
- data/lib/vamp.rb +14 -1
- data/sample/cli.rb +28 -0
- data/spec/vamp_spec.rb +1 -7
- metadata +5 -2
@@ -0,0 +1,81 @@
|
|
1
|
+
module Vamp
|
2
|
+
# play animation on console
|
3
|
+
class Animator
|
4
|
+
attr_accessor :data
|
5
|
+
attr_accessor :number
|
6
|
+
|
7
|
+
def initialize(file, number = 31)
|
8
|
+
@data = []
|
9
|
+
@number = number
|
10
|
+
lines = IO.readlines(file)
|
11
|
+
lines.each_slice(number) do |block|
|
12
|
+
d = []
|
13
|
+
block.each do |line|
|
14
|
+
# puts line.class
|
15
|
+
# puts printf("%-40s", line)
|
16
|
+
# d << line
|
17
|
+
d << (line.rstrip + (" " * 80))[0..80]
|
18
|
+
# d << sprintf("%80s", line)
|
19
|
+
# puts block.length
|
20
|
+
end
|
21
|
+
# puts lines
|
22
|
+
@data << d
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def clear
|
27
|
+
print "\e[H\e[2J"
|
28
|
+
end
|
29
|
+
|
30
|
+
def home
|
31
|
+
print "\e[H\e[#{number}F"
|
32
|
+
end
|
33
|
+
|
34
|
+
def home
|
35
|
+
print "\e[H\e[#{number}F"
|
36
|
+
end
|
37
|
+
|
38
|
+
def down
|
39
|
+
# number.times { puts }
|
40
|
+
print "\e[H\e[#{number}E"
|
41
|
+
end
|
42
|
+
|
43
|
+
def flush
|
44
|
+
$stdout.flush
|
45
|
+
end
|
46
|
+
|
47
|
+
def animate(msg)
|
48
|
+
home
|
49
|
+
print msg
|
50
|
+
flush
|
51
|
+
sleep(1.0/48.0)
|
52
|
+
end
|
53
|
+
|
54
|
+
def cursor_off
|
55
|
+
print "\e[H\e[?25l"
|
56
|
+
end
|
57
|
+
|
58
|
+
def cursor_on
|
59
|
+
print "\e[H\e[?25h"
|
60
|
+
end
|
61
|
+
|
62
|
+
def play
|
63
|
+
if $stdout.isatty
|
64
|
+
begin
|
65
|
+
cursor_off
|
66
|
+
clear
|
67
|
+
data.each { |lines| animate(lines.join("\n"))}
|
68
|
+
ensure
|
69
|
+
cursor_on
|
70
|
+
down
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
if __FILE__ == $0
|
78
|
+
# get root directory of this gem
|
79
|
+
animator = Vamp::Animator.new(File.join(Gem.loaded_specs["vamp"].gem_dir, "files", "pyramid.txt"))
|
80
|
+
animator.play
|
81
|
+
end
|
data/lib/vamp/version.rb
CHANGED
data/lib/vamp.rb
CHANGED
@@ -1,6 +1,10 @@
|
|
1
1
|
require "vamp/version"
|
2
|
+
require "vamp/animator"
|
2
3
|
|
3
4
|
module Vamp
|
5
|
+
|
6
|
+
# ascii art vampire by the queen of ascii art: Joan Stark
|
7
|
+
# https://en.wikipedia.org/wiki/Joan_Stark
|
4
8
|
VAMPIRE = <<-END
|
5
9
|
=/\\ /\\=
|
6
10
|
/ \\'._ (\\_/) _.'/ \\
|
@@ -11,6 +15,7 @@ module Vamp
|
|
11
15
|
` " " `
|
12
16
|
END
|
13
17
|
|
18
|
+
# return random quote
|
14
19
|
def quote
|
15
20
|
[
|
16
21
|
"Twilight, again. Another ending. No matter how perfect the day is, it always has to end.",
|
@@ -49,7 +54,15 @@ module Vamp
|
|
49
54
|
"There is a good reason why these rules were created, and they are the only reason we have survived this long!",
|
50
55
|
"First rule about vampires, don`t believe anything you read.",
|
51
56
|
"Stupid, unreliable vampire.",
|
52
|
-
"Which is tempting you more, my blood or my body?"
|
57
|
+
"Which is tempting you more, my blood or my body?",
|
58
|
+
"You can have my soul. I don't want it without you - it's yours already!",
|
59
|
+
"It appears we have a lot to learn about each other.",
|
60
|
+
"You have nothing to worry about. You are completely safe here.",
|
61
|
+
"One thing vampire children are taught is, never run with a wooden stake.",
|
62
|
+
"The unknown is now my reality, for I do not yet understand what I have become." \
|
63
|
+
" The future brings so many questions, so many fears. But the first step, the first day, has arrived.",
|
64
|
+
"Please forgive me, but I desperately need your guidance. I apologise for breaking the Chain and awakening you " \
|
65
|
+
" a head of schedule, but I fear we may all be in grave danger."
|
53
66
|
].sample
|
54
67
|
end
|
55
68
|
end
|
data/sample/cli.rb
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
require "thor"
|
2
|
+
require "vamp"
|
3
|
+
|
4
|
+
class CLI < Thor
|
5
|
+
include Vamp
|
6
|
+
|
7
|
+
def initialize(*args)
|
8
|
+
at_exit { thats_all_folks }
|
9
|
+
super
|
10
|
+
end
|
11
|
+
|
12
|
+
desc "example", "an example task"
|
13
|
+
def example
|
14
|
+
puts "I'm a thor task!"
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def thats_all_folks
|
20
|
+
say
|
21
|
+
say VAMPIRE, :yellow
|
22
|
+
say
|
23
|
+
say " \"#{quote}\"", :blue
|
24
|
+
say
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
CLI.start(ARGV)
|
data/spec/vamp_spec.rb
CHANGED
@@ -17,17 +17,11 @@ describe Vamp do
|
|
17
17
|
expect(quote.length).to be_between(11, 999)
|
18
18
|
end
|
19
19
|
|
20
|
-
subject(:messages) do
|
21
|
-
messages = Set.new
|
22
|
-
maximum = 10
|
23
|
-
minimum = maximum / 1
|
24
|
-
end
|
25
20
|
it "gives different quotes" do
|
26
21
|
messages = Set.new
|
27
22
|
maximum = 10
|
28
|
-
minimum = maximum /
|
23
|
+
minimum = maximum / 2
|
29
24
|
maximum.times { messages << quote }
|
30
|
-
let()
|
31
25
|
begin
|
32
26
|
expect(messages.size).to be_between(minimum, maximum)
|
33
27
|
rescue
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vamp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Meyling
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-10-
|
11
|
+
date: 2015-10-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -51,8 +51,11 @@ files:
|
|
51
51
|
- LICENSE.txt
|
52
52
|
- README.md
|
53
53
|
- Rakefile
|
54
|
+
- files/pyramid.txt
|
54
55
|
- lib/vamp.rb
|
56
|
+
- lib/vamp/animator.rb
|
55
57
|
- lib/vamp/version.rb
|
58
|
+
- sample/cli.rb
|
56
59
|
- spec/spec_helper.rb
|
57
60
|
- spec/vamp_spec.rb
|
58
61
|
- vamp.gemspec
|