Class: Remedy::Viewport

Inherits:
Object
  • Object
show all
Defined in:
lib/remedy/viewport.rb

Instance Method Summary collapse

Instance Method Details

#center_range(center, width, limit) ⇒ Object



43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/remedy/viewport.rb', line 43

def center_range center, width, limit
  range_start = center - (width / 2)

  if range_start + width > limit then
    range_start = limit - width
  end

  if range_start < 0 then
    range_start = 0
  end

  range_end = range_start + width

  (range_start...range_end)
end

#content_size(header, footer) ⇒ Object



34
35
36
37
# File 'lib/remedy/viewport.rb', line 34

def content_size header, footer
  trim = Size [header.length + footer.length, 0]
  size - trim
end

#draw(content, center = Size.new(0,0), header = [], footer = []) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/remedy/viewport.rb', line 8

def draw content, center = Size.new(0,0), header = [], footer = []
  range = range_find content, center, content_size(header,footer)

  if content.size.fits_into? range then
    viewable_content = content
  else
    viewable_content = content.excerpt *range
  end

  view = View.new viewable_content, header, footer

  ANSI.screen.safe_reset!
  Console.output << view
end

#range_find(partial, center, heightwidth) ⇒ Object



23
24
25
26
27
28
29
30
31
32
# File 'lib/remedy/viewport.rb', line 23

def range_find partial, center, heightwidth
  row_size, col_size = heightwidth
  row_limit, col_limit = partial.size

  center_row, center_col = center

  row_range = center_range center_row, row_size, row_limit
  col_range = center_range center_col, col_size, col_limit
  [row_range, col_range]
end

#sizeObject



39
40
41
# File 'lib/remedy/viewport.rb', line 39

def size
  Size Console.size
end