rdoc_osx_dictionary 1.3.1 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Binary file
File without changes
@@ -1,3 +1,13 @@
1
+ === 2.0.0 / 2011-12-15
2
+
3
+ * 1 major enhancement:
4
+
5
+ * Rewritten to use rdoc 3.11 and the new mostly fancy and sometimes ugly API.
6
+
7
+ * 1 minor enhancements:
8
+
9
+ * Got patches into rdoc and bumped our dependency up
10
+
1
11
  === 1.3.1 / 2010-03-30
2
12
 
3
13
  * 1 minor enhancement:
data/Rakefile CHANGED
@@ -4,13 +4,16 @@ require 'rubygems'
4
4
  require 'hoe'
5
5
 
6
6
  Hoe.plugin :seattlerb
7
+ Hoe.plugin :isolate
7
8
 
8
9
  Hoe.spec 'rdoc_osx_dictionary' do
9
10
  developer 'Ryan Davis', 'ryand-ruby@zenspider.com'
10
11
 
11
- extra_deps << ['rdoc', '~> 2.4.3']
12
+ dependency 'rdoc', '~> 3.12'
12
13
 
13
14
  self.rubyforge_name = 'seattlerb'
14
15
  end
15
16
 
16
17
  # vim: syntax=ruby
18
+
19
+ task :fuck
@@ -1,9 +1,5 @@
1
1
  #!/usr/bin/env ruby -ws
2
2
 
3
- $v ||= false
4
- $f ||= false
5
- $d ||= false
6
-
7
3
  require 'rubygems'
8
4
  require 'rdoc_osx_dictionary'
9
5
 
@@ -1,22 +1,22 @@
1
1
  #!/usr/bin/ruby -w
2
2
 
3
+ gem 'rdoc'
3
4
  require 'fileutils'
4
5
  require 'rdoc/ri/driver'
5
6
 
7
+ $d ||= false
8
+ $f ||= false
6
9
  $q ||= false
10
+ $v ||= false
7
11
 
8
12
  # Forces /bin/tr to ignore badly formatted "unicode". (no clue where from)
9
13
  ENV['LANG'] = ""
10
14
  ENV['LC_ALL'] = "C"
11
15
 
12
16
  class RDoc::OSXDictionary
13
- VERSION = '1.3.1'
17
+ VERSION = '2.0.0'
14
18
 
15
19
  EXCLUDE = {
16
- "StringScanner#pre_match" => true,
17
- "StringScanner#post_match" => true,
18
- "Gem::Package::TarInput" => true,
19
- "IRB::OutputMethod" => true,
20
20
  }
21
21
 
22
22
  NAME_MAP = {
@@ -55,6 +55,11 @@ class RDoc::OSXDictionary
55
55
  Regexp.escape(s)
56
56
  }.reverse.join("|"))
57
57
 
58
+ attr_reader :to_html
59
+
60
+ def initialize
61
+ @to_html = RDoc::Markup::ToHtml.new
62
+ end
58
63
 
59
64
  def id *args
60
65
  args.map { |s| s.gsub(/:/, ',') }.join(",").gsub(/#{NAME_MAP_RE}/) { |x|
@@ -62,80 +67,85 @@ class RDoc::OSXDictionary
62
67
  }
63
68
  end
64
69
 
65
- def display_class_info definition
66
- name = definition["name"]
67
- fullname = definition["full_name"]
68
- supername = definition["superclass"]
69
- type = supername ? "class" : "module"
70
- title = supername ? "class #{fullname} < #{supername}" : "module #{fullname}"
71
- comment = Array(definition["comment"]).join("\n")
70
+ def write_class_info klass, stores, path
71
+ m_seen = {} # HACK: known issue: on a case insensitive FS we're losing files
72
72
 
73
- definition["includes"].map! { |c| c["name"] }
74
- definition["constants"].map! { |c| c["name"] }
73
+ File.open(path, "w") do |f|
74
+ c_result, m_result = [], []
75
75
 
