lib/servel/path_builder.rb in servel-0.6.0 vs lib/servel/path_builder.rb in servel-0.7.0

- old
+ new

@@ -1,10 +1,14 @@ class Servel::PathBuilder + IMAGE_EXTS = %w(.jpg .jpeg .png .gif) + VIDEO_EXTS = %w(.webm .mp4) + AUDIO_EXTS = %w(.mp3 .m4a .wav) + def initialize(path) @path = Pathname.new(path) end - + def build Servel::Path.new( type: type, media_type: media_type, listing_classes: listing_classes, @@ -13,27 +17,11 @@ name: @path.basename, size: size, mtime: @path.mtime ) end - - def image? - @path.file? && @path.extname && %w(.jpg .jpeg .png .gif).include?(@path.extname.downcase) - end - def video? - @path.file? && @path.extname && %w(.webm .mp4).include?(@path.extname.downcase) - end - - def audio? - @path.file? && @path.extname && %w(.mp3 .m4a .wav).include?(@path.extname.downcase) - end - - def media? - image? || video? || audio? - end - def type if @path.directory? "Dir" elsif @path.file? @path.extname.sub(/^\./, "") @@ -41,34 +29,40 @@ "" end end def media_type - return "video" if video? - return "image" if image? - return "audio" if audio? - "unknown" + return nil unless @path.file? && @path.extname + + case @path.extname.downcase + when *IMAGE_EXTS + :image + when *VIDEO_EXTS + :video + when *AUDIO_EXTS + :audio + else + nil + end end def listing_classes klasses = [] - klasses << "media" if media? - klasses << "image" if image? - klasses << "video" if video? - klasses << "audio" if audio? klasses << "file" if @path.file? klasses << "directory" if @path.directory? + klasses << "media" if media_type + klasses << media_type if media_type klasses.join(" ") end def icon - if @path.directory? - "📁" - elsif video? + return "📁" if @path.directory? + case media_type + when :video "🎞️" - elsif image? + when :image "🖼️" - elsif audio? + when :audio "🔊" else "📝" end end \ No newline at end of file