On Wed, Nov 01, 2006 at 06:05:12AM +0900, Eric Promislow wrote:
> About to yaml <<c:/ruby/share/ri/1.8/system/Abbrev/cdesc-Abbrev.yaml>>
> I get this error:
> c:/ruby/lib/ruby/1.8/yaml.rb:133:in `transfer': invalid subclass
> (TypeError)
> from c:/ruby/lib/ruby/1.8/yaml.rb:133:in `load'
> from get_yaml_info.rb:19:in `get_class_info'
> from get_yaml_info.rb:19:in `get_class_info'
> from get_yaml_info.rb:25
>
> ruby 1.8.4 (2006-04-14) [i386-mswin32]
>
> It's the same code, and I don't see ri setting any options in the YAML
> namespace telling it to process types like "!ruby/struct:SM::Flow:
"
> differently, although I gather this is the problem.
>
> Any advice?
$ cat ri-problem.rb
require 'yaml'
require 'pp'
class RiFinder
def initialize(sysdir)
@sysdir = sysdir
end
def get_class_info(clsName, info)
clsFile = "#{@sysdir}/#{clsName}/cdesc-#{clsName}.yaml"
puts "About to yaml <<#{clsFile}>>"
clsInfo = File.open(clsFile) { |io| YAML.load(io) }
pp clsInfo
end
end
rifinder = RiFinder.new("/usr/share/ri/1.8/system/")
rifinder.get_class_info("Abbrev", nil)
$ ruby ri-problem.rb
About to yaml <</usr/share/ri/1.8/system//Abbrev/cdesc-Abbrev.yaml>>
/home/batsman/usr//lib/ruby/1.8/yaml.rb:133:in `transfer': invalid subclass (TypeError)
from /home/batsman/usr//lib/ruby/1.8/yaml.rb:133:in `node_import'
from /home/batsman/usr//lib/ruby/1.8/yaml.rb:133:in `load'
from /home/batsman/usr//lib/ruby/1.8/yaml.rb:133:in `load'
from ri-problem.rb:12:in `get_class_info'
from ri-problem.rb:12:in `open'
from ri-problem.rb:12:in `get_class_info'
from ri-problem.rb:18
$ echo 'require "rdoc/ri/ri_reader"' | cat - ri-problem.rb > ri-no-problem.rb
$ ruby ri-no-problem.rb
About to yaml <</usr/share/ri/1.8/system//Abbrev/cdesc-Abbrev.yaml>>
#<RI::ClassDescription:0xa7db27f0
@attributes=[],
@class_methods=[],
@comment=
[#<struct SM::Flow:

body=
"Calculate the set of unique abbreviations for a given set of strings.">,
#<struct SM::Flow::VERB
body=
" require 'abbrev'\n require 'pp'\n\n pp Abbrev::abbrev(['ruby', 'rules']).sort\n">,
#<struct SM::Flow:

body="<em>Generates:</em>">,
#<struct SM::Flow::VERB
body=
" [["rub", "ruby"],\n ["ruby", "ruby"],\n ["rul", "rules"],\n ["rule", "rules"],\n ["rules", "rules"]]\n">,
#<struct SM::Flow:

body="Also adds an <tt>abbrev</tt> method to class <tt>Array</tt>.">],
@constants=[],
@full_name="Abbrev",
@includes=[],
@instance_methods=[#<RI::MethodSummary:0xa7db3024 @name="abbrev">],
@name="Abbrev",
@superclass=nil>
--
Mauricio Fernandez -
http://eigenclass.org - singular Ruby