source: extensions/gsdl-video/trunk/installed/cmdline/lib/ruby/1.8/rdoc/ri/ri_writer.rb@ 18425

Last change on this file since 18425 was 18425, checked in by davidb, 15 years ago

Video extension to Greenstone

File size: 1.5 KB
Line 
1require 'fileutils'
2
3module RI
4 class RiWriter
5
6 def RiWriter.class_desc_path(dir, class_desc)
7 File.join(dir, "cdesc-" + class_desc.name + ".yaml")
8 end
9
10
11 # Convert a name from internal form (containing punctuation)
12 # to an external form (where punctuation is replaced
13 # by %xx)
14
15 def RiWriter.internal_to_external(name)
16 name.gsub(/\W/) { sprintf("%%%02x", $&[0]) }
17 end
18
19 # And the reverse operation
20 def RiWriter.external_to_internal(name)
21 name.gsub(/%([0-9a-f]{2,2})/) { $1.to_i(16).chr }
22 end
23
24 def initialize(base_dir)
25 @base_dir = base_dir
26 end
27
28 def remove_class(class_desc)
29 FileUtils.rm_rf(path_to_dir(class_desc.full_name))
30 end
31
32 def add_class(class_desc)
33 dir = path_to_dir(class_desc.full_name)
34 FileUtils.mkdir_p(dir)
35 class_file_name = RiWriter.class_desc_path(dir, class_desc)
36 File.open(class_file_name, "w") do |f|
37 f.write(class_desc.serialize)
38 end
39 end
40
41 def add_method(class_desc, method_desc)
42 dir = path_to_dir(class_desc.full_name)
43 file_name = RiWriter.internal_to_external(method_desc.name)
44 meth_file_name = File.join(dir, file_name)
45 if method_desc.is_singleton
46 meth_file_name += "-c.yaml"
47 else
48 meth_file_name += "-i.yaml"
49 end
50
51 File.open(meth_file_name, "w") do |f|
52 f.write(method_desc.serialize)
53 end
54 end
55
56 private
57
58 def path_to_dir(class_name)
59 File.join(@base_dir, *class_name.split('::'))
60 end
61 end
62end
Note: See TracBrowser for help on using the repository browser.