vamp 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
data/lib/vamp/animator.rb CHANGED
@@ -1,22 +1,32 @@
1
+ require_relative "colorize"
2
+
1
3
  module Vamp
2
4
  # play animation on console
3
5
  class Animator
4
- attr_accessor :data
5
- attr_accessor :number
6
+ attr_accessor :data # complete animation lines
7
+ attr_accessor :number # animation source height
8
+ attr_accessor :width # animation width
9
+ attr_accessor :height # animation height
10
+ attr_accessor :scroll # running text
6
11
 
7
- def initialize(file, number = 31)
12
+ def initialize(file, number = 31, height = number, scroll)
8
13
  @data = []
9
14
  @number = number
15
+ @width = 80
16
+ @height = height
17
+ @scroll = scroll
18
+ @offset = 0
10
19
  lines = IO.readlines(file)
11
20
  lines.each_slice(number) do |block|
12
21
  d = []
13
- block.each do |line|
22
+ block.each_with_index do |line, index|
14
23
  # puts line.class
15
24
  # puts printf("%-40s", line)
16
25
  # d << line
17
26
  d << (line.rstrip + (" " * 80))[0..80]
18
27
  # d << sprintf("%80s", line)
19
28
  # puts block.length
29
+ break if index >= height
20
30
  end
21
31
  # puts lines
22
32
  @data << d
@@ -28,16 +38,16 @@ module Vamp
28
38
  end
29
39
 
30
40
  def home
31
- print "\e[H\e[#{number}F"
41
+ print "\e[H\e[#{height}F"
32
42
  end
33
43
 
34
44
  def home
35
- print "\e[H\e[#{number}F"
45
+ print "\e[H\e[#{height}F"
36
46
  end
37
47
 
38
- def down
48
+ def down(lines = @height)
39
49
  # number.times { puts }
40
- print "\e[H\e[#{number}E"
50
+ print "\e[H\e[#{lines}E"
41
51
  end
42
52
 
43
53
  def flush
@@ -46,7 +56,8 @@ module Vamp
46
56
 
47
57
  def animate(msg)
48
58
  home
49
- print msg
59
+ puts Vamp::Colorize.colorize("red", msg)
60
+ puts Vamp::Colorize.colorize("blue", animate_line) if scroll
50
61
  flush
51
62
  sleep(1.0/48.0)
52
63
  end
@@ -59,23 +70,24 @@ module Vamp
59
70
  print "\e[H\e[?25h"
60
71
  end
61
72
 
73
+ def animate_line
74
+ @offset += 1
75
+ "#{@scroll[(@offset / 2)..(@offset / 2 + @width - 1)]}"
76
+ end
77
+
62
78
  def play
63
79
  if $stdout.isatty
64
80
  begin
65
81
  cursor_off
66
82
  clear
67
- data.each { |lines| animate(lines.join("\n"))}
83
+ data.each do
84
+ |lines| animate(lines.join("\n"))
85
+ end
68
86
  ensure
69
87
  cursor_on
70
- down
88
+ down(@height + 2)
71
89
  end
72
90
  end
73
91
  end
74
92
  end
75
93
  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
