Class: JRubySQL::Output::Term

Inherits:
Object
  • Object
show all
Includes:
Messages
Defined in:
lib/jrubysql/output/term.rb

Direct Known Subclasses

CTerm

Constant Summary collapse

HELP =
Erubis::Eruby.new(File.read File.join(File.dirname(__FILE__), '../doc/help.txt.erb')).result(binding)

Instance Method Summary collapse

Methods included from Messages

#m

Constructor Details

#initializeTerm

Returns a new instance of Term.



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/jrubysql/output/term.rb', line 12

def initialize
  # Make use of JLine included in JRuby
  terminal =
    case JRUBY_VERSION
    when /^1\.7/
      Java::jline.console.ConsoleReader.new.getTerminal
    when /^1\.6/
      Java::jline.ConsoleReader.new.getTerminal
    end

  @get_terminal_size = lambda {
    case JRUBY_VERSION
    when /^1\.7/
      [ terminal.width, terminal.height ]
    when /^1\.6/
      [ terminal.getTerminalWidth, terminal.getTerminalHeight ]
    end
  }
  self.display_mode = :table
  trap 'INT' do
    Thread.main.raise Interrupt
  end
end

Instance Method Details

#cursor(empty) ⇒ Object



40
41
42
43
44
45
46
# File 'lib/jrubysql/output/term.rb', line 40

def cursor empty
  if empty
    'jrubysql> '
  else
    '       -> '
  end
end

#display_mode=(mode) ⇒ Object



94
95
96
# File 'lib/jrubysql/output/term.rb', line 94

def display_mode= mode
  @printer = "print_#{mode}".to_sym
end

#error(message) ⇒ Object



70
71
72
# File 'lib/jrubysql/output/term.rb', line 70

def error message
  puts "[E] #{message}"
end

#info(message) ⇒ Object



58
59
60
# File 'lib/jrubysql/output/term.rb', line 58

def info message
  puts "[I] #{message}"
end


48
49
50
# File 'lib/jrubysql/output/term.rb', line 48

def print_cursor empty
  print cursor(empty)
end


52
53
54
55
56
# File 'lib/jrubysql/output/term.rb', line 52

def print_help
  puts
  puts HELP
  puts
end


74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
# File 'lib/jrubysql/output/term.rb', line 74

def print_result ret
  # Footer
  elapsed = "(#{'%.2f' % ret[:elapsed]} sec)"

  if ret[:set?]
    begin
      cnt = send(@printer, ret[:result])
      result m(:rows_returned, cnt, cnt > 1 ? 's' : '', elapsed)
    rescue Interrupt
      warn m(:interrupted)
    end
  elsif ret[:result]
    cnt = [0, ret[:result]].max
    result m(:rows_affected, cnt, cnt > 1 ? 's' : '', elapsed)
  else
    result elapsed
  end
  puts
end

#result(message) ⇒ Object



62
63
64
# File 'lib/jrubysql/output/term.rb', line 62

def result message
  puts "[R] #{message}"
end

#warn(message) ⇒ Object



66
67
68
# File 'lib/jrubysql/output/term.rb', line 66

def warn message
  puts "[W] #{message}"
end

#welcome!Object



36
37
38
# File 'lib/jrubysql/output/term.rb', line 36

def welcome!
  puts JRubySQL.name
end