51 lines
1.8 KiB
CoffeeScript
51 lines
1.8 KiB
CoffeeScript
FileInfo =
|
|
init: ->
|
|
return if g.VIEW is 'catalog' or !Conf['File Info Formatting']
|
|
|
|
@funk = @createFunc Conf['fileInfo']
|
|
Post::callbacks.push
|
|
name: 'File Info Formatting'
|
|
cb: @node
|
|
node: ->
|
|
return if !@file or @isClone
|
|
@file.text.innerHTML = FileInfo.funk FileInfo, @
|
|
createFunc: (format) ->
|
|
code = format.replace /%(.)/g, (s, c) ->
|
|
if c of FileInfo.formatters
|
|
"' + FileInfo.formatters.#{c}.call(post) + '"
|
|
else
|
|
s
|
|
Function 'FileInfo', 'post', "return '#{code}'"
|
|
convertUnit: (size, unit) ->
|
|
if unit is 'B'
|
|
return "#{size.toFixed()} Bytes"
|
|
i = 1 + ['KB', 'MB'].indexOf unit
|
|
size /= 1024 while i--
|
|
size =
|
|
if unit is 'MB'
|
|
Math.round(size * 100) / 100
|
|
else
|
|
size.toFixed()
|
|
"#{size} #{unit}"
|
|
escape: (name) ->
|
|
name.replace /<|>/g, (c) ->
|
|
c is '<' and '<' or '>'
|
|
formatters:
|
|
t: -> @file.URL.match(/\d+\..+$/)[0]
|
|
T: -> "<a href=#{@file.URL} target=_blank>#{FileInfo.formatters.t.call @}</a>"
|
|
l: -> "<a href=#{@file.URL} target=_blank>#{FileInfo.formatters.n.call @}</a>"
|
|
L: -> "<a href=#{@file.URL} target=_blank>#{FileInfo.formatters.N.call @}</a>"
|
|
n: ->
|
|
fullname = @file.name
|
|
shortname = Build.shortFilename @file.name, @isReply
|
|
if fullname is shortname
|
|
FileInfo.escape fullname
|
|
else
|
|
"<span class=fntrunc>#{FileInfo.escape shortname}</span><span class=fnfull>#{FileInfo.escape fullname}</span>"
|
|
N: -> FileInfo.escape @file.name
|
|
p: -> if @file.isSpoiler then 'Spoiler, ' else ''
|
|
s: -> @file.size
|
|
B: -> FileInfo.convertUnit @file.sizeInBytes, 'B'
|
|
K: -> FileInfo.convertUnit @file.sizeInBytes, 'KB'
|
|
M: -> FileInfo.convertUnit @file.sizeInBytes, 'MB'
|
|
r: -> if @file.isImage then @file.dimensions else 'PDF' |