wri 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
+