class Bash_Visual::Scroll
Constants
- BACKWARD
- BEGINNING
- ENDING
- FORWARD
Attributes
console[R]
Public Class Methods
form_block(text, size, fixate = false)
click to toggle source
# File lib/bash-visual/scroll.rb, line 86 def form_block(text, size, fixate = false) width, height = size result = [] height.times do |i| line = text[i * width, width] unless line break unless fixate result.fill(' ' * width, i, height - i) break end result << line.ljust(width) end result end
new(options)
click to toggle source
@param [Hash] options
options = {
position: [x, y], size: [width, height], font: Font.new (:bold) start: Scroll::ENDING, adapt_size_message: true, prefix: -> { '>' } separator: '-'
}
# File lib/bash-visual/scroll.rb, line 28 def initialize(options) unless options[:position] && options[:size] raise "Minimum needs: :size and :position" end @width, @height = options[:size] @x, @y = options[:position] @prefix = options[:prefix] @adapt = options[:adapt].nil? ? true : options[:adapt] @separator = options[:separator] @max_message_block_size = options[:max_message_block_size] @fixed_message_block_size = options[:fixed_message_block_size] @start = options[:start] ? ENDING : BEGINNING @font = options[:font] ? options[:font] : Font.new @stack = [] @stateless = false @console = Console.new @font, Console::OUTPUT_STRING @mutex = Mutex.new end
Public Instance Methods
add(message, font = @font)
click to toggle source
@param [String] message @param [Bash_Visual::Font] font
# File lib/bash-visual/scroll.rb, line 60 def add(message, font = @font) unless font.background font = Font.new font.types, font.foreground, @font.background end @stack << {message: prefix() + message.to_s, font: font} clear redraw nil end
prefix()
click to toggle source
# File lib/bash-visual/scroll.rb, line 80 def prefix return @prefix[].to_s if (defined? @prefix.call) '' end
prefix=(prefix)
click to toggle source
@param [Proc] prefix
# File lib/bash-visual/scroll.rb, line 76 def prefix= (prefix) @prefix = prefix end
scroll(positions = 1, direction = @direction * positions)
click to toggle source
# File lib/bash-visual/scroll.rb, line 54 def scroll(positions = 1, direction = @direction * positions) end
Private Instance Methods
clear(font = @font)
click to toggle source
Clear scroll’s area
# File lib/bash-visual/scroll.rb, line 138 def clear(font = @font) print @console.draw_filled_rectangle([@x, @y], [@width, @height], font.background) end
redraw()
click to toggle source
# File lib/bash-visual/scroll.rb, line 108 def redraw avail_area = [@width, @height] @stack.reverse.each do |item| message = item[:message] font = item[:font] avail_area = print_message(message, font, avail_area) return nil if avail_area[0] <= 0 or avail_area[1] <= 0 end end
write(x, y, message, font)
click to toggle source
@param [Integer] x @param [Integer] y @param [Array] message @param [Bash_Visual::Font] font
# File lib/bash-visual/scroll.rb, line 124 def write(x, y, message, font) string = '' message.each_with_index { |text, i| string << @console.write_to_position(x, y + i, text, font) } @mutex.synchronize { print string } end