wri 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (48) hide show
  1. data/CHANGES +4 -0
  2. data/MANIFEST +60 -0
  3. data/NOTES +3 -0
  4. data/README +49 -0
  5. data/bin/wri +3 -0
  6. data/lib/wri/fastri_service.rb +387 -0
  7. data/lib/wri/public/css/style.css +70 -0
  8. data/lib/wri/public/css/tree_blue/images/collapsable-last.gif +0 -0
  9. data/lib/wri/public/css/tree_blue/images/collapsable.gif +0 -0
  10. data/lib/wri/public/css/tree_blue/images/expandable-last.gif +0 -0
  11. data/lib/wri/public/css/tree_blue/images/expandable.gif +0 -0
  12. data/lib/wri/public/css/tree_blue/images/leaf-last.gif +0 -0
  13. data/lib/wri/public/css/tree_blue/images/leaf.gif +0 -0
  14. data/lib/wri/public/css/tree_blue/images/root.gif +0 -0
  15. data/lib/wri/public/css/tree_blue/images/spacer.gif +0 -0
  16. data/lib/wri/public/css/tree_blue/images/spinner.gif +0 -0
  17. data/lib/wri/public/css/tree_blue/style.css +83 -0
  18. data/lib/wri/public/css/tree_blue2/images/collapsable-last.gif +0 -0
  19. data/lib/wri/public/css/tree_blue2/images/collapsable.gif +0 -0
  20. data/lib/wri/public/css/tree_blue2/images/expandable-last.gif +0 -0
  21. data/lib/wri/public/css/tree_blue2/images/expandable.gif +0 -0
  22. data/lib/wri/public/css/tree_blue2/images/leaf-last.gif +0 -0
  23. data/lib/wri/public/css/tree_blue2/images/leaf.gif +0 -0
  24. data/lib/wri/public/css/tree_blue2/images/root.gif +0 -0
  25. data/lib/wri/public/css/tree_blue2/images/spacer.gif +0 -0
  26. data/lib/wri/public/css/tree_blue2/images/spinner.gif +0 -0
  27. data/lib/wri/public/css/tree_blue2/style.css +83 -0
  28. data/lib/wri/public/css/tree_xp/images/collapsable-last.gif +0 -0
  29. data/lib/wri/public/css/tree_xp/images/collapsable.gif +0 -0
  30. data/lib/wri/public/css/tree_xp/images/expandable-last.gif +0 -0
  31. data/lib/wri/public/css/tree_xp/images/expandable.gif +0 -0
  32. data/lib/wri/public/css/tree_xp/images/leaf-last.gif +0 -0
  33. data/lib/wri/public/css/tree_xp/images/leaf.gif +0 -0
  34. data/lib/wri/public/css/tree_xp/images/root.gif +0 -0
  35. data/lib/wri/public/css/tree_xp/images/spacer.gif +0 -0
  36. data/lib/wri/public/css/tree_xp/images/spinner.gif +0 -0
  37. data/lib/wri/public/css/tree_xp/style.css +83 -0
  38. data/lib/wri/public/img/dir.gif +0 -0
  39. data/lib/wri/public/img/mod.ico +0 -0
  40. data/lib/wri/public/img/ruby_logo.png +0 -0
  41. data/lib/wri/public/js/jquery.js +11 -0
  42. data/lib/wri/public/js/ri.jquery.js +56 -0
  43. data/lib/wri/ri_service.rb +67 -0
  44. data/lib/wri/server.rb +186 -0
  45. data/lib/wri/template.rhtml +60 -0
  46. data/meta/project.yaml +20 -0
  47. data/meta/version +1 -0
  48. metadata +120 -0
