Top Level Namespace
Defined Under Namespace
Modules: BugFix, EVMime, Enumerable, IOExtras, Kernel, ParseTree, Rconftool, RwdtinkerTools, TextArray, Zip, Zlib
Classes: Array, CloseTag, Comment, Dir, EVTable, EVURI, FakeThread, File, HTTPClient, HTTPServer, HTTPServerException, Hash, IE, Instruction, Integer, Module, Numeric, Object, OpenTag, RWDDone, RWDError, RWDLogin, RWDMessage, RWDProgressBar, RWDServer, RWDSession, RWDTimeOut, RWDTree, RWDWindow, RWDialog, Request, RequestGet, RequestPost, RequestRequest, Response, SGML, SGMLObject, SessionCleanup, Sessions, Special, String, TCPServer, Tag, Text, Thread, ThreadLimiter, Time, Tree, TreeObject, XML, ZipList
Constant Summary
collapse
- RWDEmptyline =
"..."
- AL =
"align='left'"
- AC =
"align='center'"
- AR =
"align='right'"
- VA =
"valign='middle'"
- Format =
"\n<!-- %-10s %-10s -->\t"
- Tempfile =
BugFix::Tempfile
- RegExpStringWord =
"([#{tekens11}]+)"
- RegExpWord =
Regexp.new(RegExpStringWord)
- RegExpStringWord2 =
"([#{tekens21}]([#{tekens22}]*[#{tekens23}])?)"
- RegExpWord2 =
Regexp.new(RegExpStringWord2)
- RegExpStringText =
"([#{tekens31}]+)"
- RegExpText =
Regexp.new(RegExpStringText)
- RegExpStringFile =
'(\w[\w\.\-]*)'
- RegExpFile =
Regexp.new(RegExpStringFile)
- RegExpStringEmail =
'([\w\-\.]+@[\w\-\.]+)'
- RegExpEmail =
Regexp.new(RegExpStringEmail)
- RegExpStringURL =
'(\w+:\/\/[\w\.\-]+(:\d*)?\/[\w\.\-\/\#\?\=\%]*)'
- RegExpURL =
Regexp.new(RegExpStringURL)
- RegExpStringPrint =
'([\w \t\r\n\`\~\!\@\#\$\%\^\&\*\(\)\-\+\=\[\]\{\}\;\:\'\"\,\.\/\<\>\?\\\|]+)'
- RegExpPrint =
Regexp.new(RegExpStringPrint)
- RegExpStringDiff =
'(^[\-\+]([^\-\+].*)?)'
- RegExpDiff =
Regexp.new(RegExpStringDiff)
- RegExpStringHTHLink =
'(`[\w\,]*\ba\b[^`]*`)'
- RegExpHTHLink =
Regexp.new(RegExpStringHTHLink)
- RegExpStringHTHSpecial =
'(`[^`]*`)'
- RegExpHTHSpecial =
Regexp.new(RegExpStringHTHSpecial)
- Same =
0
- Down =
1
- Up =
2
- Dummy =
3
Instance Method Summary
collapse
Instance Method Details
#after(seconds, *args) ⇒ Object
688
689
690
691
692
693
694
695
|
# File 'lib/rwd/ruby.rb', line 688
def after(seconds, *args)
if not seconds.nil? and not seconds.zero?
Thread.new(*args) do |*args2|
sleep seconds
yield(*args2)
end
end
end
|
#ask(options, text = false) ⇒ Object
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
|
# File 'lib/rwd/ruby.rb', line 875
def ask(options, text=false)
i = 0
$stderr.puts ""
options.each do |s|
$stderr.puts " %d %s" % [i+=1, s]
end
$stderr.puts ""
$stderr.print "? "
res = $stdin.gets
unless res.nil?
res = res.strip
res = options[res.to_i-1] if text and not res.empty?
end
res
end
|
#bm(label = "") ⇒ Object
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
|
# File 'lib/rwd/ruby.rb', line 781
def bm(label="")
if $nobm
if block_given?
return yield
else
return nil
end
end
label = label.inspect res = nil
$bm_mutex = ($bm_mutex or Mutex.new)
$bm_mutex.synchronize do
if $bm.nil?
require "ev/bm"
$bm = {}
at_exit do
l = $bm.keys.collect{|s| s.length}.max
format1 = "%10s %10s %10s %s"
format2 = "%10.6f %10.6f %10d %s"
$bm.each do |k, v|
$bm[k] = [v[0]+v[1], v[4], v[5]]
end
$stderr.puts format1 % ["CPU", "ELAPSED", "COUNT", "LABEL"]
$bm.sort{|a, b| [b[1], b[0]] <=> [a[1], a[0]]}.each do |k, v|
$stderr.puts format2 % (v + [k])
end
end
end
$bm[label] = [0.0]*5 + [0] unless $bm.include?(label)
$bm[label][5] += 1
end
if block_given?
bm = Benchmark.measure{res = yield}
bma = bm.to_a
$bm_last = bma
$bm_mutex.synchronize do
e = $bm[label]
0.upto(4) do |n|
e[n] += bma[n+1]
end
end
end
res
end
|
#cygwin? ⇒ Boolean
750
751
752
|
# File 'lib/rwd/ruby.rb', line 750
def cygwin?
not (target_os.downcase =~ /cyg/).nil?
end
|
#cygwinbrowser ⇒ Object
33
34
35
36
37
38
39
40
41
42
43
44
|
# File 'lib/rwd/browser.rb', line 33
def cygwinbrowser
browser, *args = windowsbrowser.splitwords
browser = browser.gsub(/\\/, "/")
args.collect!{|a| a.gsub(/\\/, "/")}
res = "\"%s\" %s" % [browser, args.join(" ")]
res
end
|
#darwin? ⇒ Boolean
742
743
744
|
# File 'lib/rwd/ruby.rb', line 742
def darwin?
not (target_os.downcase =~ /darwin/).nil?
end
|
#every(seconds, *args) ⇒ Object
697
698
699
700
701
702
703
704
705
706
|
# File 'lib/rwd/ruby.rb', line 697
def every(seconds, *args)
if not seconds.nil? and not seconds.zero?
Thread.new(*args) do |*args2|
loop do
sleep seconds
yield(*args2)
end
end
end
end
|
#evtimeout(seconds) ⇒ Object
708
709
710
711
712
713
714
715
|
# File 'lib/rwd/ruby.rb', line 708
def evtimeout(seconds)
begin
timeout(seconds) do
yield
end
rescue TimeoutError
end
end
|
#evtimeoutretry(seconds) ⇒ Object
717
718
719
720
721
722
723
724
725
726
|
# File 'lib/rwd/ruby.rb', line 717
def evtimeoutretry(seconds)
ok = false
while not ok
evtimeout(seconds) do
yield
ok = true
end
end
end
|
762
763
764
|
# File 'lib/rwd/ruby.rb', line 762
def home
(ENV["HOME"] or ENV["USERPROFILE"] or (File.directory?("h:/") ? "h:" : "c:")).gsub(/\\/, "/")
end
|
#id2ref(id) ⇒ Object
684
685
686
|
# File 'lib/rwd/ruby.rb', line 684
def id2ref(id)
ObjectSpace._id2ref(id)
end
|
#lambda_cached(&block) ⇒ Object
863
864
865
866
867
868
869
870
871
872
873
|
# File 'lib/rwd/ruby.rb', line 863
def lambda_cached(&block)
hash = {}
lambda do |*args|
res = hash[args]
if res.nil?
res = block.call(*args)
hash[args] = res
end
res
end
end
|
#linux? ⇒ Boolean
738
739
740
|
# File 'lib/rwd/ruby.rb', line 738
def linux?
not (target_os.downcase =~ /linux/).nil?
end
|
#linuxbrowser ⇒ Object
46
47
48
49
50
51
52
53
54
55
56
57
58
|
# File 'lib/rwd/browser.rb', line 46
def linuxbrowser
application = ""
application = `which galeon 2> /dev/null`.chomp if application.empty?
application = `which mozilla 2> /dev/null`.chomp if application.empty?
application = `which firefox 2> /dev/null`.chomp if application.empty?
application = `which opera 2> /dev/null`.chomp if application.empty?
application = `which konqueror 2> /dev/null`.chomp if application.empty?
application = `which htmlview 2> /dev/null`.chomp if application.empty?
application = nil if application.empty?
application
end
|
777
778
779
|
# File 'lib/rwd/ruby.rb', line 777
def nobm
$nobm = true
end
|
859
860
861
|
# File 'lib/rwd/ruby.rb', line 859
def notrace
set_trace_func nil
end
|
#showinbrowser(html, browser = defaultbrowser) ⇒ Object
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
|
# File 'lib/rwd/browser.rb', line 74
def showinbrowser(html, browser=defaultbrowser)
port, io = TCPServer.freeport(7701, 7709)
unless browser.nil?
Thread.new do
begin
Thread.pass
showurlinbrowser("http://localhost:#{port}/", browser)
rescue
end
end
end
HTTPServer.serve([port, io]) do |req, resp|
resp << html
resp.stop
end
end
|
#showurlinbrowser(url, browser = defaultbrowser) ⇒ Object
68
69
70
71
72
|
# File 'lib/rwd/browser.rb', line 68
def showurlinbrowser(url, browser=defaultbrowser)
command = "#{browser} \"#{url}\""
system(command) or $stderr.puts "Starting of the browser failed, or the browser terminated abnormally.\nCommand => #{command}"
end
|
770
771
772
|
# File 'lib/rwd/ruby.rb', line 770
def stdtmp
$stderr = $stdout = File.new("#{temp}/ruby.#{Process.pid}.log", "a")
end
|
#tab2html(tab) ⇒ Object
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
|
# File 'lib/rwd/browser.rb', line 95
def tab2html(tab)
res = ""
tab = tab.to_html(false)
res << "<html>\n"
res << "<body>\n"
res << "<table align='center' border='1' cellspacing='0' cellpadding='3'>\n"
res << "<tbody>\n"
tab.split(/\r*\n/).each do |line|
res << "<tr>\n"
line.split(/\t/, -1).each do |veld|
veld = " " if veld.compress.empty?
res << "<td>%s</td>\n" % veld
end
res << "</tr>\n"
end
res << "</tbody>\n"
res << "</table>\n"
res << "</body>\n"
res << "</html>\n"
res
end
|
#target_os ⇒ Object
754
755
756
|
# File 'lib/rwd/ruby.rb', line 754
def target_os
Config::CONFIG["target_os"] or ""
end
|
766
767
768
|
# File 'lib/rwd/ruby.rb', line 766
def temp
(ENV["TMPDIR"] or ENV["TMP"] or ENV["TEMP"] or "/tmp").gsub(/\\/, "/")
end
|
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
|
# File 'lib/rwd/ruby.rb', line 843
def trace
res =nil
set_trace_func lambda { |event, file, line, id, binding, classname|
$stderr.printf "%8s %s:%-2d %10s %8s\n", event, file, line, id, classname
}
if block_given?
res = yield
notrace
end
res
end
|
#trap(signal) ⇒ Object
728
729
730
731
732
733
734
735
736
|
# File 'lib/rwd/ruby.rb', line 728
def trap(signal)
Kernel::trap(signal) do
yield
end
every(1) {} if windows?
end
|
#uri2txt(s) ⇒ Object
20
21
22
23
24
25
26
27
28
|
# File 'lib/rwd/net.rb', line 20
def uri2txt(s)
i = s.index(/%[[:digit:]]{2}/)
while not i.nil?
s = s[0..(i-1)] + s[(i+1)..(i+2)].unpack('H2').shift.to_i.chr + s[(i+3)..-1]
i = s.index(/%[[:digit:]]{2}/)
end
s
end
|
#url_unescape(string) ⇒ Object
565
566
567
568
569
|
# File 'lib/rwd/net.rb', line 565
def url_unescape(string)
string.tr('+', ' ').gsub(/((?:%[0-9a-fA-F]{2})+)/n) do
[$1.delete('%')].pack('H*')
end
end
|
758
759
760
|
# File 'lib/rwd/ruby.rb', line 758
def user
ENV["USER"] or ENV["USERNAME"]
end
|
#windows? ⇒ Boolean
746
747
748
|
# File 'lib/rwd/ruby.rb', line 746
def windows?
not (target_os.downcase =~ /32/).nil?
end
|
#windowsbrowser ⇒ Object
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
# File 'lib/rwd/browser.rb', line 12
def windowsbrowser
$stderr.puts "Looking for default browser..."
filetype = "htmlfile"
application = nil
begin
Win32::Registry::HKEY_CLASSES_ROOT.open(".html") do |reg|
filetype = reg[""]
end
Win32::Registry::HKEY_CLASSES_ROOT.open(filetype + "\\shell\\open\\command") do |reg|
application = reg[""]
end
rescue NameError
$stderr.puts "Only available for Windows and Cygwin."
end
application
end
|