Add DDC and LCC info to book headers in page display.
[quanlib.git] / walkdir.rb
index 6ef98c242de8d285ff8479e65d961b6911cbe7ea..fb23fcf56d44d1fd8bbbad76153aabd2debb6898 100644 (file)
@@ -30,7 +30,8 @@ class WalkDir
 
   def books
     result = []
-    for file in @files.sort
+    @files = remove_duplicates(@files)
+    for file in @files.sort()
       if Book.can_handle?(file) && (!is_duplicate?(file))
         book = Book.new(@store)
         book.load_from_file!(file)
@@ -57,6 +58,30 @@ class WalkDir
     return false
   end
 
+  def remove_duplicates(files)
+    unique = {}
+    for file in files
+      if Book.can_handle?(file)
+        key = File.dirname(file) + '/' + File.basename(file, '.*')
+        if unique.has_key?(key)
+          new_ext = File.extname(file)
+          old_ext = File.extname(unique[key])
+          if ('.pdf' == old_ext) && ('.epub' == new_ext)
+            # Prefer EPUB over PDF
+            puts 'REPLACED ' + unique[key].to_s + ' with ' + file.to_s
+            unique[key] = file
+          else
+            puts 'DROPPED ' + file.to_s + " because it's superceded by " + unique[key].to_s
+          end
+        else
+          unique[key] = file
+        end
+      end
+    end
+
+    return unique.values
+  end
+
   def walk(path)
     result = []
     children = Dir.entries(path)