bash-visual 1.0.4 → 1.0.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- bash-visual (1.0.1)
4
+ bash-visual (1.0.4)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -1,69 +1,69 @@
1
- require 'scroll'
1
+ module Bash_Visual
2
+ class HorizontalScroll < Scroll
2
3
 
3
- class HorizontalScroll < Scroll
4
-
5
- DEFAULT_SEPARATOR = "\u2502"
6
-
7
- def initialize options
8
- super
9
- @message_block_width = @message_block_size
4
+ DEFAULT_SEPARATOR = "\u2502"
10
5
 
11
- @separator =
12
- if @separator == true; DEFAULT_SEPARATOR
13
- elsif @separator.instance_of? String; @separator[0]
14
- else nil
15
- end
16
- end
17
-
18
- def get_x_position available_area_width, message_width = 0
19
- if (@start == BEGINNING)
20
- @x + (@area_width - available_area_width)
21
- else
22
- @x + available_area_width - message_width
23
- end
24
- end
25
-
26
- def print_message message, font, available_area
27
-
28
- available_area_width, available_area_height = available_area
29
- avail_width = @message_block_width > available_area_width ? available_area_width : @message_block_width
30
-
31
-
32
- (available_area_height - message.size).times {
33
- message << ''
34
- }
35
-
36
- if @adapt_size_message
37
- message_width = rows_wrap! message, available_area_width
38
- else
39
- rows_wrap! message, avail_width
40
- message_width = avail_width
6
+ def initialize options
7
+ super
8
+ @message_block_width = @message_block_size
9
+
10
+ @separator =
11
+ if @separator == true; DEFAULT_SEPARATOR
12
+ elsif @separator.instance_of? String; @separator[0]
13
+ else nil
14
+ end
41
15
  end
42
-
43
- message = message.slice(0, available_area_height) if message.size > available_area_height
44
-
45
- message.map! do |row|
46
- row.strip.ljust(message_width)
16
+
17
+ def get_x_position available_area_width, message_width = 0
18
+ if (@start == BEGINNING)
19
+ @x + (@area_width - available_area_width)
20
+ else
21
+ @x + available_area_width - message_width
22
+ end
47
23
  end
48
-
49
- if @separator and @separator.size.nonzero?
24
+
25
+ def print_message message, font, available_area
26
+
27
+ available_area_width, available_area_height = available_area
28
+ avail_width = @message_block_width > available_area_width ? available_area_width : @message_block_width
29
+
30
+
31
+ (available_area_height - message.size).times {
32
+ message << ''
33
+ }
34
+
50
35
  if @adapt_size_message
51
- if message_width < available_area_width
52
- message.map! do |row|
53
- row << @separator
54
- end
55
- message_width += 1
56
- end
36
+ message_width = rows_wrap! message, available_area_width
57
37
  else
58
- message.each do |row|
59
- row[message_width-1] = @separator
38
+ rows_wrap! message, avail_width
39
+ message_width = avail_width
40
+ end
41
+
42
+ message = message.slice(0, available_area_height) if message.size > available_area_height
43
+
44
+ message.map! do |row|
45
+ row.strip.ljust(message_width)
46
+ end
47
+
48
+ if @separator and @separator.size.nonzero?
49
+ if @adapt_size_message
50
+ if message_width < available_area_width
51
+ message.map! do |row|
52
+ row << @separator
53
+ end
54
+ message_width += 1
55
+ end
56
+ else
57
+ message.each do |row|
58
+ row[message_width-1] = @separator
59
+ end
60
60
  end
61
61
  end
62
- end
63
62
 
64
- write(get_x_position(available_area_width, message_width), @y, message, font)
63
+ write(get_x_position(available_area_width, message_width), @y, message, font)
64
+
65
+ [available_area_width - message_width, available_area_height]
66
+ end
65
67
 
66
- [available_area_width - message_width, available_area_height]
67
68
  end
68
-
69
- end
69
+ end
@@ -1,120 +1,117 @@
1
- $:.unshift(File.dirname(__FILE__))
2
-
3
- require 'console'
4
-
5
- class Scroll
6
-
7
- FORWARD = 1
8
- BACKWARD = -1
9
-
10
- BEGINNING = false
11
- ENDING = true
12
-
13
- attr_accessor :console
14
-
15
- def initialize(options)
16
-
17
- @x, @y = options[:coordinates]
18
- @x = @x.to_i
19
- @y = @y.to_i
20
-
21
- raise ':window_size isn\'t array' unless options[:window_size].instance_of? Array
22
- raise 'size :window_size must be great than 1' if options[:window_size].size < 2
23
-
24
- @area_width, @area_height = options[:window_size]
25
- @area_width = @area_width.to_i
26
- @area_height = @area_height.to_i
27
-
28
- @message_block_size = options[:message_block_size] ? options[:message_block_size].to_i : 1
29
- @message_block_size = 1 if @message_block_size < 1
30
-
31
- @prefix = options[:prefix] ? options[:prefix] : nil
32
-
33
- @adapt_size_message = options[:adapt_size_message] ? options[:adapt_size_message] : false
34
-
35
- @is_wrap = true
36
- @start = options[:start] ? ENDING : BEGINNING
37
- @separator = options[:separator] ? options[:separator] : false
38
- @font = options[:font] ? options[:font] : nil
39
-
40
- @stack = []
41
- @console = Console.new @font,Console::OUTPUT_STRING
42
- @mutex = Mutex.new
43
- end
44
-
45
- def scroll(positions = 1, direction = @direction * positions)
1
+ module Bash_Visual
2
+ class Scroll
46
3
 
