Class: AnsiSys::Terminal
- Inherits:
-
Object
- Object
- AnsiSys::Terminal
- Defined in:
- lib/ansisys.rb
Constant Summary collapse
- CODE_LETTERS =
Escape sequence codes processed in this Class
%w(J K S T n s u)
Instance Method Summary collapse
-
#apply_code!(letter, *pars) ⇒ Object
applies self an escape sequence code that ends with letter as String and with some pars as Integers.
-
#css_style(format = :html, max_col = 80, max_row = nil, colors = Screen.default_css_colors) ⇒ Object
CSS stylelet to be used in <head>.
-
#echo(data) ⇒ Object
echoes data, a String of characters or escape sequences to the Terminal.
-
#initialize(csis = ["\x1b["]) ⇒ Terminal
constructor
csis is an Array of Code Sequence Introducers which can be e[, x9B, or both.
-
#render(format = :html, max_col = 80, max_row = nil, colors = Screen.default_css_colors, css_class = nil, css_style = nil, kcode = nil) ⇒ Object
renders the echoed data as format of :html or :text.
Constructor Details
Instance Method Details
#apply_code!(letter, *pars) ⇒ Object
applies self an escape sequence code that ends with letter as String and with some pars as Integers
612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 |
# File 'lib/ansisys.rb', line 612 def apply_code!(letter, *pars) case letter when 'J' cur_col = @cursor.cur_col cur_row = @cursor.cur_row lines = @screens[-1].lines if pars.empty? or 0 == pars[0] rs = lines.keys.select{|r| r > cur_row} cs = lines[cur_row].keys.select{|c| c >= cur_col} elsif 1 == pars[0] rs = lines.keys.select{|r| r < cur_row} cs = lines[cur_row].keys.select{|c| c <= cur_col} elsif 2 == pars[0] rs = lines.keys cs = [] @cursor.apply_code!('H', 1, 1) end rs.each do |r| lines.delete(r) end cs.each do |c| lines[cur_row].delete(c) end when 'K' cur_col = @cursor.cur_col cur_row = @cursor.cur_row line = @screens[-1].lines[cur_row] if pars.empty? or 0 == pars[0] cs = line.keys.select{|c| c >= cur_col} elsif 1 == pars[0] cs = line.keys.select{|c| c <= cur_col} elsif 2 == pars[0] cs = line.keys end cs.each do |c| line.delete(c) end when 'S' lines = @screens[-1].lines n = pars.empty? ? 1 : pars[0] n.times do |l| lines.delete(l) end rs = lines.keys.sort rs.each do |r| lines[r-n] = lines[r] lines.delete(r) end @cursor.apply_code!('H', rs[-1] - n + 1, 1) when 'T' lines = @screens[-1].lines n = pars.empty? ? 1 : pars[0] rs = lines.keys.sort_by{|a| -a} # sort.reverse rs.each do |r| lines[r+n] = lines[r] lines.delete(r) end @cursor.apply_code!('H', rs[-1] - n + 1, 1) when 's' @stored_cursor = @cursor.dup when 'u' @cursor = @stored_cursor.dup if @stored_cursor end return self end |
#css_style(format = :html, max_col = 80, max_row = nil, colors = Screen.default_css_colors) ⇒ Object
CSS stylelet to be used in <head>
586 587 588 589 590 591 592 593 |
# File 'lib/ansisys.rb', line 586 def css_style(format = :html, max_col = 80, max_row = nil, colors = Screen.default_css_colors) case format when :html Screen.css_style(colors, max_col, max_row) when :text '' end end |
#echo(data) ⇒ Object
echoes data, a String of characters or escape sequences to the Terminal. This method actually just buffers the echoed data.
580 581 582 583 |
# File 'lib/ansisys.rb', line 580 def echo(data) @lexer.push(data) return self end |
#render(format = :html, max_col = 80, max_row = nil, colors = Screen.default_css_colors, css_class = nil, css_style = nil, kcode = nil) ⇒ Object
renders the echoed data as format of :html or :text. max_col, max_row can be specified as Integer. colors can be Screen.default_css_colors(inverted, bright).
598 599 600 601 602 603 604 605 606 607 608 |
# File 'lib/ansisys.rb', line 598 def render(format = :html, max_col = 80, max_row = nil, colors = Screen.default_css_colors, css_class = nil, css_style = nil, kcode = nil) css_class ||= 'screen' screens = populate(format, max_col, max_row, colors, kcode) separator = case format when :html "\n" when :text "\n---\n" end return screens.map{|screen| screen.render(format, css_class, css_style)}.join(separator) end |