Object
Maintains a list of links / references to manuals and other resources.
Retrieve an Index for <path>, where <path> is a directory or normal file. The index is loaded from the corresponding index.txt file if one exists.
# File lib/ronn/index.rb, line 15 def self.[](path) (@indexes ||= {})[index_path_for_file(path)] ||= Index.new(index_path_for_file(path)) end
# File lib/ronn/index.rb, line 89 def <<(path) raise ArgumentError, "local paths only" if path =~ /(https?|mailto):/ return self if any? { |ref| ref.path == File.expand_path(path) } relative_path = relative_to_index(path) @references << if path =~ /\.ronn?$/ reference manual(path).reference_name, relative_path else reference File.basename(path), relative_path end self end
# File lib/ronn/index.rb, line 81 def [](name) references.find { |ref| ref.name == name } end
# File lib/ronn/index.rb, line 102 def add_manual(manual) @manuals[File.expand_path(manual.path)] = manual self << manual.path end
Enumerable and friends
# File lib/ronn/index.rb, line 61 def each(&bk) references.each(&bk) end
Determine whether the index file exists.
# File lib/ronn/index.rb, line 43 def exist? File.exist?(path) end
# File lib/ronn/index.rb, line 107 def manual(path) @manuals[File.expand_path(path)] ||= Document.new(path) end
# File lib/ronn/index.rb, line 111 def manuals select { |ref| ref.relative? && ref.ronn? }. map { |ref| manual(ref.path) } end
Load index data from a string.
# File lib/ronn/index.rb, line 48 def read!(data) data.each_line do |line| line = line.strip.gsub(/\s*#.*$/, '') if !line.empty? name, url = line.split(/ +/, 2) @references << reference(name, url) end end end
# File lib/ronn/index.rb, line 85 def reference(name, path) Reference.new(self, name, path) end
# File lib/ronn/index.rb, line 131 def relative_to_index(path) path = File.expand_path(path) index_dir = File.dirname(File.expand_path(self.path)) path.sub(/^#{index_dir}\//, '') end
Generated with the Darkfish Rdoc Generator 2.