Browse Source

Move asset path management to a dedicated class

Lukasz Badura 5 months ago
parent
commit
9d3b6f434b
4 changed files with 43 additions and 17 deletions
  1. 1 0
      lib/fotos.rb
  2. 35 0
      lib/fotos/asset.rb
  3. 6 6
      lib/fotos/html_generator.rb
  4. 1 11
      lib/fotos/source_directory.rb

+ 1 - 0
lib/fotos.rb

@@ -5,6 +5,7 @@ require_relative "fotos/zip_extractor"
 require_relative "fotos/html_generator"
 require_relative "fotos/html_generator"
 require_relative "fotos/thumbnail"
 require_relative "fotos/thumbnail"
 require_relative "fotos/source_directory"
 require_relative "fotos/source_directory"
+require_relative "fotos/asset"
 
 
 module Fotos
 module Fotos
   DATE_FORMAT = "%d-%m-%Y".freeze
   DATE_FORMAT = "%d-%m-%Y".freeze

+ 35 - 0
lib/fotos/asset.rb

@@ -0,0 +1,35 @@
+module Fotos
+  class Asset
+    THUMBNAIL_PREFIX = "TH_"
+
+    def initialize(file_path)
+      @file_path = file_path
+    end
+
+    attr_reader :file_path
+
+    def dirname
+      File.dirname(@file_path).split("/").last
+    end
+
+    def file_name
+      File.basename(@file_path)
+    end
+
+    def thumbnail_name
+      [THUMBNAIL_PREFIX, file_name].join
+    end
+
+    def path
+      File.join(dirname, file_name)
+    end
+
+    def thumbnail_path
+      File.join(dirname, thumbnail_name)
+    end
+
+    def is_thumbnail?
+      file_name.match?(THUMBNAIL_PREFIX)
+    end
+  end
+end

+ 6 - 6
lib/fotos/html_generator.rb

@@ -11,17 +11,17 @@ module Fotos
     end
     end
 
 
     def call
     def call
-      @source_dir.files_by_date.each do |date, images|
+      @source_dir.files_by_date.each do |date, assets|
         puts "<h2 id=\"#{date}\">#{date} <small><a href=\"#toc\">top</a></small></h2>"
         puts "<h2 id=\"#{date}\">#{date} <small><a href=\"#toc\">top</a></small></h2>"
-        images.each do |file|
-          if File.exist?(file.thumbnail_path)
-            puts "<a href=\"#{file.dir_name}/#{file.file_name}\"><img src=\"#{file.thumbnail_path}\" /></a>"
+        assets.reject(&:is_thumbnail?).each do |asset|
+          if File.exist?(asset.thumbnail_path)
+            puts "<a href=\"#{asset.path}\"><img src=\"#{asset.thumbnail_path}\" /></a>"
           else
           else
             if @generate_thumbnails
             if @generate_thumbnails
-              Fotos::Thumbnail.new(file.file_path).create
+              Fotos::Thumbnail.new(asset.path).create
               redo
               redo
             end
             end
-            puts "<a href=\"#{file.dir_name}/#{file.file_name}\"><img src=\"#{file.file_path}\" /></a>"
+            puts "<a href=\"#{asset.dirname}/#{asset.file_name}\"><img src=\"#{asset.path}\" /></a>"
           end
           end
         end
         end
       end
       end

+ 1 - 11
lib/fotos/source_directory.rb

@@ -24,17 +24,7 @@ module Fotos
       dates.each do |date|
       dates.each do |date|
         dir_name = date.strftime(DATE_FORMAT)
         dir_name = date.strftime(DATE_FORMAT)
         files = Dir.glob(File.join(@path, dir_name, "*.JPEG"))
         files = Dir.glob(File.join(@path, dir_name, "*.JPEG"))
-        result[date] = files.map do |file|
-          file_basename = File.basename(file)
-          thumbnail_name = "TH_#{file_basename}"
-          Image.new(
-            dir_name: dir_name,
-            file_name: file_basename,
-            file_path: File.join(dir_name, file_basename),
-            thumbnail_name: thumbnail_name,
-            thumbnail_path: File.join(dir_name, thumbnail_name)
-          )
-        end
+        result[date] = files.map { |path| Fotos::Asset.new(path) }
       end
       end
       return result
       return result
     end
     end