@@ -0,0 +1,47 @@
1
+ module Vamp
2
+ module Colorize
3
+ module Colors
4
+ NOTHING = '0;0'
5
+ BLACK = '0;30'
6
+ DARK_RED = '0;31'
7
+ DARK_GREEN = '0;32'
8
+ BROWN = '0;33'
9
+ BLUE = '0;34'
10
+ PURPLE = '0;35'
11
+ CYAN = '0;36'
12
+ GRAY = '0;37'
13
+ LIGHT_GRAY = '0;37'
14
+ DARK_GRAY = '1;30'
15
+ RED = '1;31'
16
+ GREEN = '1;32'
17
+ YELLOW = '1;33'
18
+ LIGHT_BLUE = '1;34'
19
+ LIGHT_PURPLE = '1;35'
20
+ LIGHT_CYAN = '1;36'
21
+ WHITE = '1;37'
22
+ end
23
+
24
+ class << self
25
+ def colorize(color, text)
26
+ color = Colorize::Colors.const_get(color.to_s.upcase)
27
+ color ? colorful_text(color, text) : text
28
+ rescue
29
+ text
30
+ end
31
+
32
+ def method_missing(symbol, *args)
33
+ color = Colorize::Colors.const_get(color.to_s.upcase)
34
+ return colorful_text(color, *args) if color
35
+ super
36
+ rescue
37
+ super
38
+ end
39
+
40
+ private
41
+
42
+ def colorful_text(color, text)
43
+ "\e[#{color}m#{text}\e[0;0m"
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,37 @@
1
+ require "stringio"
2
+
3
+ require_relative "ply_object"
4
+
5
+ module Vamp
6
+ module Ply
7
+ class Cube < PlyObject
8
+
9
+ def initialize(file, number = 31)
10
+ super()
11
+ @file = file
12
+ @number = number
13
+ add_vertex(1, 1, 1)
14
+ add_vertex(-1, 1, 1)
15
+ add_vertex(1, -1, 1)
16
+ add_vertex(1, 1, -1)
17
+ add_vertex(1, -1, -1)
18
+ add_vertex(-1, -1, 1)
19
+ add_vertex(-1, 1, -1)
20
+ add_vertex(-1, -1, -1)
21
+ add_polygon(0, 1, 5, 2)
22
+ add_polygon(0, 1, 6, 3)
23
+ add_polygon(0, 3, 4, 2)
24
+ add_polygon(2, 5, 7, 4)
25
+ add_polygon(1, 6, 7, 5)
26
+ add_polygon(3, 6, 7, 4)
27
+ end
28
+
29
+ end
30
+ end
31
+ end
32
+
33
+ if __FILE__ == $0
34
+ # get root directory of this gem
35
+ creator = Vamp::Ply::Cube.new(File.join("vampire.txt"))
36
+ puts creator
37
+ end
@@ -0,0 +1,61 @@
1
+ require "stringio"
2
+
3
+ module Vamp
4
+ module Ply
5
+ class PlyObject
6
+ attr_reader :vertices
7
+ attr_reader :polygons
8
+
9
+ def initialize
10
+ @vertices = []
11
+ @polygons = []
12
+ @output = StringIO.new
13
+ end
14
+
15
+ def add_vertex(x, y, z)
16
+ vertices << ([x.to_f, y.to_f, z.to_f])
17
+ end
18
+
19
+ def add_polygon(*vertexes)
20
+ vertexes.each do |v|
21
+ fail "unknown vertex #{v}" unless vertices[v.to_i]
22
+ end
23
+ polygons << vertexes.map(&:to_i)
24
+ end
25
+
26
+ def to_s
27
+ @output = StringIO.new
28
+ print_header
29
+ print_vertices
30
+ print_polygons
31
+ output.string
32
+ end
33
+
34
+ private
35
+
36
+ attr_accessor :output
37
+
38
+ def print_header
39
+ output.puts("# ply file to describe a 3D model")
40
+ output.puts("#")
41
+ end
42
+
43
+ def print_vertices
44
+ output.puts("# list of vertices (3 float values, coordinates)")
45
+ output.puts("# x y z")
46
+ vertices.each do |v|
47
+ output.puts("#{v[0].to_f} #{v[1].to_f} #{v[2].to_f}")
48
+ end
49
+ output.puts
50
+ end
51
+
52
+ def print_polygons
53
+ output.puts("# list of polygons (3, 4, .. integer values, vertex indices)")
54
+ polygons.each do |p|
55
+ output.puts("#{p.join(' ')}")
56
+ end
57
+ output.puts
58
+ end
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,43 @@
1
+ require "stringio"
2
+
3
+ require_relative "ply_object"
4
+
5
+ module Vamp
6
+ module Ply
7
+ class Vampire < PlyObject
8
+
9
+ def initialize(file, number = 31)
10
+ super()
11
+ @file = file
12
+ @number = number
13
+ d = 0.2
14
+ add_vertex(d, 1, 1) # 0
15
+ add_vertex(d, 0.4, 1) # 1
16
+ add_vertex(d, -1, 0) # 2
17
+ add_vertex(d, 0.4, -1) # 3
18
+ add_vertex(d, 1, -1) # 4
19
+ add_vertex(d, -0.4, 0) # 5
20
+ add_vertex(-d, 1, 1) # 6
21
+ add_vertex(-d, 0.4, 1) # 7
22
+ add_vertex(-d, -1, 0) # 8
23
+ add_vertex(-d, 0.4, -1) # 9
24
+ add_vertex(-d, 1, -1) # 10
25
+ add_vertex(-d, -0.4, 0) # 11
26
+ add_polygon(0, 1, 2, 3, 4, 5)
27
+ add_polygon(6, 7, 8, 9, 10, 11)
28
+ add_polygon(0, 1, 7, 6)
29
+ add_polygon(1, 2, 8, 7)
30
+ add_polygon(2, 3, 9, 8)
31
+ add_polygon(3, 4, 10, 9)
32
+ add_polygon(4, 5, 11, 10)
33
+ add_polygon(5, 0, 6, 11)
34
+ end
35
+ end
36
+ end
37
+ end
38
+
39
+ if __FILE__ == $0
40
+ # get root directory of this gem
41
+ creator = Vamp::Ply::Vampire.new(File.join("vampire.txt"))
42
+ puts creator
43
+ end
data/lib/vamp/ply.rb ADDED
@@ -0,0 +1,8 @@
1
+ require_relative "ply/ply_object"
2
+ require_relative "ply/cube"
3
+ require_relative "ply/vampire"
4
+
5
+ module Vamp
6
+ module Ply
7
+ end
8
+ end
data/lib/vamp/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Vamp
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
data/lib/vamp.rb CHANGED
@@ -1,5 +1,7 @@
1
- require "vamp/version"
2
- require "vamp/animator"
1
+ require_relative "vamp/animator"
2
+ require_relative "vamp/colorize"
3
+ require_relative "vamp/ply"
4
+ require_relative "vamp/version"
3
5
 
