class Svnx::Base::Entries
Attributes
size[R]
Public Class Methods
new(lines)
click to toggle source
# File lib/svnx/base/entries.rb, line 23 def initialize lines # it's a hash, but indexed with integers, for non-sequential access: @entries = Hash.new doc = if $use_nokogiri Nokogiri::XML lines.join('') else REXML::Document.new Array(lines).join end @elements = get_elements doc @size = @elements.size end
Public Instance Methods
[](idx)
click to toggle source
# File lib/svnx/base/entries.rb, line 47 def [] idx if idx.kind_of? Range fridx = to_index idx.first toidx = to_index idx.last rg = Range.new fridx, toidx, idx.exclude_end? rg.collect { |x| self[x] } else if idx >= size raise "error: index #{idx} is not in range(0 .. #{size})" else idx = to_index idx end if entry = @entries[idx] return entry end @entries[idx] = create_entry @elements[idx] end end
create_entry(xmlelement)
click to toggle source
# File lib/svnx/base/entries.rb, line 39 def create_entry xmlelement raise "create_entry must be implemented for: #{self.class}" end
each(&blk)
click to toggle source
# File lib/svnx/base/entries.rb, line 66 def each(&blk) (0 ... size).collect do |idx| @entries[idx] ||= create_entry @elements[idx] end.each(&blk) end
get_elements(doc)
click to toggle source
# File lib/svnx/base/entries.rb, line 35 def get_elements doc raise "get_elements must be implemented for: #{self.class}" end
to_index(idx)
click to toggle source
# File lib/svnx/base/entries.rb, line 43 def to_index idx idx < 0 ? size + idx : idx end