lib/servel/entry.rb in servel-0.19.0 vs lib/servel/entry.rb in servel-0.20.0

- old
+ new

@@ -1,27 +1,45 @@ -class Servel::Entry - attr_reader :ftype, :type, :media_type, :listing_classes, :icon, :href, :name, :size, :mtime - - def initialize(ftype:, type:, media_type: nil, listing_classes:, icon:, href:, name:, size: nil, mtime: nil) - @ftype = ftype - @type = type - @media_type = media_type - @listing_classes = listing_classes - @icon = icon - @href = href - @name = name - @size = size - @mtime = mtime - end - - def directory? - @ftype == :directory - end - - def file? - @ftype == :file - end - - def media? - !@media_type.nil? - end +class Servel::Entry + extend Servel::Instrumentation + + attr_reader :ftype, :type, :media_type, :listing_classes, :icon, :href, :name, :size, :mtime + + def initialize(ftype:, type:, media_type: nil, listing_classes:, icon:, href:, name:, size: nil, mtime: nil) + @ftype = ftype + @type = type + @media_type = media_type + @listing_classes = listing_classes + @icon = icon + @href = href + @name = name + @size = size + @mtime = mtime + end + + def directory? + @ftype == :directory + end + + def file? + @ftype == :file + end + + def media? + !@media_type.nil? + end + + def as_json(*) + { + icon: @icon, + href: Rack::Utils.escape_path(@href), + class: @listing_classes, + media_type: @media_type, + name: @name, + type: @type, + size: @size.nil? ? "-" : @size, + mtime: @mtime.nil? ? "-" : @mtime.strftime("%e %b %Y %l:%M %p"), + media: media? + } + end + + instrument :as_json end \ No newline at end of file