relative_pos = ''
begin
#- move to previous dir element if exists
- if xmldir.previous_element && xmldir.previous_element.name == 'dir'
- xmldir = xmldir.previous_element
+ if xmldir.previous_element_byname('dir')
+ xmldir = xmldir.previous_element_byname('dir')
relative_pos += '../' + xmldir2destdir(xmldir) + '/'
child = nil
#- after having moved to previous dir, we need to go down last subdir until the last one
while child = xmldir.elements['dir']
- while child.next_element
- child = child.next_element
+ while nextchild = child.next_element_byname('dir')
+ child = nextchild
end
relative_pos += xmldir2destdir(child) + '/'
xmldir = child
if firstchild = xmldir.elements['dir']
xmldir = firstchild
relative_pos += xmldir2destdir(xmldir) + '/'
- #- next brother (is necessarily a <dir>)
- elsif nextbro = xmldir.next_element
+ #- next brother
+ elsif nextbro = xmldir.next_element_byname('dir')
xmldir = nextbro
relative_pos += '../' + xmldir2destdir(xmldir) + '/'
else
require 'iconv'
require 'timeout'
+require 'rexml/document'
+
require 'gettext'
include GetText
bindtextdomain("booh")
return path.gsub(/\w+\/\.\.\//, '')
end
end
+
+class REXML::Element
+ def previous_element_byname(name)
+ n = self
+ while n = n.previous_element
+ if n.name == name
+ return n
+ end
+ end
+ return nil
+ end
+
+ def next_element_byname(name)
+ n = self
+ while n = n.next_element
+ if n.name == name
+ return n
+ end
+ end
+ return nil
+ end
+end
+
+