bash-visual 1.0.4 → 1.0.5

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,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: