diff options
author | Douwe Maan <douwe@selenight.nl> | 2017-04-24 09:27:19 -0500 |
---|---|---|
committer | Douwe Maan <douwe@selenight.nl> | 2017-04-27 12:23:26 -0500 |
commit | a2f4650fc7e5407bbed1f73771306d12823f47da (patch) | |
tree | b7b26d75f4f5b8286df07a4240c3dcfcb0a6fea4 | |
parent | ec19703a44aaf427de2b83cec31b72be9a024a42 (diff) | |
download | gitlab-ce-a2f4650fc7e5407bbed1f73771306d12823f47da.tar.gz |
Add BlobViewer::Base#binary? method
-rw-r--r-- | app/models/blob.rb | 44 | ||||
-rw-r--r-- | app/models/blob_viewer/base.rb | 8 |
2 files changed, 30 insertions, 22 deletions
diff --git a/app/models/blob.rb b/app/models/blob.rb index dedf60ca14a..2225de631bf 100644 --- a/app/models/blob.rb +++ b/app/models/blob.rb @@ -70,7 +70,11 @@ class Blob < SimpleDelegator def raw_binary? if valid_lfs_pointer? - !rich_viewer&.text_based? + if rich_viewer + rich_viewer.binary? + else + true + end else binary? end @@ -96,22 +100,6 @@ class Blob < SimpleDelegator lfs_pointer? && !project.lfs_enabled? end - def simple_viewer_class - if empty? - BlobViewer::Empty - elsif raw_binary? - BlobViewer::Download - else # text - BlobViewer::Text - end - end - - def rich_viewer_class - return if invalid_lfs_pointer? || empty? - - rich_viewers_classes.find { |viewer_class| viewer_class.can_render?(self) } - end - def simple_viewer @simple_viewer ||= simple_viewer_class.new(self) end @@ -123,7 +111,7 @@ class Blob < SimpleDelegator end def rendered_as_text?(ignore_errors: true) - simple_viewer.is_a?(BlobViewer::Text) && (ignore_errors || simple_viewer.render_error.nil?) + simple_viewer.text? && (ignore_errors || simple_viewer.render_error.nil?) end def show_viewer_switcher? @@ -137,13 +125,29 @@ class Blob < SimpleDelegator private + def simple_viewer_class + if empty? + BlobViewer::Empty + elsif raw_binary? + BlobViewer::Download + else # text + BlobViewer::Text + end + end + def rich_viewers_classes if valid_lfs_pointer? RICH_VIEWERS elsif binary? - RICH_VIEWERS.reject(&:text_based?) + RICH_VIEWERS.select(&:binary?) else # text - RICH_VIEWERS.select(&:text_based?) + RICH_VIEWERS.select(&:text?) end end + + def rich_viewer_class + return if invalid_lfs_pointer? || empty? + + rich_viewers_classes.find { |viewer_class| viewer_class.can_render?(self) } + end end diff --git a/app/models/blob_viewer/base.rb b/app/models/blob_viewer/base.rb index 714a063933b..ae90d977f03 100644 --- a/app/models/blob_viewer/base.rb +++ b/app/models/blob_viewer/base.rb @@ -2,7 +2,7 @@ module BlobViewer class Base class_attribute :partial_name, :type, :extensions, :client_side, :text_based, :switcher_icon, :switcher_title, :max_size, :absolute_max_size - delegate :partial_path, :rich?, :simple?, :client_side?, :server_side?, :text_based?, to: :class + delegate :partial_path, :rich?, :simple?, :client_side?, :server_side?, :text?, :binary?, to: :class attr_reader :blob attr_accessor :override_max_size @@ -31,10 +31,14 @@ module BlobViewer !client_side? end - def self.text_based? + def self.text? text_based end + def self.binary? + !text? + end + def self.can_render?(blob) !extensions || extensions.include?(blob.extension) end |