Sha256: fe479a6e1cc850c8168027258c0a6ce8689dbccb3c808b1b9e54aa1fd4e91d38

Contents?: true

Size: 1.41 KB

Versions: 2

Compression:

Stored size: 1.41 KB

Contents

class Servel::PathnameDecorator < SimpleDelegator
  def initialize(pathname, parent)
    super(pathname)
    @parent = parent
  end

  def decorate
    self
  end

  def image?
    file? && extname && %w(.jpg .jpeg .png .gif).include?(extname.downcase)
  end

  def video?
    file? && extname && %w(.webm).include?(extname.downcase)
  end

  def audio?
    file? && extname && %w(.mp3 .m4a .wav).include?(extname.downcase)
  end

  def media?
    image? || video? || audio?
  end

  def type
    if directory?
      "Dir"
    elsif file?
      extname.sub(/^\./, "")
    else
      ""
    end
  end

  def media_type
    return "video" if video?
    return "image" if image?
    return "audio" if audio?
    "unknown"
  end

  def listing_classes
    klasses = []
    klasses << "media" if media?
    klasses << "image" if image?
    klasses << "video" if video?
    klasses << "audio" if audio?
    klasses.join(" ")
  end

  def listing_attrs
    {
      class: listing_classes,
      data: {
        type: media_type
      }
    }
  end

  def parent?
    @parent
  end

  def icon
    if @parent
      "🔝"
    elsif directory?
      "📁"
    else
      ""
    end
  end

  def href
    if @parent
      "../"
    else
      basename
    end
  end

  def name
    if @parent
      "(Parent Directory)"
    else
      basename
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
servel-0.4.0 lib/servel/pathname_decorator.rb
servel-0.3.0 lib/servel/pathname_decorator.rb