47
- end
48
-
49
- def add (message, font = @font)
50
-
51
- if @stack.size.zero?
52
- print @console.draw_rectangle(@x + 1, @y + 1, @area_width, @area_height, font)
4
+ FORWARD = 1
5
+ BACKWARD = -1
6
+
7
+ BEGINNING = false
8
+ ENDING = true
9
+
10
+ attr_accessor :console
11
+
12
+ def initialize(options)
13
+
14
+ @x, @y = options[:coordinates]
15
+ @x = @x.to_i
16
+ @y = @y.to_i
17
+
18
+ raise ':window_size isn\'t array' unless options[:window_size].instance_of? Array
19
+ raise 'size :window_size must be great than 1' if options[:window_size].size < 2
20
+
21
+ @area_width, @area_height = options[:window_size]
22
+ @area_width = @area_width.to_i
23
+ @area_height = @area_height.to_i
24
+
25
+ @message_block_size = options[:message_block_size] ? options[:message_block_size].to_i : 1
26
+ @message_block_size = 1 if @message_block_size < 1
27
+
28
+ @prefix = options[:prefix] ? options[:prefix] : nil
29
+
30
+ @adapt_size_message = options[:adapt_size_message] ? options[:adapt_size_message] : false
31
+
32
+ @is_wrap = true
33
+ @start = options[:start] ? ENDING : BEGINNING
34
+ @separator = options[:separator] ? options[:separator] : false
35
+ @font = options[:font] ? options[:font] : nil
36
+
37
+ @stack = []
38
+ @console = Console.new @font,Console::OUTPUT_STRING
39
+ @mutex = Mutex.new
53
40
  end
54
-
55
- @stack << {
56
- message: prefix() << message.to_s,
57
- font: font
58
- }
59
-
60
- redraw()
61
- #@stack.slice!(-index, index)
62
- end
63
-
64
- def prefix= (prefix)
65
- @prefix = prefix
66
- end
67
-
68
- def prefix
69
- if (defined? @prefix.call)
70
- @prefix[].to_s
71
- else
72
- ''
41
+
42
+ def scroll(positions = 1, direction = @direction * positions)
43
+
73
44
  end
74
- end
75
45
 
76
- private
46
+ def add (message, font = @font)
77
47
 
78
- def redraw
79
- avail_area = [@area_width, @area_height]
80
- @stack.reverse.each do |item|
81
-
82
- message = item[:message].dup.lines.to_a
83
- font = item[:font]
84
- unless font.background
85
- font = Font.new font.font, font.foreground, @font.background
48
+ if @stack.size.zero?
49
+ print @console.draw_rectangle(@x + 1, @y + 1, @area_width, @area_height, font)
86
50
  end
87
51
 
88
- avail_area = print_message(message, font, avail_area)
89
- # выходим если закончилось место в области
90
- return nil if avail_area[0] <= 0 or avail_area[1] <= 0
52
+ @stack << {
53
+ message: prefix() << message.to_s,
54
+ font: font
55
+ }
56
+
57
+ redraw()
58
+ #@stack.slice!(-index, index)
91
59
  end
92
- end
93
-
94
- # сделать переносы в массиве строк
95
- def rows_wrap! arr, max_len
96
- max_used_len = 1
97
- arr.each_with_index do |row, i|
98
- len = row.size
99
- max_used_len = len if len > max_used_len
100
- next if len <= max_len
101
- tail = row.slice!(max_len, len-max_len)
102
- arr.insert(i+1, tail)
60
+
61
+ def prefix= (prefix)
62
+ @prefix = prefix
63
+ end
64
+
65
+ def prefix
66
+ if (defined? @prefix.call)
67
+ @prefix[].to_s
68
+ else
69
+ ''
70
+ end
71
+ end
72
+
73
+ private
74
+
75
+ def redraw
76
+ avail_area = [@area_width, @area_height]
77
+ @stack.reverse.each do |item|
78
+
79
+ message = item[:message].dup.lines.to_a
80
+ font = item[:font]
81
+ unless font.background
82
+ font = Font.new font.font, font.foreground, @font.background
83
+ end
84
+
85
+ avail_area = print_message(message, font, avail_area)
86
+ # выходим если закончилось место в области
87
+ return nil if avail_area[0] <= 0 or avail_area[1] <= 0
88
+ end
89
+ end
90
+
91
+ # сделать переносы в массиве строк
92
+ def rows_wrap! arr, max_len
93
+ max_used_len = 1
94
+ arr.each_with_index do |row, i|
95
+ len = row.size
96
+ max_used_len = len if len > max_used_len
97
+ next if len <= max_len
98
+ tail = row.slice!(max_len, len-max_len)
99
+ arr.insert(i+1, tail)
100
+ end
101
+ max_used_len
103
102
  end