76
- return if $q and fullname !~ /^(String|Array|Bignum)/
76
+ m_seen.clear
77
+ seen_system = false
77
78
 
78
- comment = "Improperly formatted" if EXCLUDE[fullname]
79
+ fullname = klass
79
80
 
80
- result = []
81
+ f.puts <<-"EOD".gsub(/^ {6}/, '')
82
+ <d:entry id="#{id fullname}" d:title="#{fullname}">
83
+ <d:index d:value="#{fullname.munge}"/>
84
+ EOD
81
85
 
82
- shortname = "<d:index d:value=#{name.munge.inspect}/>" if name != fullname
86
+ first = true
83
87
 
84
- result << <<-"EOD".gsub(/^ /, '')
85
- <d:entry id="#{id type, fullname}" d:title="#{fullname}">
86
- <d:index d:value="#{fullname.munge}"/>
87
- #{shortname}
88
- <h1>#{title.munge}</h1>
88
+ stores.each do |store|
89
+ cdesc = store.load_class klass
90
+ type = store.type
91
+ from = store.friendly_path
92
+ name = cdesc.name
93
+ is_class = ! cdesc.module?
94
+ supername = cdesc.superclass if is_class
95
+ comment = to_html.convert cdesc.comment
96
+ type = is_class ? "class" : "module"
97
+ title = is_class ? "class #{fullname}" : "module #{fullname}"
89
98
 
90
- #{comment}
91
- EOD
99
+ title += " < #{supername}" if is_class and supername != "Object"
92
100
 
93
- extensions = []
101
+ comment = "Improperly formatted" if EXCLUDE[fullname]
94
102
 
95
- definition["sources"].shift # remove first one as the original source
96
- definition["sources"].each do |path|
97
- next if path =~ /^.System/
103
+ shortname = "<d:index d:value=#{name.munge.inspect}/>" if name != fullname
98
104
 
99
- gemname = File.basename(path.sub(%r(/ri/\w+/cdesc-\w+.yaml), ''))
100
- extension = YAML.load File.read(path).gsub(/- !.+/, '-')
105
+ f.puts <<-"EOD".gsub(/^ {8}/, '')
106
+ #{shortname}
107
+ <h1>#{title.munge}</h1>
108
+ <h3>From: #{from}</h3>
101
109
 
102
- extension["includes"].map! { |c| c["name"] }
103
- extension["constants"].map! { |c| c["name"] }
110
+ #{comment}
111
+ EOD
104
112
 
105
- detail = class_details(name, fullname, extension, 4)
113
+ level = first ? 2 : 4
114
+ first = false
106
115
 
107
- next if detail.empty?
116
+ f.puts class_details(name, fullname, cdesc, level)
108
117
 
109
- extensions << "<h3>#{gemname}:</h3>"
110
- extensions << detail
111
- %w(class_methods instance_methods includes constants).each do |k|
112
- definition[k] -= extension[k]
113
- end
114
- end
118
+ cdesc.method_list.each do |method|
119
+ next if m_seen[method.full_name.downcase]
120
+ method = store.load_method klass, method.full_name
121
+ m_result << display_method_info(method, from)
122
+ m_seen[method.full_name.downcase] = true
123
+ end
124
+ end # stores.each
115
125
 
116
- result << class_details(name, fullname, definition)
117
- result << "<h2>Extensions:</h2>" unless extensions.empty?
118
- result << extensions
126
+ f.puts <<-"EOD".gsub(/^ {6}/, '')
127
+ </d:entry>
119
128
 
120
- result << <<-"EOD".gsub(/^ /, '')
121
- </d:entry>
122
- EOD
123
- result.join("\n")
129
+ EOD
130
+
131
+ f.puts m_result.join("\n\n")
132
+ end
124
133
  end
125
134
 
135
+ # REFACTOR: fold this back in
126
136
  def class_details name, fullname, definition, level = 2
