rdoc_osx_dictionary 1.0.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.
data.tar.gz.sig ADDED
Binary file
data/History.txt ADDED
@@ -0,0 +1,6 @@
1
+ === 1.0.0 / 2010-01-27
2
+
3
+ * 1 major enhancement
4
+
5
+ * Birthday!
6
+
data/Manifest.txt ADDED
@@ -0,0 +1,9 @@
1
+ History.txt
2
+ Manifest.txt
3
+ README.txt
4
+ Rakefile
5
+ bin/rdoc_osx_dictionary
6
+ data/RubyGemsDictionary.css
7
+ data/RubyGemsInfo.plist
8
+ lib/rdoc_osx_dictionary.rb
9
+ lib/rubygems_plugin.rb
data/README.txt ADDED
@@ -0,0 +1,48 @@
1
+ = rdoc_osx_dictionary
2
+
3
+ * http://rubyforge.org/projects/seattlerb
4
+
5
+ == DESCRIPTION:
6
+
7
+ rdoc via Apple's Dictionary.app. Automatically builds and installs an
8
+ Apple Dictionary with all rdoc nicely formatted.
9
+
10
+ == FEATURES/PROBLEMS:
11
+
12
+ * Automatically builds and installs an Apple Dictionary with all rdoc
13
+ nicely formatted.
14
+
15
+ == REQUIREMENTS:
16
+
17
+ * rdoc gem
18
+ * rubygems
19
+ * Mac OS X w/ Developer Tools
20
+
21
+ == INSTALL:
22
+
23
+ * sudo gem install rdoc_osx_dictionary
24
+
25
+ == LICENSE:
26
+
27
+ (The MIT License)
28
+
29
+ Copyright (c) Ryan Davis, seattle.rb
30
+
31
+ Permission is hereby granted, free of charge, to any person obtaining
32
+ a copy of this software and associated documentation files (the
33
+ 'Software'), to deal in the Software without restriction, including
34
+ without limitation the rights to use, copy, modify, merge, publish,
35
+ distribute, sublicense, and/or sell copies of the Software, and to
36
+ permit persons to whom the Software is furnished to do so, subject to
37
+ the following conditions:
38
+
39
+ The above copyright notice and this permission notice shall be
40
+ included in all copies or substantial portions of the Software.
41
+
42
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
43
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
44
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
45
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
46
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
47
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
48
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/Rakefile ADDED
@@ -0,0 +1,14 @@
1
+ # -*- ruby -*-
2
+
3
+ require 'rubygems'
4
+ require 'hoe'
5
+
6
+ Hoe.plugin :seattlerb
7
+
8
+ Hoe.spec 'rdoc_osx_dictionary' do
9
+ developer 'Ryan Davis', 'ryand-ruby@zenspider.com'
10
+
11
+ self.rubyforge_name = 'seattlerb'
12
+ end
13
+
14
+ # vim: syntax=ruby
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/ruby -ws
2
+
3
+ $v ||= false
4
+
5
+ require 'rubygems'
6
+ require 'rdoc_osx_dictionary'
7
+
8
+ dict = RDoc::OSXDictionary.new
9
+ dict.make
@@ -0,0 +1,52 @@
1
+ @charset "UTF-8";
2
+ @namespace d url(http://www.apple.com/DTDs/DictionaryService-1.0.rng);
3
+
4
+ d|entry {
5
+ }
6
+
7
+ h1, h2, h3 {
8
+ font-family: 'Helvetica Neue', Helvetica, sans-serif;
9
+ text-shadow: 0px 0px 0px #000;
10
+ }
11
+
12
+ h1 {
13
+ font-size: 150%;
14
+ }
15
+
16
+ h2 {
17
+ font-size: 125%;
18
+ }
19
+
20
+ h3 {
21
+ font-size: 100%;
22
+ }
23
+
24
+ pre {
25
+ margin: 0.5em;
26
+ padding: 0.5em;
27
+ font-family: Monaco;
28
+ font-size: 12px;
29
+ background-color: #efefef;
30
+ border: 1px solid #333;
31
+ }
32
+
33
+ p.signatures {
34
+ font-family: Monaco;
35
+ font-size: 12px;
36
+ padding: 0 1em;
37
+ }
38
+
39
+ a {
40
+ color: #000;
41
+ text-decoration: none;
42
+ }
43
+
44
+ span.column {
45
+ display: block;
46
+ border: solid 2px #c0c0c0;
47
+ margin-left: 2em;
48
+ margin-right: 2em;
49
+ margin-top: 0.5em;
50
+ margin-bottom: 0.5em;
51
+ padding: 0.5em;
52
+ }
@@ -0,0 +1,35 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+ <plist version="1.0">
4
+ <dict>
5
+ <key>CFBundleDevelopmentRegion</key>
6
+ <string>English</string>
7
+ <key>CFBundleIdentifier</key>
8
+ <string>com.apple.dictionary.RubyGems</string>
9
+ <key>CFBundleName</key>
10
+ <string>Ruby + Gems</string>
11
+ <key>CFBundleShortVersionString</key>
12
+ <string>1.0</string>
13
+ <key>DCSDictionaryCopyright</key>
14
+ <string>Copyright © 2007 Apple Inc.</string>
15
+ <key>DCSDictionaryManufacturerName</key>
16
+ <string>Apple Inc.</string>
17
+ <key>DCSDictionaryFrontMatterReferenceID</key>
18
+ <string>front_back_matter</string>
19
+ <key>DCSDictionaryPrefsHTML</key>
20
+ <string>RubyGemsDictionary_prefs.html</string>
21
+ <key>DCSDictionaryXSL</key>
22
+ <string>RubyGemsDictionary.xsl</string>
23
+ <key>DCSDictionaryDefaultPrefs</key>
24
+ <dict>
25
+ <key>pronunciation</key>
26
+ <string>0</string>
27
+ <key>display-column</key>
28
+ <string>1</string>
29
+ <key>display-picture</key>
30
+ <string>1</string>
31
+ <key>version</key>
32
+ <string>1</string>
33
+ </dict>
34
+ </dict>
35
+ </plist>
@@ -0,0 +1,329 @@
1
+ #!/usr/bin/ruby -w
2
+
3
+ require 'fileutils'
4
+ require 'rdoc/ri/driver'
5
+
6
+ class RDoc::OSXDictionary
7
+ VERSION = '1.0.0'
8
+
9
+ exclude = [] # nothing to exclude currently
10
+ EXCLUDE = Hash[*exclude.map { |k| [k, true] }.flatten]
11
+
12
+ NAME_MAP = {
13
+ '!' => 'bang',
14
+ '%' => 'percent',
15
+ '&' => 'and',
16
+ '*' => 'times',
17
+ '**' => 'times2',
18
+ '+' => 'plus',
19
+ '-' => 'minus',
20
+ '/' => 'div',
21
+ '<' => 'lt',
22
+ '<=' => 'lte',
23
+ '<=>' => 'spaceship',
24
+ "<\<" => 'lt2',
25
+ '==' => 'equals2',
26
+ '===' => 'equals3',
27
+ '=~' => 'equalstilde',
28
+ '>' => 'gt',
29
+ '>=' => 'ge',
30
+ '>>' => 'gt2',
31
+ '+@' => 'unary_plus',
32
+ '-@' => 'unary_minus',
33
+ '[]' => 'idx',
34
+ '[]=' => 'idx_equals',
35
+ '^' => 'carat',
36
+ '|' => 'or',
37
+ '~' => 'tilde',
38
+ '=' => 'eq',
39
+ '?' => 'eh',
40
+ '`' => 'backtick',
41
+ }
42
+
43
+ NAME_MAP_RE = Regexp.new(NAME_MAP.keys.sort_by { |k| k.length }.map {|s|
44
+ Regexp.escape(s)
45
+ }.reverse.join("|"))
46
+
47
+
48
+ def display_class_info definition
49
+ name = definition["name"]
50
+ fullname = definition["full_name"]
51
+ supername = definition["superclass"]
52
+ includes = (definition["includes"]||[]).join(", ")
53
+ classmeths = definition["class_methods"].map { |hash| hash["name"] }
54
+ instmeths = definition["instance_methods"].map { |hash| hash["name"] }
55
+ type = supername ? "class" : "module"
56
+ title = supername ? "class #{fullname} < #{supername}" : "module #{fullname}"
57
+ comment = Array(definition["comment"]).join("\n")
58
+ constants = Array(definition["constants"])
59
+ sources = definition["sources"].map { |path|
60
+ next if path =~ /^.System/
61
+ path.sub(%r%^.*?1\.[89]/doc/([^/]+).*%, '\1')
62
+ }.compact
63
+
64
+ comment = "Improperly formatted" if EXCLUDE[fullname]
65
+
66
+ id = "#{type}_#{fullname}".munge.gsub(/[\s:.#]/, '_')
67
+
68
+ result = []
69
+
70
+ result << <<-"EOD".gsub(/^ /, '')
71
+ <d:entry id="#{id}" d:title="#{fullname}">
72
+ <d:index d:value="#{fullname.munge}"/>
73
+ <d:index d:value="#{name.munge}"/>
74
+ <h1>#{title.munge}</h1>
75
+
76
+ #{comment}
77
+ EOD
78
+
79
+ constants.map! { |c| c["name"] }
80
+
81
+ ext, ext_type = sources.size == 1 ? ["From", :str] : ["Extensions", :list]
82
+
83
+ [["Includes", includes.munge, :str],
84
+ ["Constants", constants.join(", "), :str],
85
+ ["Class Methods", classmeths.join(", ").munge, :str],
86
+ ["Instance Methods", instmeths.join(", ").munge, :str],
87
+ [ext, sources, ext_type]].each do |n, s, t|
88
+ next if s.empty?
89
+ case t
90
+ when :str then
91
+ result << "<h3>#{n}:</h3><p>#{s}</p>"
92
+ when :list then
93
+ items = s.map { |o| "<li>#{o}</li>" }.join("\n")
94
+ result << "<h3>#{n}:</h3><ul>#{items}</ul>"
95
+ else
96
+ raise "unknown type #{t.inspect}"
97
+ end
98
+ end
99
+
100
+ %w(name comment superclass includes constants class_methods
101
+ instance_methods sources display_name full_name).each do |name|
102
+ definition.delete name
103
+ end
104
+
105
+ result << <<-"EOD".gsub(/^ /, '')
106
+ </d:entry>
107
+ EOD
108
+ result.join("\n")
109
+ end
110
+
111
+ def display_method_info definition
112
+ fullname = definition["full_name"]
113
+ name = definition["name"]
114
+ id = fullname.gsub(/:|#/, '_').gsub(/#{NAME_MAP_RE}/) { |x| "_"+NAME_MAP[x] }
115
+
116
+ params = definition["params"]
117
+ comment = Array(definition["comment"]).join("\n")
118
+ comment = "undocumented" if comment.empty?
119
+
120
+ comment = "Improperly formatted" if EXCLUDE[fullname]
121
+
122
+ result = <<-"EOD".gsub(/^ /, '')
123
+ <d:entry id="def_#{id}" d:title="#{id}">
124
+ <d:index d:value="#{fullname.munge}"/>
125
+ <d:index d:value="#{name.munge}"/>
126
+ <h1>#{fullname.munge}</h1>
127
+ <p class="signatures">
128
+ <b>#{name.munge}#{params.munge}</b>
129
+ </p>
130
+ #{comment}
131
+ </d:entry>
132
+ EOD
133
+ end
134
+
135
+ def d_header
136
+ result = <<-"EOD"
137
+ <?xml version="1.0" encoding="UTF-8"?>
138
+ <!--
139
+ This is a sample dictionary source file.
140
+ It can be built using Dictionary Development Kit.
141
+ -->
142
+ <d:dictionary xmlns="http://www.w3.org/1999/xhtml" xmlns:d="http://www.apple.com/DTDs/DictionaryService-1.0.rng">
143
+ EOD
144
+ end
145
+
146
+ def d_entry fullname, definition, klass = false
147
+ if klass then
148
+ display_class_info definition
149
+ else
150
+ display_method_info definition
151
+ end
152
+ end
153
+
154
+ def d_footer
155
+ result = <<-"EOD"
156
+ <d:entry id="front_back_matter" d:title="Front/Back Matter">
157
+ <h1><b>RubyGems Dictionary</b></h1>
158
+ <h2>Front/Back Matter</h2>
159
+ <div>
160
+ Provides dictionary definitions for all known installed ruby gems.<br/><br/>
161
+ </div>
162
+ <div>
163
+ <b>To see</b> this page,
164
+ <ol>
165
+ <li>Open "Go" menu.</li>
166
+ <li>Choose "Front/Back Matter" menu item.
167
+ If it has sub-menu items, choose one of them.</li>
168
+ </ol>
169
+ </div>
170
+ <div>
171
+ <b>To prepare</b> the menu item, do the followings.
172
+ <ol>
173
+ <li>Prepare this page source as an entry.</li>
174
+ <li>Add "DCSDictionaryFrontMatterReferenceID" key and its value to the plist of the dictionary.
175
+ The value should be the string of this page entry id. </li>
176
+ </ol>
177
+ </div>
178
+ <br/>
179
+ </d:entry>
180
+ </d:dictionary>
181
+ EOD
182
+ end
183
+
184
+ def make
185
+ seen = {}
186
+ ri = RDoc::RI::Driver.new
187
+ dirty = false
188
+ dict = ri.class_cache
189
+ base = File.expand_path "~/.ri/"
190
+
191
+ dict.sort.each do |klass, definition|
192
+ path = "#{base}/cache/#{klass}.xml"
193
+
194
+ next if seen[klass.downcase]
195
+ seen[klass.downcase] = true
196
+
197
+ unless File.exist? path then
198
+ warn "New entries for dictionary. Rebuilding dictionary." unless dirty
199
+ dirty = true
200
+
201
+ warn klass if $v
202
+
203
+ File.open(path, "w") do |f|
204
+ methods = ri.load_cache_for(klass)
205
+ next if methods.nil? || methods.empty?
206
+ result = []
207
+ result << d_entry(klass, dict[klass], true)
208
+
209
+ methods.each do |k,v|
210
+ result << d_entry(k, v)
211
+ end
212
+ result = result.join("\n")
213
+ f.puts result
214
+ end
215
+ end
216
+ end
217
+
218
+ return unless dirty
219
+
220
+ dict_src_path = "#{base}/RubyGemsDictionary.xml"
221
+
222
+ File.open(dict_src_path, "w") do |xml|
223
+ xml.puts d_header
224
+
225
+ dict.sort.each do |klass, definition|
226
+ xml.puts File.read("#{base}/cache/#{klass}.xml")
227
+ end
228
+
229
+ xml.puts d_footer
230
+ end
231
+
232
+ dict_name = "RubyAndGems"
233
+ data = File.expand_path("#{__FILE__}/../../data")
234
+ dict_path = File.expand_path "~/Library/Dictionaries"
235
+
236
+ Dir.chdir base do
237
+ system("/Developer/Extras/Dictionary Development Kit/bin/build_dict.sh",
238
+ dict_name, dict_src_path,
239
+ "#{data}/RubyGemsDictionary.css",
240
+ "#{data}/RubyGemsInfo.plist")
241
+ end
242
+
243
+ warn "installing"
244
+
245
+ FileUtils.mkdir_p dict_path
246
+
247
+ system("rsync", "-r",
248
+ "#{base}/objects/#{dict_name}.dictionary",
249
+ "#{dict_path}/#{dict_name}.dictionary")
250
+
251
+ FileUtils.touch dict_path
252
+
253
+ warn "installed"
254
+ warn "Run Dictionary.app to use the new dictionary. (activate in prefs!)"
255
+ end
256
+
257
+ @hooked = false
258
+
259
+ def self.install_gem_hooks
260
+ return if @hooked
261
+
262
+ cmd = File.expand_path File.join(__FILE__, "../../bin/rdoc_osx_dictionary")
263
+
264
+ # post_install isn't actually fully post-install... so I must
265
+ # force via at_exit :(
266
+ Gem.post_install do |i|
267
+ at_exit do
268
+ warn "updating OSX ruby + gem dictionary, if necessary"
269
+ system cmd
270
+ end
271
+ end
272
+
273
+ Gem.post_uninstall do |i|
274
+ at_exit do
275
+ require 'fileutils'
276
+ warn "nuking old ri cache to force rebuild"
277
+ FileUtils.rm_r File.expand_path("~/.ri")
278
+ system cmd
279
+ end
280
+ end
281
+
282
+ @hooked = true
283
+ end
284
+ end
285
+
286
+ class String
287
+ def munge
288
+ self.gsub(/&/, '&amp;').gsub(/>/, '&gt;').gsub(/</, '&lt;')
289
+ end
290
+ end
291
+
292
+ class RDoc::Markup::Flow::LIST # ARG!
293
+ def to_s
294
+ pre, post = { :NUMBER => ['<ol>', '</ol>'] }[self.type] || ['<ul>', '</ul>']
295
+
296
+ raise "no: #{self.type}" unless pre
297
+
298
+ "#{pre}#{contents.join("\n")}#{post}"
299
+ end
300
+ end
301
+
302
+ class Struct
303
+ alias :old_to_s :to_s
304
+
305
+ MARKUP = {
306
+ "RULE" => [nil, nil],
307
+ "H" => ["<h2>", "</h2>"],
308
+ "P" => ["<p>", "</p>"],
309
+ "VERB" => ["<pre>", "</pre>"],
310
+ "LI" => ['<li>', '</li>'],
311
+ }
312
+
313
+ def body
314
+ self.text
315
+ end
316
+
317
+ def to_s
318
+ name = self.class.name
319
+ if name =~ /Flow/ then
320
+ short = name.split(/::/).last
321
+ raise short unless MARKUP.has_key? short
322
+ pre, post = MARKUP[short]
323
+ return "" unless pre
324
+ "#{pre}#{self.body}#{post}"
325
+ else
326
+ old_to_s
327
+ end
328
+ end
329
+ end
@@ -0,0 +1,4 @@
1
+ require 'rubygems/command_manager'
2
+ require 'rdoc_osx_dictionary'
3
+
4
+ RDoc::OSXDictionary.install_gem_hooks
metadata ADDED
@@ -0,0 +1,129 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rdoc_osx_dictionary
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Ryan Davis
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain:
11
+ - |
12
+ -----BEGIN CERTIFICATE-----
13
+ MIIDPjCCAiagAwIBAgIBADANBgkqhkiG9w0BAQUFADBFMRMwEQYDVQQDDApyeWFu
14
+ ZC1ydWJ5MRkwFwYKCZImiZPyLGQBGRYJemVuc3BpZGVyMRMwEQYKCZImiZPyLGQB
15
+ GRYDY29tMB4XDTA5MDMwNjE4NTMxNVoXDTEwMDMwNjE4NTMxNVowRTETMBEGA1UE
16
+ AwwKcnlhbmQtcnVieTEZMBcGCgmSJomT8ixkARkWCXplbnNwaWRlcjETMBEGCgmS
17
+ JomT8ixkARkWA2NvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALda
18
+ b9DCgK+627gPJkB6XfjZ1itoOQvpqH1EXScSaba9/S2VF22VYQbXU1xQXL/WzCkx
19
+ taCPaLmfYIaFcHHCSY4hYDJijRQkLxPeB3xbOfzfLoBDbjvx5JxgJxUjmGa7xhcT
20
+ oOvjtt5P8+GSK9zLzxQP0gVLS/D0FmoE44XuDr3iQkVS2ujU5zZL84mMNqNB1znh
21
+ GiadM9GHRaDiaxuX0cIUBj19T01mVE2iymf9I6bEsiayK/n6QujtyCbTWsAS9Rqt
22
+ qhtV7HJxNKuPj/JFH0D2cswvzznE/a5FOYO68g+YCuFi5L8wZuuM8zzdwjrWHqSV
23
+ gBEfoTEGr7Zii72cx+sCAwEAAaM5MDcwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAw
24
+ HQYDVR0OBBYEFEfFe9md/r/tj/Wmwpy+MI8d9k/hMA0GCSqGSIb3DQEBBQUAA4IB
25
+ AQAY59gYvDxqSqgC92nAP9P8dnGgfZgLxP237xS6XxFGJSghdz/nI6pusfCWKM8m
26
+ vzjjH2wUMSSf3tNudQ3rCGLf2epkcU13/rguI88wO6MrE0wi4ZqLQX+eZQFskJb/
27
+ w6x9W1ur8eR01s397LSMexySDBrJOh34cm2AlfKr/jokKCTwcM0OvVZnAutaovC0
28
+ l1SVZ0ecg88bsWHA0Yhh7NFxK1utWoIhtB6AFC/+trM0FQEB/jZkIS8SaNzn96Rl
29
+ n0sZEf77FLf5peR8TP/PtmIg7Cyqz23sLM4mCOoTGIy5OcZ8TdyiyINUHtb5ej/T
30
+ FBHgymkyj/AOSqKRIpXPhjC6
31
+ -----END CERTIFICATE-----
32
+
33
+ date: 2010-01-27 00:00:00 -08:00
34
+ default_executable:
35
+ dependencies:
36
+ - !ruby/object:Gem::Dependency
37
+ name: rubyforge
38
+ type: :development
39
+ version_requirement:
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ requirements:
42
+ - - ">="
43
+ - !ruby/object:Gem::Version
44
+ version: 2.0.3
45
+ version:
46
+ - !ruby/object:Gem::Dependency
47
+ name: gemcutter
48
+ type: :development
49
+ version_requirement:
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: 0.3.0
55
+ version:
56
+ - !ruby/object:Gem::Dependency
57
+ name: minitest
58
+ type: :development
59
+ version_requirement:
60
+ version_requirements: !ruby/object:Gem::Requirement
61
+ requirements:
62
+ - - ">="
63
+ - !ruby/object:Gem::Version
64
+ version: 1.5.0
65
+ version:
66
+ - !ruby/object:Gem::Dependency
67
+ name: hoe
68
+ type: :development
69
+ version_requirement:
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: 2.5.0
75
+ version:
76
+ description: |-
77
+ rdoc via Apple's Dictionary.app. Automatically builds and installs an
78
+ Apple Dictionary with all rdoc nicely formatted.
79
+ email:
80
+ - ryand-ruby@zenspider.com
81
+ executables:
82
+ - rdoc_osx_dictionary
83
+ extensions: []
84
+
85
+ extra_rdoc_files:
86
+ - History.txt
87
+ - Manifest.txt
88
+ - README.txt
89
+ files:
90
+ - History.txt
91
+ - Manifest.txt
92
+ - README.txt
93
+ - Rakefile
94
+ - bin/rdoc_osx_dictionary
95
+ - data/RubyGemsDictionary.css
96
+ - data/RubyGemsInfo.plist
97
+ - lib/rdoc_osx_dictionary.rb
98
+ - lib/rubygems_plugin.rb
99
+ has_rdoc: true
100
+ homepage: http://rubyforge.org/projects/seattlerb
101
+ licenses: []
102
+
103
+ post_install_message:
104
+ rdoc_options:
105
+ - --main
106
+ - README.txt
107
+ require_paths:
108
+ - lib
109
+ required_ruby_version: !ruby/object:Gem::Requirement
110
+ requirements:
111
+ - - ">="
112
+ - !ruby/object:Gem::Version
113
+ version: "0"
114
+ version:
115
+ required_rubygems_version: !ruby/object:Gem::Requirement
116
+ requirements:
117
+ - - ">="
118
+ - !ruby/object:Gem::Version
119
+ version: "0"
120
+ version:
121
+ requirements: []
122
+
123
+ rubyforge_project: seattlerb
124
+ rubygems_version: 1.3.5
125
+ signing_key:
126
+ specification_version: 3
127
+ summary: rdoc via Apple's Dictionary.app
128
+ test_files: []
129
+
metadata.gz.sig ADDED
@@ -0,0 +1,2 @@
1
+ ��������K����'x��X�����h�醦�&wGH�2^�jU UF�7�4!�9<>R�R�S�T�F�����/�M>���̛����,��K=&¸�{:f�c��a)Z�V@@�4�����)��"ԍdV�z�F�W��|<���鎐�]���[����vh6����}O�������`nPCq#�0�p�1qF�E�[�'a[>խ|�� ��Z
2
+ ��|��[����Y��ϗ��6'D��C6��NWdǿ�K