@@ -0,0 +1,67 @@
1
+ require 'wri/server'
2
+
3
+ module WRI
4
+
5
+ class RiService
6
+
7
+ attr :library
8
+
9
+ def initialize(library=nil)
10
+ @library = library
11
+ end
12
+
13
+ def info(keyword)
14
+ if library
15
+ `ri -d #{library} -f html #{keyword}`
16
+ else
17
+ `ri -f html #{keyword}`
18
+ end
19
+ end
20
+
21
+ def names
22
+ @names ||= if library
23
+ `ri -d #{library} --list-names`
24
+ else
25
+ `ri --list-names`
26
+ end.split(/\s*\n/)
27
+ end
28
+
29
+ end
30
+
31
+ end
32
+
33
+ library = ARGV[0]
34
+
35
+ service = WRI::RiService.new(library)
36
+
37
+ wri = WRI::Server.new(service)
38
+ #puts wri.to_html
39
+
40
+ require 'webrick'
41
+ include WEBrick
42
+
43
+ p wri.directory + "/public"
44
+
45
+ s = HTTPServer.new(
46
+ :Port => 8888,
47
+ :DocumentRoot => wri.directory + "/public"
48
+ )
49
+
50
+ s.mount_proc("/"){|req, res|
51
+ res.body = wri.to_html
52
+ res['Content-Type'] = "text/html"
53
+ }
54
+
55
+ s.mount_proc("/ri"){|req, res|
56
+ res.body = wri.lookup(req)
57
+ res['Content-Type'] = "text/html"
58
+ }
59
+
60
+ ## mount subdirectories
61
+ s.mount("/js", HTTPServlet::FileHandler, wri.directory + "/public/js")
62
+ s.mount("/css", HTTPServlet::FileHandler, wri.directory + "/public/css")
63
+ s.mount("/img", HTTPServlet::FileHandler, wri.directory + "/public/img")
64
+
65
+ trap("INT"){ s.shutdown }
66
+ s.start
67
+
@@ -0,0 +1,186 @@
1
+ require 'erb'
2
+ require 'yaml'
3
+
4
+ module WRI
5
+
6
+ class Server
7
+
8
+ # Reference to CGI Service
9
+ attr :cgi
10
+
11
+ # Reference to RI Service
12
+ attr :service
13
+
14
+ def initialize(service)
15
+ @cgi = {} #CGI.new('html4')
16
+ @service = service
17
+ end
18
+
19
+ def directory
20
+ File.dirname(__FILE__)
21
+ end
22
+
23
+ def heirarchy
24
+ ns = NS.new(nil)
25
+ service.names.each do |m|
26
+ if m.index('#')
27
+ type = :instance
28
+ space, method = m.split('#')
29
+ spaces = space.split('::').collect{|s| s.to_sym }
30
+ method = method.to_sym
31
+ elsif m.index('::')
32
+ type = :class
33
+ space, method = m.split('::')
34
+ spaces = space.split('::').collect{|s| s.to_sym }
35
+ if spaces.last =~ /^[a-z]/
36
+ method = spaces.pop
37
+ else
38
+ next # what to do about class/module ?
39
+ end
40
+ else
41
+ next # what to do abot class/module ?
42
+ end
43
+
44
+ memo = ns
45
+ spaces.each do |space|
46
+ memo[space] ||= NS.new(space, memo)
47
+ memo = memo[space]
48
+ end
49
+
50
+ if type == :class
51
+ memo.class_methods << method
52
+ else
53
+ memo.instance_methods << method
54
+ end
55
+ end
56
+ return ns
57
+ end
58
+
59
+ def tree
60
+ @tree ||= heirarchy.to_html
61
+ end
62
+
63
+ def lookup(req)
64
+ keyw = File.basename(req.path_info)
65
+ if keyw
66
+ keyw.sub!('-','#')
67
+ html = service.info(keyw)
68
+ puts html
69
+ #term = AnsiSys::Terminal.new.echo(ansi)
70
+ #html = term.render(:html) #=> HTML fragment
71
+ #html = ERB::Util.html_escape(html)
72
+ html = "#{html}"
73
+ else
74
+ html = "<h1>ERROR</h1>"
75
+ end
76
+ return html
77
+ end
78
+
79
+ def to_html
80
+ filetext = File.read(File.join(File.dirname(__FILE__), 'template.rhtml'))
81
+ template = ERB.new(filetext)
82
+ template.result(binding)
83
+ #heirarchy.to_html
84
+ end
85
+
86
+ #
87
+
88
+ class NS
89
+ attr :name
90
+ attr :parent
91
+ attr :subspaces
92
+ attr :instance_methods
93
+ attr :class_methods
94
+
95
+ def initialize(name, parent=nil)
96
+ @name = name
97
+ @parent = parent if NS===parent
98
+ @subspaces = {}
99
+ @class_methods = []
100
+ @instance_methods = []
101
+ end
102
+
103
+ def key
104
+ full_name
105
+ end
106
+
107
+ def [](name)
108
+ @subspaces[name]
109
+ end
110
+
111
+ def []=(name, value)
112
+ @subspaces[name] = value
113
+ end
114
+
115
+ def root?
116
+ !parent
117
+ end
118
+
119
+ def full_name
120
+ if root?
121
+ nil
122
+ else
123
+ [parent.full_name, name].compact.join("::")
124
+ end
125
+ end
126
+
127
+ def to_html
128
+ markup = []
129
+ if root?
130
+ markup << %[<div class="root">]
131
+ else
132
+ markup << %[
133
+ <li class="trigger">
134
+ <img src="img/dir.gif" onClick="showBranch(this);"/>
135
+ <span class="link" onClick="lookup(this, '#{full_name}');">#{name}</span>
136
+ ]
137
+ markup << %[<div class="branch">]
138
+ end
139
+
140
+ markup << %[<ul>]
141
+ class_methods.each do |method|
142
+ markup << %[
143
+ <li class="leaf">
144
+ <span class="link" onClick="lookup(this, '#{full_name}::#{method}');">#{method}</span>
145
+ </li>
146
+ ]
147
+ end
148
+
149
+ instance_methods.each do |method|
150
+ markup << %[
151
+ <li class="leaf">
152
+ <span class="link" onClick="lookup(this, '#{full_name}-#{method}');">#{method}</span>
153
+ </li>
154
+ ]
155
+ end
156
+
157
+ subspaces.to_a.sort{ |a,b| a[0].to_s <=> b[0].to_s }.each do |(name, subspace)|
158
+ #subspaces.each do |name, subspace|
159
+ markup << subspace.to_html
160
+ end
161
+ markup << %[</ul>]
162
+
163
+ if root?
164
+ markup << %[</div>]
165
+ else
166
+ markup << %[</div>]
167
+ markup << %[</li>]
168
+ end
169
+
170
+ return markup.join("\n")
171
+ end
172
+
173
+ def esc(text)
174
+ CGI.escape(text.to_s)
175
+ end
176
+
177
+ def inspect
178
+ "<#{self.class} #{name}>"
179
+ end
180
+
181
+ end
182
+
183
+ end
184
+
185
+ end
186
+
@@ -0,0 +1,60 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2
+ <html>
3
+
4
+ <head>
5
+ <title>WebRI</title>
6
+
7
+ <meta http-equiv="Content-Type" content="text/html; charset=windows-1252" />
8
+
9
+ <link rel="icon" href="img/ruby_logo.png" type="image/x-icon">
10
+
11
+ <link href="css/style.css" rel="stylesheet" type="text/css">
12
+
13
+ <SCRIPT src="js/jquery.js" type="text/javascript"></SCRIPT>
14
+ <SCRIPT src="js/ri.jquery.js" type="text/javascript"></SCRIPT>
15
+
16
+ <script type="text/javascript">
17
+ $(document).ready(function(){
18
+ //$("#screenFrame").css('height', $(window).height() + 'px');
19
+ resizePage();
20
+ });
21
+ </script>
22
+ </head>
23
+
24
+ <body>
25
+
26
+ <div id="screenFrame">
27
+
28
+ <div id="header">
29
+ <img src="img/ruby_logo.png" align="absmiddle"/> WebRI
30
+ </div>
31
+
32
+ <div id="side">
33
+ <div style="background: black; color: white; padding-left: 30px; font-weight: bold;"> Class Tree </div>
34
+
35
+ <%= tree %>
36
+ </div>
37
+
38
+ <div id="main">
39
+ <h1>Welcome to WebRI</h1>
40
+ <h2>Webrick-based RI Browser</h2>
41
+
42
+ <p>
43
+ WebRI provides a web-based interface
44
+ to RI documentation.
45
+ </p>
46
+
47
+ <p>
48
+ WebRI &copy; 2008 Tiger Ops
49
+ </p>
50
+ </div>
51
+
52
+ <div style="text-align: left; font-size: 8pt; font-weight: bold; padding: 2px;">
53
+ &nbsp; WebRI &copy; 2008 <a href="http://tigerops.psytower.info">Tiger Ops</a>
54
+ <div>
55
+ </div>
56
+
57
+ </body>
58
+
59
+ </html>
60
+
@@ -0,0 +1,20 @@
1
+ ---
2
+ project : wri
3
+ contact : Trans <transfire@gmail.com>
4
+ license : GPLv3
5
+ created : 2008-02-21
6
+ homepage : http://tigerops.rubyforge.org/wri
7
+ repository : http://tigerops.rubyforge.org/svn/wri
8
+
9
+ title : WebRI
10
+ brief : Web-base RI browser
11
+
12
+ # Detailed description.
13
+ description: >
14
+ Webrick-based RI browser.
15
+
16
+ exclude : [ work, doc, ri, site ]
17
+
18
+ #dependency :
19
+ # - [facets, '>= 2.3.0']
20
+
@@ -0,0 +1 @@
1
+ 0.1.0 beta (2008-03-28)
metadata ADDED
@@ -0,0 +1,120 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: wri
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Trans <transfire@gmail.com>
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2008-03-28 00:00:00 -04:00
13
+ default_executable:
14
+ dependencies: []
15
+
16
+ description: Webrick-based RI browser.
17
+ email: transfire@gmail.com
18
+ executables:
19
+ - wri
20
+ extensions: []
21
+
22
+ extra_rdoc_files:
23
+ - README
24
+ - MANIFEST
25
+ - NOTES
26
+ - CHANGES
27
+ files:
28
+ - NOTES
29
+ - CHANGES
30
+ - README
31
+ - meta
32
+ - meta/project.yaml
33
+ - meta/version
34
+ - lib
35
+ - lib/wri
36
+ - lib/wri/ri_service.rb
37
+ - lib/wri/fastri_service.rb
38
+ - lib/wri/server.rb
39
+ - lib/wri/public
40
+ - lib/wri/public/img
41
+ - lib/wri/public/img/dir.gif
42
+ - lib/wri/public/img/mod.ico
43
+ - lib/wri/public/img/ruby_logo.png
44
+ - lib/wri/public/js
45
+ - lib/wri/public/js/ri.jquery.js
46
+ - lib/wri/public/js/jquery.js
47
+ - lib/wri/public/css
48
+ - lib/wri/public/css/tree_blue2
49
+ - lib/wri/public/css/tree_blue2/images
50
+ - lib/wri/public/css/tree_blue2/images/collapsable.gif
51
+ - lib/wri/public/css/tree_blue2/images/spacer.gif
52
+ - lib/wri/public/css/tree_blue2/images/leaf.gif
53
+ - lib/wri/public/css/tree_blue2/images/expandable.gif
54
+ - lib/wri/public/css/tree_blue2/images/collapsable-last.gif
55
+ - lib/wri/public/css/tree_blue2/images/expandable-last.gif
56
+ - lib/wri/public/css/tree_blue2/images/spinner.gif
57
+ - lib/wri/public/css/tree_blue2/images/leaf-last.gif
58
+ - lib/wri/public/css/tree_blue2/images/root.gif
59
+ - lib/wri/public/css/tree_blue2/style.css
60
+ - lib/wri/public/css/tree_xp
61
+ - lib/wri/public/css/tree_xp/images
62
+ - lib/wri/public/css/tree_xp/images/collapsable.gif
63
+ - lib/wri/public/css/tree_xp/images/spacer.gif
64
+ - lib/wri/public/css/tree_xp/images/leaf.gif
65
+ - lib/wri/public/css/tree_xp/images/expandable.gif
66
+ - lib/wri/public/css/tree_xp/images/collapsable-last.gif
67
+ - lib/wri/public/css/tree_xp/images/expandable-last.gif
68
+ - lib/wri/public/css/tree_xp/images/spinner.gif
69
+ - lib/wri/public/css/tree_xp/images/leaf-last.gif
70
+ - lib/wri/public/css/tree_xp/images/root.gif
71
+ - lib/wri/public/css/tree_xp/style.css
72
+ - lib/wri/public/css/tree_blue
73
+ - lib/wri/public/css/tree_blue/images
74
+ - lib/wri/public/css/tree_blue/images/collapsable.gif
75
+ - lib/wri/public/css/tree_blue/images/spacer.gif
76
+ - lib/wri/public/css/tree_blue/images/leaf.gif
77
+ - lib/wri/public/css/tree_blue/images/expandable.gif
78
+ - lib/wri/public/css/tree_blue/images/collapsable-last.gif
79
+ - lib/wri/public/css/tree_blue/images/expandable-last.gif
80
+ - lib/wri/public/css/tree_blue/images/spinner.gif
81
+ - lib/wri/public/css/tree_blue/images/leaf-last.gif
82
+ - lib/wri/public/css/tree_blue/images/root.gif
83
+ - lib/wri/public/css/tree_blue/style.css
84
+ - lib/wri/public/css/style.css
85
+ - lib/wri/template.rhtml
86
+ - bin
87
+ - bin/wri
88
+ - MANIFEST
89
+ has_rdoc: true
90
+ homepage: http://tigerops.rubyforge.org/wri
91
+ post_install_message:
92
+ rdoc_options:
93
+ - --inline-source
94
+ - --title
95
+ - WebRI
96
+ - --main
97
+ - README
98
+ require_paths:
99
+ - lib
100
+ required_ruby_version: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ version: "0"
105
+ version:
106
+ required_rubygems_version: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: "0"
111
+ version:
112
+ requirements: []
113
+
114
+ rubyforge_project: tigerops
115
+ rubygems_version: 1.0.1
116
+ signing_key:
117
+ specification_version: 2
118
+ summary: Web-base RI browser
119
+ test_files: []
120
+