OSDN Git Service

ruby-1.9.1-rc1
[splhack/AndroidRuby.git] / lib / ruby-1.9.1-rc1 / ext / curses / view.rb
1 #!/usr/local/bin/ruby
2
3 require "curses"
4 include Curses
5
6 #
7 # main
8 #
9
10 if ARGV.size != 1 then
11   printf("usage: view file\n");
12   exit
13 end
14 begin
15   fp = open(ARGV[0], "r")
16 rescue
17   raise "cannot open file: #{ARGV[1]}"
18 end
19
20 # signal(SIGINT, finish)
21
22 init_screen
23 #keypad(stdscr, TRUE)
24 nonl
25 cbreak
26 noecho
27 #scrollok(stdscr, TRUE)
28
29 # slurp the file
30 data_lines = []
31 fp.each_line { |l|
32   data_lines.push(l)
33 }
34 fp.close
35
36
37 lptr = 0
38 while TRUE
39   i = 0
40   while i < lines
41     setpos(i, 0)
42     #clrtoeol
43     addstr(data_lines[lptr + i]) #if data_lines[lptr + i]
44     i += 1
45   end
46   refresh
47
48   explicit = FALSE
49   n = 0
50   while TRUE
51     c = getch
52     if c =~ /[0-9]/
53       n = 10 * n + c.to_i
54     else
55       break
56     end
57   end
58
59   n = 1 if !explicit && n == 0
60
61   case c
62   when "n"  #when KEY_DOWN
63     i = 0
64     while i < n
65       if lptr + lines < data_lines.size then
66         lptr += 1
67       else
68         break
69       end
70       i += 1 
71     end
72     #wscrl(i)
73       
74   when "p"  #when KEY_UP
75     i = 0
76     while i < n
77       if lptr > 0 then
78         lptr -= 1
79       else
80         break
81       end
82       i += 1 
83     end    
84     #wscrl(-i)
85
86   when "q"
87     break
88   end
89
90 end
91 close_screen