127
- h = "h#{level}"
128
- result = []
129
- includes = definition["includes"]
130
- constants = definition["constants"]
137
+ h = "h#{level}"
138
+ result = []
139
+ includes = definition.includes.map { |c| c.name }
140
+ constants = definition.constants.map { |c| c.name }
131
141
 
132
- classmeths = definition["class_methods"].map { |hash|
133
- name = hash["name"]
142
+ classmeths = definition.singleton_methods.map { |cm|
143
+ name = cm.name
134
144
  "<a href=\"x-dictionary:r:#{id "defs", fullname, name}\">#{name}</a>"
135
145
  }
136
146
 
137
- instmeths = definition["instance_methods"].map { |hash|
138
- name = hash["name"]
147
+ instmeths = definition.instance_method_list.map { |im|
148
+ name = im.name
139
149
  "<a href=\"x-dictionary:r:#{id "def", fullname, name}\">#{name.munge}</a>"
140
150
  }
141
151
 
@@ -152,94 +162,73 @@ class RDoc::OSXDictionary
152
162
  result
153
163
  end
154
164
 
155
- def display_method_info definition
156
- fullname = definition["full_name"]
157
- klass = definition["class"]
158
- name = definition["name"]
165
+ def display_method_info definition, from
166
+ klass = definition.parent_name
159
167
 
160
- return if $q and klass !~ /^(String|Array|Bignum)/
168
+ fullname = definition.full_name
169
+ name = definition.name
170
+ singleton = definition.singleton
171
+ params = definition.arglists
172
+ comment = to_html.convert definition.comment
173
+ type = singleton ? "defs" : "def"
161
174
 
162
175
  return if name =~ /_reduce_\d+/
163
176
 
164
- params = definition["params"]
165
- comment = Array(definition["comment"]).join("\n")
166
177
  comment = "undocumented" if comment.empty?
167
-
168
178
  comment = "Improperly formatted" if EXCLUDE[fullname]
169
179
 
170
- type = definition["is_singleton"] ? "defs" : "def"
171
-
172
- # TODO: aliases don't have recv
173
- # TODO: some regular methods don't have recv
174
-
175
- result = <<-"EOD".gsub(/^ /, '')
176
- <d:entry id="#{id type, klass, name}" d:title="#{fullname.munge}">
177
- <d:index d:value="#{fullname.munge}"/>
178
- <d:index d:value="#{name.munge}"/>
179
- <h1>#{fullname.munge}</h1>
180
- <pre class="signatures">
181
- #{d_signatures(name, params)}
182
- </pre>
180
+ # HACK to deal with the Dictionary compiler fucking with my whitespace.
181
+ comment = comment.gsub(/<span[^>]+>/, '').gsub(/<\/span>/, '')
182
+ comment = comment.gsub(/(<pre[^>]*>)\s*\n/, '\1')
183
+
184
+ result = <<-"EOD".gsub(/^ {6}/, '')
185
+ <d:entry id="#{id type, klass, name}" d:title="#{fullname.munge}">
186
+ <d:index d:value="#{fullname.munge}"/>
187
+ <d:index d:value="#{name.munge}"/>
188
+ <h1>#{fullname.munge}</h1>
189
+ <h3>From: #{from}</h3>
190
+ <pre class="signatures">
191
+ #{d_signatures(name, params)}
192
+ </pre>
183
193
  #{comment}
184
- </d:entry>
185
- EOD
194
+ </d:entry>
195
+ EOD
186
196
  end
187
197
 
188
198
  def d_signatures name, params
189
199
  result = " "
200
+ params ||= ""
190
201
  if params.strip =~ /^\(/
191
202
  result << "<b>#{name.munge}</b>"
192
203
  end
193
- result << "<b>#{params.munge.gsub(/\n/, "<br />")}</b>"
204
+ result << "<b>#{params.munge.gsub(/\n+/, "\n")}</b>"
194
205
  end
195
206
 
196
207
  def d_header
197
- result = <<-"EOD"
198
- <?xml version="1.0" encoding="UTF-8"?>
199
- <!--
200
- This is a sample dictionary source file.
201
- It can be built using Dictionary Development Kit.
202
- -->
203
- <d:dictionary xmlns="http://www.w3.org/1999/xhtml" xmlns:d="http://www.apple.com/DTDs/DictionaryService-1.0.rng">
204
- EOD
208
+ result = <<-"EOD".gsub(/^ {6}/, '')
209
+ <?xml version="1.0" encoding="UTF-8"?>
210
+ <d:dictionary xmlns="http://www.w3.org/1999/xhtml" xmlns:d="http://www.apple.com/DTDs/DictionaryService-1.0.rng">
211
+ EOD
205
212
  end
206
213
 
207
- def d_entry fullname, definition, klass = false
208
- if klass then
209
- display_class_info definition
210
- else
211
- display_method_info definition
212
- end
213
- end
214
+ def d_footer classes, sources
215
+ result = <<-"EOD".gsub(/^ {6}/, '')
216
+ <d:entry id="front_back_matter" d:title="Front/Back Matter">
217
+ <h1><b>RubyGems Dictionary</b></h1>
218
+
219
+ <div>
220
+ Provides dictionary definitions for ruby core, stdlib, and
221
+ all known installed ruby gems.
222
+ </div>
214
223
 
215
- def d_footer
216
- result = <<-"EOD"
217
- <d:entry id="front_back_matter" d:title="Front/Back Matter">
218
- <h1><b>RubyGems Dictionary</b></h1>
219
- <h2>Front/Back Matter</h2>
220
- <div>
221
- Provides dictionary definitions for all known installed ruby gems.<br/><br/>
222
- </div>
223
- <div>
224
- <b>To see</b> this page,
225
- <ol>
226
- <li>Open "Go" menu.</li>
227
- <li>Choose "Front/Back Matter" menu item.
228
- If it has sub-menu items, choose one of them.</li>
229
- </ol>
230
- </div>
231
- <div>
232
- <b>To prepare</b> the menu item, do the followings.
233
- <ol>
234
- <li>Prepare this page source as an entry.</li>
235
- <li>Add "DCSDictionaryFrontMatterReferenceID" key and its value to the plist of the dictionary.
236
- The value should be the string of this page entry id. </li>
237
- </ol>
238
- </div>
239
- <br/>
240
- </d:entry>
241
- </d:dictionary>
242
- EOD
224
+ <h3>Sources:</h3>
225
+ <div>#{sources.keys.sort.join ", "}</div>
226
+
227
+ <h3>Classes:</h3>
228
+ <div>#{classes.keys.sort.join ", "}</div>
229
+ </d:entry>
230
+ </d:dictionary>
231
+ EOD
243
232
  end
244
233
 
245
234
  def make
@@ -247,54 +236,64 @@ class RDoc::OSXDictionary
247
236
 
248
237
  FileUtils.rm_rf base if $d
249
238
 
250
- seen = {}
251
- ri = RDoc::RI::Driver.new
239
+ dir = File.join base, "dict"
240
+ FileUtils.mkdir_p dir unless File.directory? dir
241
+
252
242
  dirty = false
253
243
  force = $f || false
254
- dict = ri.class_cache
244
+ ri = RDoc::RI::Driver.new
245
+ dict = ri.classes
246
+
247
+ l_seen = {}
255
248
 
256
- dict.sort.each do |klass, definition|
257
- path = "#{base}/cache/#{klass}.xml"
249
+ dict.sort.each do |klass, stores|
250
+ path = "#{base}/dict/#{klass}.xml"
258
251
 
259
- next if seen[klass.downcase]
260
- seen[klass.downcase] = true
252
+ next if $q and klass !~ /^(String|Array|Bignum)/
261
253
 
262
254
  unless File.exist? path then
263
- warn "New entries for dictionary. Rebuilding dictionary." unless dirty
255
+ unless dirty then
256
+ warn "New entries for dictionary. Rebuilding dictionary."
257
+ warn "Sing along, kids!"
258
+ end
264
259
  dirty = true
265
-
266
260
  warn klass if $v
267
261
 
268
- File.open(path, "w") do |f|
269
- methods = ri.load_cache_for(klass)
270
- next if methods.nil? || methods.empty?
271
- result = []
272
- result << d_entry(klass, dict[klass], true)
273
-
274
- methods.each do |k,v|
275
- v["class"] = klass
276
- result << d_entry(k, v)
277
- end
262
+ $stderr.print klass[0,1] unless l_seen[klass[0,1]]
263
+ l_seen[klass[0,1]] = true
278
264
 
279
- f.puts result.join("\n")
280
- end
265
+ write_class_info klass, stores, path
281
266
  end
282
267
  end
283
268
 
269
+ warn "! YAY!! All done!!!" if dirty
270
+
284
271
  return unless dirty unless force
285
272
 
286
273
  dict_src_path = "#{base}/RubyGemsDictionary.xml"
287
274
 
288
- seen.clear
275
+ seen = {}
276
+
277
+ classes = {}
278
+ sources = {}
279
+ ri.classes.sort.each do |klass, stores|
280
+ classes[klass] = true
281
+
282
+ stores.each do |store|
283
+ sources[store.friendly_path] = true
284
+ end
285
+ end
289
286
 
290
287
  File.open(dict_src_path, "w") do |xml|
291
288
  xml.puts d_header
292
289
 
293
- dict.sort.each do |klass, definition|
294
- next if seen[klass.downcase]
295
- seen[klass.downcase] = true
290
+ dict.sort.each do |klass, stores|
291
+ next if $q and klass !~ /^(String|Array|Bignum)/
296
292
 
297
- path = "#{base}/cache/#{klass}.xml"
293
+ next if seen[klass]
294
+ seen[klass] = true
295
+
296
+ path = "#{base}/dict/#{klass}.xml"
298
297
  body = File.read path rescue nil
299
298
  if body then
300
299
  xml.puts body
@@ -303,7 +302,7 @@ class RDoc::OSXDictionary
303
302
  end
304
303
  end
305
304
 
306
- xml.puts d_footer
305
+ xml.puts d_footer(classes, sources)
307
306
  end
308
307
 
309
308
  dict_name = "RubyAndGems"
@@ -312,6 +311,7 @@ class RDoc::OSXDictionary
312
311
 
313
312
  Dir.chdir base do
314
313
  run("/Developer/Extras/Dictionary Development Kit/bin/build_dict.sh",
314
+ "-c=0",
315
315
  dict_name, dict_src_path,
316
316
  "#{data}/RubyGemsDictionary.css",
317
317
  "#{data}/RubyGemsInfo.plist")
@@ -360,7 +360,7 @@ class RDoc::OSXDictionary
360
360
  @hooked[:uninstall] = true
361
361
  require 'fileutils'
362
362
  warn "nuking old ri cache to force rebuild"
363
- FileUtils.rm_r File.expand_path("~/.ri/cache")
363
+ FileUtils.rm_r File.expand_path("~/.ri/dict")
364
364
  system cmd
365
365
  end
366
366
  end
@@ -374,42 +374,3 @@ class String
374
374
  self.gsub(/&/, '&amp;').gsub(/>/, '&gt;').gsub(/</, '&lt;').gsub(/-/, '&#45;')
375
375
  end
376
376
  end
377
-
378
- class RDoc::Markup::Flow::LIST # ARG!
379
- def to_s
380
- pre, post = { :NUMBER => ['<ol>', '</ol>'] }[self.type] || ['<ul>', '</ul>']
381
-
382
- raise "no: #{self.type}" unless pre
383
-
384
- "#{pre}#{contents.join("\n")}#{post}"
385
- end
386
- end
387
-
388
- class Struct
389
- alias :old_to_s :to_s
390
-
391
- MARKUP = {
392
- "RULE" => [nil, nil],
393
- "H" => ["<h2>", "</h2>"],
394
- "P" => ["<p>", "</p>"],
395
- "VERB" => ["<pre>", "</pre>"],
396
- "LI" => ['<li>', '</li>'],
397
- }
398
-
399
- def body
400
- self.text
401
- end
402
-
403
- def to_s
404
- name = self.class.name
405
- if name =~ /Flow/ then
406
- short = name.split(/::/).last
407
- raise short unless MARKUP.has_key? short
408
- pre, post = MARKUP[short]
409
- return "" unless pre
410
- "#{pre}#{self.body}#{post}"
411
- else
412
- old_to_s
413
- end
414
- end
415
- end
metadata CHANGED
@@ -1,76 +1,101 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rdoc_osx_dictionary
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: false
4
+ hash: 15
5
+ prerelease:
5
6
  segments:
6
- - 1
7
- - 3
8
- - 1
9
- version: 1.3.1
7
+ - 2
8
+ - 0
9
+ - 0
10
+ version: 2.0.0
10
11
  platform: ruby
11
12
  authors:
12
13
  - Ryan Davis
13
14
  autorequire:
14
15
  bindir: bin
15
- cert_chain: []
16
+ cert_chain:
17
+ - |
18
+ -----BEGIN CERTIFICATE-----
19
+ MIIDPjCCAiagAwIBAgIBADANBgkqhkiG9w0BAQUFADBFMRMwEQYDVQQDDApyeWFu
20
+ ZC1ydWJ5MRkwFwYKCZImiZPyLGQBGRYJemVuc3BpZGVyMRMwEQYKCZImiZPyLGQB
21
+ GRYDY29tMB4XDTA5MDMwNjE4NTMxNVoXDTEwMDMwNjE4NTMxNVowRTETMBEGA1UE
22
+ AwwKcnlhbmQtcnVieTEZMBcGCgmSJomT8ixkARkWCXplbnNwaWRlcjETMBEGCgmS
23
+ JomT8ixkARkWA2NvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALda
24
+ b9DCgK+627gPJkB6XfjZ1itoOQvpqH1EXScSaba9/S2VF22VYQbXU1xQXL/WzCkx
25
+ taCPaLmfYIaFcHHCSY4hYDJijRQkLxPeB3xbOfzfLoBDbjvx5JxgJxUjmGa7xhcT
26
+ oOvjtt5P8+GSK9zLzxQP0gVLS/D0FmoE44XuDr3iQkVS2ujU5zZL84mMNqNB1znh
27
+ GiadM9GHRaDiaxuX0cIUBj19T01mVE2iymf9I6bEsiayK/n6QujtyCbTWsAS9Rqt
28
+ qhtV7HJxNKuPj/JFH0D2cswvzznE/a5FOYO68g+YCuFi5L8wZuuM8zzdwjrWHqSV
29
+ gBEfoTEGr7Zii72cx+sCAwEAAaM5MDcwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAw
30
+ HQYDVR0OBBYEFEfFe9md/r/tj/Wmwpy+MI8d9k/hMA0GCSqGSIb3DQEBBQUAA4IB
31
+ AQAY59gYvDxqSqgC92nAP9P8dnGgfZgLxP237xS6XxFGJSghdz/nI6pusfCWKM8m
32
+ vzjjH2wUMSSf3tNudQ3rCGLf2epkcU13/rguI88wO6MrE0wi4ZqLQX+eZQFskJb/
33
+ w6x9W1ur8eR01s397LSMexySDBrJOh34cm2AlfKr/jokKCTwcM0OvVZnAutaovC0
34
+ l1SVZ0ecg88bsWHA0Yhh7NFxK1utWoIhtB6AFC/+trM0FQEB/jZkIS8SaNzn96Rl
35
+ n0sZEf77FLf5peR8TP/PtmIg7Cyqz23sLM4mCOoTGIy5OcZ8TdyiyINUHtb5ej/T
36
+ FBHgymkyj/AOSqKRIpXPhjC6
37
+ -----END CERTIFICATE-----
16
38
 
17
- date: 2010-03-30 00:00:00 -07:00
18
- default_executable:
39
+ date: 2011-12-15 00:00:00 Z
19
40
  dependencies:
20
41
  - !ruby/object:Gem::Dependency
21
42
  name: rdoc
22
43
  prerelease: false
23
44
  requirement: &id001 !ruby/object:Gem::Requirement
45
+ none: false
24
46
  requirements:
25
47
  - - ~>
26
48
  - !ruby/object:Gem::Version
49
+ hash: 31
27
50
  segments:
28
- - 2
29
- - 4
30
51
  - 3
31
- version: 2.4.3
52
+ - 12
53
+ version: "3.12"
32
54
  type: :runtime
33
55
  version_requirements: *id001
34
56
  - !ruby/object:Gem::Dependency
35
- name: rubyforge
57
+ name: minitest
36
58
  prerelease: false
37
59
  requirement: &id002 !ruby/object:Gem::Requirement
60
+ none: false
38
61
  requirements:
39
- - - ">="
62
+ - - ~>
40
63
  - !ruby/object:Gem::Version
64
+ hash: 19
41
65
  segments:
42
66
  - 2
43
- - 0
44
- - 4
45
- version: 2.0.4
67
+ - 8
68
+ version: "2.8"
46
69
  type: :development
47
70
  version_requirements: *id002
48
71
  - !ruby/object:Gem::Dependency
49
- name: minitest
72
+ name: hoe
50
73
  prerelease: false
51
74
  requirement: &id003 !ruby/object:Gem::Requirement
75
+ none: false
52
76
  requirements:
53
- - - ">="
77
+ - - ~>
54
78
  - !ruby/object:Gem::Version
79
+ hash: 27
55
80
  segments:
56
- - 1
57
- - 6
58
- - 0
59
- version: 1.6.0
81
+ - 2
82
+ - 12
83
+ version: "2.12"
60
84
  type: :development
61
85
  version_requirements: *id003
62
86
  - !ruby/object:Gem::Dependency
63
- name: hoe
87
+ name: rdoc
64
88
  prerelease: false
65
89
  requirement: &id004 !ruby/object:Gem::Requirement
90
+ none: false
66
91
  requirements:
67
- - - ">="
92
+ - - ~>
68
93
  - !ruby/object:Gem::Version
94
+ hash: 19
69
95
  segments:
70
- - 2
71
- - 6
72
- - 0
73
- version: 2.6.0
96
+ - 3
97
+ - 10
98
+ version: "3.10"
74
99
  type: :development
75
100
  version_requirements: *id004
76
101
  description: |-
@@ -98,7 +123,7 @@ files:
98
123
  - data/RubyGemsInfo.plist
99
124
  - lib/rdoc_osx_dictionary.rb
100
125
  - lib/rubygems_plugin.rb
101
- has_rdoc: true
126
+ - .gemtest
102
127
  homepage: http://rubyforge.org/projects/seattlerb
103
128
  licenses: []
104
129
 
@@ -109,23 +134,27 @@ rdoc_options:
109
134
  require_paths:
110
135
  - lib
111
136
  required_ruby_version: !ruby/object:Gem::Requirement
137
+ none: false
112
138
  requirements:
113
139
  - - ">="
114
140
  - !ruby/object:Gem::Version
141
+ hash: 3
115
142
  segments:
116
143
  - 0
117
144
  version: "0"
118
145
  required_rubygems_version: !ruby/object:Gem::Requirement
146
+ none: false
119
147
  requirements:
120
148
  - - ">="
121
149
  - !ruby/object:Gem::Version
150
+ hash: 3
122
151
  segments:
123
152
  - 0
124
153
  version: "0"
125
154
  requirements: []
126
155
 
127
156
  rubyforge_project: seattlerb
128
- rubygems_version: 1.3.6
157
+ rubygems_version: 1.8.10
129
158
  signing_key:
130
159
  specification_version: 3
131
160
  summary: rdoc via Apple's Dictionary.app
Binary file