Class | RSCM::DarcsLogParser |
In: |
lib/rscm/scm/darcs_log_parser.rb
|
Parent: | Object |
# File lib/rscm/scm/darcs_log_parser.rb, line 31 31: def parse_revision(revision_io, path_revisions) 32: revision = Revision.new 33: 34: doc = REXML::Document.new(revision_io) 35: 36: doc.elements.each("patch") do |element| 37: revision.identifier = element.attributes['hash'] 38: revision.developer = element.attributes['author'] 39: revision.time = Time.parse(element.attributes['local_date']) 40: revision.message = element.elements["comment"].text 41: revision.message.lstrip! 42: revision.message.rstrip! 43: 44: element.elements["summary"].elements.each("add_file") do |file| 45: add_changes(revision, file.text.strip, RevisionFile::ADDED, path_revisions) 46: end 47: element.elements["summary"].elements.each("modify_file") do |file| 48: add_changes(revision, file.text.strip, RevisionFile::MODIFIED, path_revisions) 49: end 50: end 51: 52: revision 53: end
# File lib/rscm/scm/darcs_log_parser.rb, line 8 8: def parse_revisions(io, from_identifier=Time.epoch, to_identifier=Time.infinity) 9: revisions = Revisions.new 10: 11: doc = REXML::Document.new(io) 12: 13: path_revisions = {} 14: doc.elements.each("//patch") do |element| 15: revision = parse_revision(element.to_s, path_revisions) 16: if ((from_identifier <= revision.time) && (revision.time <= to_identifier)) 17: revisions.add(revision) 18: end 19: end 20: 21: revisions.each do |revision| 22: revision.each do |change| 23: current_index = path_revisions[change.path].index(change.native_revision_identifier) 24: change.previous_native_revision_identifier = path_revisions[change.path][current_index + 1] 25: end 26: end 27: 28: revisions 29: end