debian-mirror-gitlab/app/models/blob.rb

50 lines
1.1 KiB
Ruby
Raw Normal View History

2016-06-02 11:05:42 +05:30
# Blob is a Rails-specific wrapper around Gitlab::Git::Blob objects
class Blob < SimpleDelegator
CACHE_TIME = 60 # Cache raw blobs referred to by a (mutable) ref for 1 minute
CACHE_TIME_IMMUTABLE = 3600 # Cache blobs referred to by an immutable reference for 1 hour
# Wrap a Gitlab::Git::Blob object, or return nil when given nil
#
# This method prevents the decorated object from evaluating to "truthy" when
# given a nil value. For example:
#
# blob = Blob.new(nil)
# puts "truthy" if blob # => "truthy"
#
# blob = Blob.decorate(nil)
# puts "truthy" if blob # No output
def self.decorate(blob)
return if blob.nil?
new(blob)
end
def no_highlighting?
size && size > 1.megabyte
end
def only_display_raw?
size && truncated?
2016-06-02 11:05:42 +05:30
end
def svg?
text? && language && language.name == 'SVG'
end
2016-08-24 12:49:21 +05:30
def video?
UploaderHelper::VIDEO_EXT.include?(extname.downcase.delete('.'))
end
2016-06-02 11:05:42 +05:30
def to_partial_path
if lfs_pointer?
'download'
elsif image? || svg?
'image'
elsif text?
'text'
else
'download'
end
end
end