104
- max_used_len
105
- end
106
-
107
- def write (x, y, message, font)
108
-
109
-
110
- string = ''
111
- message.each_with_index { |text, i|
112
- string << @console.write_to_position(x, y + i, text, font)
113
- }
114
-
115
- @mutex.synchronize {
116
- print string
117
- }
118
- end
119
- end
120
103
 
104
+ def write (x, y, message, font)
105
+
106
+
107
+ string = ''
108
+ message.each_with_index { |text, i|
109
+ string << @console.write_to_position(x, y + i, text, font)
110
+ }
111
+
112
+ @mutex.synchronize {
113
+ print string
114
+ }
115
+ end
116
+ end
117
+ end
@@ -1,3 +1,3 @@
1
1
  module Bash_Visual
2
- VERSION = '1.0.4'
2
+ VERSION = '1.0.5'
3
3
  end
@@ -1,54 +1,54 @@
1
- require 'scroll'
1
+ module Bash_Visual
2
+ class VerticalScroll < Scroll
2
3
 
3
- class VerticalScroll < Scroll
4
-
5
- def initialize options
6
- super
7
- @message_block_height = @message_block_size
8
- end
9
-
10
- def get_y_position available_area_height, message_size = 0
11
- if (@start == BEGINNING)
12
- @y + (@area_height - available_area_height)
13
- else
14
- @y + available_area_height - message_size
15
- end
16
- end
17
-
18
- def print_message message, font, available_area
19
-
20
- available_area_width, available_area_height = available_area
21
- avail_height = @message_block_height > available_area_height ? available_area_height : @message_block_height
22
-
23
- rows_wrap!(message, available_area_width) if @is_wrap
24
-
25
- if @adapt_size_message
26
- message = message.slice(0, available_area_height) if message.size > available_area_height
27
- else
28
- message = message.slice(0, avail_height) if message.size > avail_height
29
- end
30
-
31
- message.map! do |row|
32
- row.strip.ljust(available_area_width)
4
+ def initialize options
5
+ super
6
+ @message_block_height = @message_block_size
33
7
  end
34
8
 
35
- if @separator == true
36
- message[message.size-1] = Font.new(Font::UNDERLINE, font.foreground, font.background).to_bash +
37
- message.last.ljust(available_area_width, ' ')
9
+ def get_y_position available_area_height, message_size = 0
10
+ if (@start == BEGINNING)
11
+ @y + (@area_height - available_area_height)
12
+ else
13
+ @y + available_area_height - message_size
14
+ end
38
15
  end
39
16
 
40
- if (@separator.instance_of? String)
41
- if (message.size > available_area_height)
42
- message[message.size-1] = @separator[0] * available_area_width
17
+ def print_message message, font, available_area
18
+
19
+ available_area_width, available_area_height = available_area
20
+ avail_height = @message_block_height > available_area_height ? available_area_height : @message_block_height
21
+
22
+ rows_wrap!(message, available_area_width) if @is_wrap
23
+
24
+ if @adapt_size_message
25
+ message = message.slice(0, available_area_height) if message.size > available_area_height
43
26
  else
44
- message << @separator[0] * available_area_width
27
+ message = message.slice(0, avail_height) if message.size > avail_height
28
+ end
29
+
30
+ message.map! do |row|
31
+ row.strip.ljust(available_area_width)
32
+ end
33
+
34
+ if @separator == true
35
+ message[message.size-1] = Font.new(Font::UNDERLINE, font.foreground, font.background).to_bash +
36
+ message.last.ljust(available_area_width, ' ')
45
37
  end
46
- end
47
-
48
- write(@x, get_y_position(available_area_height, message.size), message, font)
49
38
 
39
+ if (@separator.instance_of? String)
40
+ if (message.size > available_area_height)
41
+ message[message.size-1] = @separator[0] * available_area_width
42
+ else
43
+ message << @separator[0] * available_area_width
44
+ end
45
+ end
46
+
47
+ write(@x, get_y_position(available_area_height, message.size), message, font)
48
+
49
+
50
+ [available_area_width, available_area_height - message.size]
51
+ end
50
52
 
51
- [available_area_width, available_area_height - message.size]
52
53
  end
53
-
54
54
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bash-visual
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.4
4
+ version: 1.0.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: