FileInfo = init: -> return if g.VIEW not in ['index', 'thread'] or !Conf['File Info Formatting'] Post.callbacks.push name: 'File Info Formatting' cb: @node node: -> return if !@file or @isClone $.extend @file.text, <%= html('') %> FileInfo.format Conf['fileInfo'], @, @file.text.firstElementChild format: (formatString, post, outputNode) -> output = [] formatString.replace /%(.)|[^%]+/g, (s, c) -> output.push if c of FileInfo.formatters FileInfo.formatters[c].call post else <%= html('${s}') %> '' $.extend outputNode, <%= html('@{output}') %> formatters: t: -> <%= html('${this.file.URL.match(/\\d+\\..+$/)[0]}') %> T: -> <%= html('&{FileInfo.formatters.t.call(this)}') %> l: -> <%= html('&{FileInfo.formatters.n.call(this)}') %> L: -> <%= html('&{FileInfo.formatters.N.call(this)}') %> n: -> fullname = @file.name shortname = Build.shortFilename @file.name, @isReply if fullname is shortname <%= html('${fullname}') %> else <%= html('${shortname}${fullname}') %> N: -> <%= html('${this.file.name}') %> p: -> if @file.isSpoiler then <%= html('Spoiler, ') %> else <%= html('') %> s: -> <%= html('${this.file.size}') %> B: -> <%= html('${Math.round(this.file.sizeInBytes)} Bytes') %> K: -> <%= html('${Math.round(this.file.sizeInBytes/1024)} KB') %> M: -> <%= html('${Math.round(this.file.sizeInBytes/1048576*100)/100} MB') %> r: -> <%= html('${this.file.dimensions || "PDF"}') %> '%': -> <%= html('%') %>