console_splash 1.2.0 → 2.0.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.
@@ -1,6 +1,9 @@
1
1
  # console_splash.rb
2
2
  # created by Jesse Jurman
3
3
 
4
+ require 'colorize'
5
+ require 'console_splash/pixel'
6
+
4
7
  class ConsoleSplash
5
8
 
6
9
  attr_accessor :screen, :lines, :columns
@@ -10,80 +13,90 @@ class ConsoleSplash
10
13
  def initialize(lines=nil, columns=nil)
11
14
  @lines = lines ? lines : `stty size`.chomp.split()[0].to_i
12
15
  @columns = columns ? columns : `stty size`.chomp.split()[1].to_i
13
- @screen = Array.new(@lines, "#{' '*(@columns)}\n")
14
- @screen[-1] = "#{' '*(@columns)}"
16
+ @screen = Array.new(@lines) do
17
+ Array.new(@columns) {Pixel.new(' ', nil, nil)} + [Pixel.new("\n",nil,nil)]
18
+ end
19
+ @screen[-1][-1] = Pixel.new("",nil,nil)
15
20
  end
16
21
 
17
22
  # Draw a continuous pattern on the top and bottom of the screen
18
- def write_horizontal_pattern(pattern="=")
19
- write_top_pattern(pattern)
20
- write_bottom_pattern(pattern)
23
+ def write_horizontal_pattern(pattern, opt={})
24
+ write_top_pattern(pattern, opt)
25
+ write_bottom_pattern(pattern, opt)
21
26
  end
22
27
 
23
28
  # Draw a continuous pattern on the sides of the screen
24
- def write_vertical_pattern(pattern="=")
25
- write_right_pattern(pattern)
26
- write_left_pattern(pattern)
29
+ def write_vertical_pattern(pattern, opt={})
30
+ write_left_pattern(pattern, opt)
31
+ write_right_pattern(pattern, opt)
27
32
  end
28
33
 
29
34
  # Draw a continuous pattern on the top of the screen
30
- def write_top_pattern(pattern="=")
31
- strSize = pattern.size
32
- write_line(0, "#{pattern*((@columns-1)/strSize)}")
35
+ def write_top_pattern(pattern, opt={})
36
+ write_line(0, pattern*(@columns/pattern.size), opt)
33
37
  end
34
38
 
35
39
  # Draw a continuous pattern on the bottom of the screen
36
- def write_bottom_pattern(pattern="=")
37
- strSize = pattern.size
38
- write_line(-1, "#{pattern*((@columns-1)/strSize)}")
40
+ def write_bottom_pattern(pattern, opt={})
41
+ write_line(-1, pattern*(@columns/pattern.size), opt)
39
42
  end
40
43
 
41
44
  # Draw a continuous pattern on the right side of the screen
42
- def write_right_pattern(pattern="=")
43
- count = 1
44
- @screen[(1..-2)].each do |line|
45
- write_line(count, pattern, (@columns-(pattern.size+1)))
46
- count += 1
47
- end
45
+ def write_right_pattern(pattern, opt={})
46
+ @screen.each { |line| write_right(@screen.index(line), pattern, opt) }
48
47
  end
49
48
 
50
49
  # Draw a continuous pattern on the left side of the screen
51
- def write_left_pattern(pattern="=")
52
- count = 1
53
- @screen[(1..-2)].each do |line|
54
- write_line(count, pattern)
55
- count += 1
56
- end
50
+ def write_left_pattern(pattern, opt={})
51
+ @screen.each { |line| write_left(@screen.index(line), pattern, opt) }
57
52
  end
58
53
 
59
54
  # Write the name of the application, the author
60
55
  # and the version in a vim-esq manner
