Class: BlobViewer::Base
- Inherits:
-
Object
show all
- Defined in:
- app/models/blob_viewer/base.rb
Direct Known Subclasses
Audio, BinarySTL, CSV, Changelog, Contributing, DependencyManager, Download, Empty, GeoJson, GitlabCiYml, Image, License, Markup, Notebook, OpenApi, PDF, Readme, RouteMap, SVG, Sketch, Text, Video
Constant Summary
collapse
- PARTIAL_PATH_PREFIX =
'projects/blob/viewers'
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize(blob) ⇒ Base
Returns a new instance of Base.
17
18
19
20
|
# File 'app/models/blob_viewer/base.rb', line 17
def initialize(blob)
@blob = blob
@initially_binary = blob.binary_in_repo?
end
|
Instance Attribute Details
#blob ⇒ Object
Returns the value of attribute blob.
13
14
15
|
# File 'app/models/blob_viewer/base.rb', line 13
def blob
@blob
end
|
Class Method Details
.auxiliary? ⇒ Boolean
38
39
40
|
# File 'app/models/blob_viewer/base.rb', line 38
def self.auxiliary?
type == :auxiliary
end
|
.binary? ⇒ Boolean
46
47
48
|
# File 'app/models/blob_viewer/base.rb', line 46
def self.binary?
binary
end
|
.can_render?(blob, verify_binary: true) ⇒ Boolean
54
55
56
57
58
59
60
|
# File 'app/models/blob_viewer/base.rb', line 54
def self.can_render?(blob, verify_binary: true)
return false if verify_binary && binary? != blob.binary_in_repo?
return true if extensions&.include?(blob.extension)
return true if file_types&.include?(blob.file_type)
false
end
|
.load_async? ⇒ Boolean
42
43
44
|
# File 'app/models/blob_viewer/base.rb', line 42
def self.load_async?
load_async
end
|
.loading_partial_path ⇒ Object
26
27
28
|
# File 'app/models/blob_viewer/base.rb', line 26
def self.loading_partial_path
File.join(PARTIAL_PATH_PREFIX, loading_partial_name)
end
|
.partial_path ⇒ Object
22
23
24
|
# File 'app/models/blob_viewer/base.rb', line 22
def self.partial_path
File.join(PARTIAL_PATH_PREFIX, partial_name)
end
|
.rich? ⇒ Boolean
30
31
32
|
# File 'app/models/blob_viewer/base.rb', line 30
def self.rich?
type == :rich
end
|
.simple? ⇒ Boolean
34
35
36
|
# File 'app/models/blob_viewer/base.rb', line 34
def self.simple?
type == :simple
end
|
.text? ⇒ Boolean
50
51
52
|
# File 'app/models/blob_viewer/base.rb', line 50
def self.text?
!binary?
end
|
Instance Method Details
#binary_detected_after_load? ⇒ Boolean
74
75
76
|
# File 'app/models/blob_viewer/base.rb', line 74
def binary_detected_after_load?
!@initially_binary && blob.binary_in_repo?
end
|
#collapsed? ⇒ Boolean
62
63
64
65
66
|
# File 'app/models/blob_viewer/base.rb', line 62
def collapsed?
return @collapsed if defined?(@collapsed)
@collapsed = !blob.expanded? && collapse_limit && blob.raw_size > collapse_limit
end
|
#prepare! ⇒ Object
97
98
99
|
# File 'app/models/blob_viewer/base.rb', line 97
def prepare!
end
|
#render_error ⇒ Object
This method is used on the server side to check whether we can attempt to render the blob at all. Human-readable error messages are found in the ‘BlobHelper#blob_render_error_reason` helper.
This method does not and should not load the entire blob contents into memory, and should not be overridden to do so in order to validate the format of the blob.
Prefer to implement a client-side viewer, where the JS component loads the binary from ‘blob_raw_path` and does its own format validation and error rendering, especially for potentially large binary formats.
89
90
91
92
93
94
95
|
# File 'app/models/blob_viewer/base.rb', line 89
def render_error
if too_large?
:too_large
elsif collapsed?
:collapsed
end
end
|
#too_large? ⇒ Boolean
68
69
70
71
72
|
# File 'app/models/blob_viewer/base.rb', line 68
def too_large?
return @too_large if defined?(@too_large)
@too_large = size_limit && blob.raw_size > size_limit
end
|