4
6
  module Vamp
5
7
 
@@ -25,13 +27,13 @@ module Vamp
25
27
  "Hey, what's your blood type?",
26
28
  "The strength of the vampire is that people will not believe in him.",
27
29
  "Death is Peaceful, Life is Harder.",
28
- "Youre still waiting for the running and the screaming, arent you?",
30
+ "You're still waiting for the running and the screaming, aren't you?",
29
31
  "Your number was up the first time I met you.",
30
32
  "You really should stay away from me.",
31
33
  "Thats the beautiful thing about being human: Things change.",
32
- "Ive never tried to keep a specific person alive before, and its much more troublesome" \
34
+ "I've never tried to keep a specific person alive before, and it's much more troublesome" \
33
35
  " than I would have believed.",
34
- "Hasnt anyone ever told you? Life isnt fair.",
36
+ "Hasn't anyone ever told you? Life isn't fair.",
35
37
  "No blood, no foul.",
36
38
  "Go sit down and look pale.",
37
39
  "It's not the end. It's the beginning.",
@@ -39,13 +41,13 @@ module Vamp
39
41
  "Don't be offended, but you seem to be one of those people who just attract accidents like a magnet.",
40
42
  "Without the dark, we'd never see the stars.",
41
43
  "I warned you that you didn't want to know everything I was thinking.",
42
- "Our relationship couldnt continue to balance, as it did, on the point of a knife.",
43
- "Why do people always assume that volume will succeed when logic wont?",
44
+ "Our relationship couldn't continue to balance, as it did, on the point of a knife.",
45
+ "Why do people always assume that volume will succeed when logic won't?",
44
46
  "I hope you enjoyed your visit. You never know. You may want to join forever.",
45
47
  "If you are a vampire, then a vampire is not the creature of the legends.",
46
48
  "Not all vampires are created equal.",
47
49
  "According to my research, in a vampire-werewolf love triangle, the vampire always gets the girl.",
48
- "Some things arent meant for sunlight. The only place for them is in the shadows.",
50
+ "Some things aren't meant for sunlight. The only place for them is in the shadows.",
49
51
  "Is that all I was to you, a one-bite stand?",
50
52
  "Though I cannot predict the future, the consequences of this night will reverberate through the halls" \
51
53
  " of both great covens for many years to come",
@@ -61,8 +63,13 @@ module Vamp
61
63
  "One thing vampire children are taught is, never run with a wooden stake.",
62
64
  "The unknown is now my reality, for I do not yet understand what I have become." \
63
65
  " 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."
66
+ "Please forgive me, but I desperately need your guidance. I apologise for breaking the Chain and awakening you" \
67
+ " a head of schedule, but I fear we may all be in grave danger.",
68
+ "I just feel like all the sand is at the bottom of the hour glass or something.",
69
+ "Only those prepared to die will find eternal life.",
70
+ "I remember everything. It's a burden.",
71
+ "I am teaching you something you don't want to know.",
72
+ "Death is not the worst. There are things more horrible than death."
66
73
  ].sample
67
74
  end
68
75
  end
data/sample/vampire.rb ADDED
@@ -0,0 +1,10 @@
1
+ require "vamp"
2
+
3
+ animator = Vamp::Animator.new(File.join(Gem.loaded_specs["vamp"].gem_dir, "files", "vampire.txt"), 31, 24,
4
+ " " * 80 +
5
+ "No man knows till he has suffered from the night how sweet and how dear to his heart and eye the morning can be." \
6
+ " When the sun grew so high this morning that it struck the top of the great gateway opposite my window," \
7
+ " the high spot which it touched seemed to me as if the dove from the ark had lighted there. My fear fell from me" \
8
+ " as if it had been a vaporous garment which dissolved in the warmth." +
9
+ " " * 80)
10
+ 16.times { animator.play }
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.1
4
+ version: 0.1.2
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-23 00:00:00.000000000 Z
11
+ date: 2015-10-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -52,10 +52,17 @@ files:
52
52
  - README.md
53
53
  - Rakefile
54
54
  - files/pyramid.txt
55
+ - files/vampire.txt
55
56
  - lib/vamp.rb
56
57
  - lib/vamp/animator.rb
58
+ - lib/vamp/colorize.rb
59
+ - lib/vamp/ply.rb
60
+ - lib/vamp/ply/cube.rb
61
+ - lib/vamp/ply/ply_object.rb
62
+ - lib/vamp/ply/vampire.rb
57
63
  - lib/vamp/version.rb
58
64
  - sample/cli.rb
65
+ - sample/vampire.rb
59
66
  - spec/spec_helper.rb
60
67
  - spec/vamp_spec.rb
61
68
  - vamp.gemspec
@@ -79,7 +86,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
79
86
  version: '0'
80
87
  requirements: []
81
88
  rubyforge_project:
82
- rubygems_version: 2.4.3
89
+ rubygems_version: 2.4.6
83
90
  signing_key:
84
91
  specification_version: 4
85
92
  summary: vampire quotes