61
- def write_header(name, author, version)
62
- header = (@screen.size*(1.0/3.0)).to_i
63
- write_center(header, name)
64
- write_center(header+2, "version #{version}")
65
- write_center(header+3, "by #{author}")
56
+ def write_header(name, author, version, opt={})
57
+ nameFg = opt[:nameFg]; authorFg = opt[:authorFg]; versionFg = opt[:versionFg];
58
+ nameBg = opt[:nameBg]; authorBg = opt[:authorBg]; versionBg = opt[:versionBg];
59
+
60
+ headLine = @lines/3
61
+ write_center(headLine, name, {:fg=>nameFg, :bg=>nameBg})
62
+ write_center(headLine+2, "version #{version}", {:fg=>versionFg, :bg=>versionBg})
63
+ write_center(headLine+3, "created by #{author}", {:fg=>authorFg, :bg=>authorBg})
64
+ end
65
+
66
+ # Write to the left of the line
67
+ def write_left(line, text, opt={})
68
+ write_line(line, text, opt.merge({:start=>0}))
69
+ end
70
+
71
+ # Write to the right of the line
72
+ def write_right(line, text, opt={})
73
+ buffer = (@columns-text.size)
74
+ write_line(line, text, opt.merge({:start=>buffer}))
66
75
  end
67
76
 
68
77
  # Write to the center of the line
69
- def write_center(line, text)
70
- strSize = text.size
71
- buffer = (@columns - strSize)/2.0
72
- write_line(line, text, buffer)
78
+ def write_center(line, text, opt={})
79
+ buffer = (@columns-text.size)/2
80
+ write_line(line, text, opt.merge({:start=>buffer}))
73
81
  end
74
82
 
75
83
  # Writes on the lines of the screen
76
- def write_line(line, text, start=0)
77
- buffer = @screen[line].split('')
78
- buffer[start..(start+text.size()-1)] = text.split('')
79
- @screen[line] = buffer.join('')
84
+ def write_line(line, text, opt={})
85
+ fg = opt[:fg]; bg = opt[:bg]; start = (opt[:start] or 0)
86
+ @screen[line][(start..(start+text.size-1))] = text.split('').map { |c| Pixel.new(c, fg, bg) }
87
+ end
88
+
89
+ # Writes a single pixel on the screen
90
+ def write_pixel( line, column, newChar, opt={} )
91
+ fg = opt[:fg]; bg = opt[:bg]
92
+ @screen[line][column] = Pixel.new(newChar, fg, bg)
80
93
  end
81
94
 
82
95
  # Print the screen onto the display
83
96
  # (developers are in charge of holding the
84
97
  # prompt in focus (i.e. gets))
85
98
  def splash
86
- @screen.each { |line| print line }
99
+ @screen.each { |line| line.each { |column| column.print_pixel } }
87
100
  end
88
101
 
89
102
  end
@@ -0,0 +1,20 @@
1
+ # pixel.rb
2
+ # Created by Jesse Jurman
3
+
4
+ require 'colorize'
5
+
6
+ class Pixel
7
+
8
+ attr_accessor :char, :fcolor, :bcolor
9
+
10
+ def initialize( char=' ', fcolor=:white, bcolor=nil )
11
+ @char = char
12
+ @fcolor = fcolor
13
+ @bcolor = bcolor
14
+ end
15
+
16
+ def print_pixel
17
+ print char.colorize( :color => fcolor, :background => bcolor )
18
+ end
19
+
20
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: console_splash
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 2.0.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,8 +9,24 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-02-10 00:00:00.000000000 Z
13
- dependencies: []
12
+ date: 2013-02-15 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: colorize
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
14
30
  description: Allows developers to give programs a vim-esq splash screen
15
31
  email: j.r.jurman@gmail.com
16
32
  executables: []
@@ -18,9 +34,9 @@ extensions: []
18
34
  extra_rdoc_files: []
19
35
  files:
20
36
  - lib/console_splash.rb
37
+ - lib/console_splash/pixel.rb
21
38
  homepage: https://github.com/JRJurman/console_splash
22
- licenses:
23
- - MIT
39
+ licenses: []
24
40
  post_install_message:
25
41
  rdoc_options: []
26
42
  require_paths: