some more "deleted" fixes initially from Richard G. Roman
authorgc <gc>
Sun, 3 Jul 2005 14:33:47 +0000 (14:33 +0000)
committergc <gc>
Sun, 3 Jul 2005 14:33:47 +0000 (14:33 +0000)
bin/booh-backend
lib/booh/booh-lib.rb

index 497b46a3660a71df3db83aa7a2bc088be9caf1f9..94e7b446530441ba1278fe956e1297c19dcd021e 100755 (executable)
@@ -422,13 +422,13 @@ def find_previous_album(xmldir)
     relative_pos = ''
     begin
         #- move to previous dir element if exists
-        if xmldir.previous_element_byname('dir')
-            xmldir = xmldir.previous_element_byname('dir')
+        if prevelem = xmldir.previous_element_byname_notattr('dir', 'deleted')
+            xmldir = prevelem
             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 nextchild = child.next_element_byname('dir')
+                while nextchild = child.next_element_byname_notattr('dir', 'deleted')
                     child = nextchild
                 end
                 relative_pos += xmldir2destdir(child) + '/'
@@ -437,7 +437,7 @@ def find_previous_album(xmldir)
         else
             #- previous dir doesn't exist, move to previous dir element if exists
             xmldir = xmldir.parent
-            if xmldir.name == 'dir'
+            if xmldir.name == 'dir' && !xmldir.attributes['deleted']
                 relative_pos += '../'
             else
                 return nil
@@ -451,11 +451,11 @@ def find_next_album(xmldir)
     relative_pos = ''
     begin
         #- first child dir element (catches when initial xmldir has both thumbnails and subdirs)
-        if firstchild = xmldir.elements['dir']
+        if firstchild = xmldir.child_byname_notattr('dir', 'deleted')
             xmldir = firstchild
             relative_pos += xmldir2destdir(xmldir) + '/'
         #- next brother
-        elsif nextbro = xmldir.next_element_byname('dir')
+        elsif nextbro = xmldir.next_element_byname_notattr('dir', 'deleted')
             xmldir = nextbro
             relative_pos += '../' + xmldir2destdir(xmldir) + '/'
         else
@@ -463,7 +463,7 @@ def find_next_album(xmldir)
             begin
                 xmldir = xmldir.parent
                 relative_pos += '../'
-            end while xmldir && !xmldir.next_element_byname('dir')
+            end while xmldir && !xmldir.next_element_byname_notattr('dir', 'deleted')
             if xmldir
                 xmldir = xmldir.next_element_byname('dir')
                 relative_pos += '../' + xmldir2destdir(xmldir) + '/'
@@ -836,7 +836,7 @@ def walk_source_dir
         info("index.html: #{dir}")
 
         xmldir = optxpath[utf8(dir)]
-        if !xmldir || (xmldir.attributes['already-generated'] && !$force)
+        if !xmldir || (xmldir.attributes['already-generated'] && !$force) || xmldir.attributes['deleted']
             next
         end
         dest_dir = make_dest_filename(dir.sub(/^#{Regexp.quote($source)}/, $dest))
@@ -885,6 +885,9 @@ def walk_source_dir
 
             #- deal with sub-albums (direct to subdirs/index.html pages)
             xmldir.elements.each('dir') { |child|
+                if child.attributes['deleted']
+                    next
+                end
                 subdir = make_dest_filename(from_utf8(File.basename(child.attributes['path'])))
                 thumbnail = "#{dest_dir}/thumbnails-#{subdir}.jpg"
                 html_index += run_iterations(iterations)
index c09703271bdc16d0c7dc5d5baca22c042c1855c3..1b37e2e7ea023fb78259fa29ba09e3cf94f06167 100644 (file)
@@ -415,6 +415,16 @@ class REXML::Element
         return nil
     end
 
+    def previous_element_byname_notattr(name, attr)
+        n = self
+        while n = n.previous_element
+            if n.name == name && !n.attributes[attr]
+                return n
+            end
+        end
+        return nil
+    end
+
     def next_element_byname(name)
         n = self
         while n = n.next_element
@@ -425,6 +435,16 @@ class REXML::Element
         return nil
     end
 
+    def next_element_byname_notattr(name, attr)
+        n = self
+        while n = n.next_element
+            if n.name == name && !n.attributes[attr]
+                return n
+            end
+        end
+        return nil
+    end
+
     def child_byname_notattr(name, attr)
         elements.each(name) { |element|
             if !element.attributes[attr]