diff --git a/4chan_x.user.js b/4chan_x.user.js
index 025489f63..400a7e729 100644
--- a/4chan_x.user.js
+++ b/4chan_x.user.js
@@ -2320,16 +2320,18 @@
return $.id('backlinkPreview').textContent = conf['backlink'].replace(/%id/, '123456789');
},
fileInfo: function() {
- FileInfo.type = this.name === 'fileInfoR' ? 0 : 1;
+ var type;
+ type = this.name === 'fileInfoR' ? 0 : 1;
FileInfo.data = {
link: '1329791824.png',
size: 996,
unit: 'KB',
resolution: '1366x768',
- filename: 'Untitled.png'
+ filename: 'Untitled.png',
+ type: type
};
- FileInfo.funks = FileInfo.setFormats();
- return $.id("" + this.name + "Preview").innerHTML = FileInfo.funks[FileInfo.type](FileInfo);
+ FileInfo.setFormats();
+ return $.id("" + this.name + "Preview").innerHTML = FileInfo.funks[type](FileInfo);
},
favicon: function() {
Favicon["switch"]();
@@ -2931,42 +2933,46 @@
FileInfo = {
init: function() {
if (g.BOARD === 'f') return;
- FileInfo.funks = FileInfo.setFormats();
+ this.setFormats();
return g.callbacks.push(this.node);
},
node: function(root) {
- var filename, link, node, resolution, size, unit, _, _ref;
+ var filename, link, node, regexp, resolution, size, type, unit, _, _ref;
if (root.className === 'inline' || !(node = $('.filesize', root))) return;
- FileInfo.type = node.childElementCount === 2 ? 0 : 1;
- _ref = node.innerHTML.match(FileInfo.regexp[FileInfo.type]), _ = _ref[0], link = _ref[1], size = _ref[2], unit = _ref[3], resolution = _ref[4], filename = _ref[5];
+ type = node.childElementCount === 2 ? 0 : 1;
+ regexp = [/File:\s()-\((?:Spoiler Image,\s)?([\d\.]+)\s([BKM]{1,2}),\s(\d+x\d+|PDF),\s/, /File:\s()-\((?:Spoiler Image,\s)?([\d\.]+)\s([BKM]{1,2}),\s(\d+x\d+|PDF)\)/][type];
+ _ref = node.innerHTML.match(regexp), _ = _ref[0], link = _ref[1], size = _ref[2], unit = _ref[3], resolution = _ref[4], filename = _ref[5];
FileInfo.data = {
link: link,
size: size,
unit: unit,
resolution: resolution,
- filename: filename
+ filename: filename,
+ type: type
};
- return node.innerHTML = FileInfo.funks[FileInfo.type](FileInfo);
+ return node.innerHTML = FileInfo.funks[type](FileInfo);
},
setFormats: function() {
- var code, i, _results;
- _results = [];
+ var code, format, funks, i, param;
+ funks = [];
for (i = 0; i <= 1; i++) {
- code = conf[FileInfo.conf[i]].replace(FileInfo.param[i], function(s, c) {
+ format = conf[['fileInfoR', 'fileInfoT'][i]];
+ param = [/%([BKlLMnNrs])/g, /%([BKlMrs])/g][i];
+ code = format.replace(param, function(s, c) {
if (c in FileInfo.formatters) {
- return "' + FileInfo.formatters." + c + "() + '";
+ return "' + f.formatters." + c + "() + '";
} else {
return s;
}
});
- _results.push(Function('FileInfo', "return '" + code + "'"));
+ funks.push(Function('f', "return '" + code + "'"));
}
- return _results;
+ return this.funks = funks;
},
convertUnit: function(unitT) {
var i, size, unitF, units;
- size = FileInfo.data.size;
- unitF = FileInfo.data.unit;
+ size = this.data.size;
+ unitF = this.data.unit;
if (unitF !== unitT) {
units = ['B', 'KB', 'MB'];
i = units.indexOf(unitF) - units.indexOf(unitT);
@@ -2986,9 +2992,6 @@
}
return "" + size + " " + unitT;
},
- conf: ['fileInfoR', 'fileInfoT'],
- param: [/%([BKlLMnNrs])/g, /%([BKlMrs])/g],
- regexp: [/File:\s()-\((?:Spoiler Image,\s)?([\d\.]+)\s([BKM]{1,2}),\s(\d+x\d+|PDF),\s/, /File:\s()-\((?:Spoiler Image,\s)?([\d\.]+)\s([BKM]{1,2}),\s(\d+x\d+|PDF)\)/],
formatters: {
B: function() {
return FileInfo.convertUnit('B');
@@ -2996,9 +2999,15 @@
K: function() {
return FileInfo.convertUnit('KB');
},
+ M: function() {
+ return FileInfo.convertUnit('MB');
+ },
+ s: function() {
+ return "" + FileInfo.data.size + " " + FileInfo.data.unit;
+ },
l: function() {
- if (FileInfo.type === 0) {
- return FileInfo.data.link.replace(/>\d+\.\w+, '>' + FileInfo.formatters.n() + '<');
+ if (FileInfo.data.type === 0) {
+ return FileInfo.data.link.replace(/>\d+\.\w+, '>' + this.n() + '<');
} else {
return FileInfo.data.link;
}
@@ -3006,13 +3015,10 @@
L: function() {
return FileInfo.data.link.replace(/>\d+\.\w+, '>' + FileInfo.data.filename + '<');
},
- M: function() {
- return FileInfo.convertUnit('MB');
- },
n: function() {
var ext;
if ((ext = FileInfo.data.filename.lastIndexOf('.')) > 38) {
- return '' + FileInfo.data.filename + '' + FileInfo.data.filename.substr(0, 32) + ' (...)' + FileInfo.data.filename.substr(ext) + '';
+ return "" + FileInfo.data.filename + "" + (FileInfo.data.filename.substr(0, 32)) + "(...)" + (FileInfo.data.filename.substr(ext)) + "";
} else {
return FileInfo.data.filename;
}
@@ -3022,9 +3028,6 @@
},
r: function() {
return FileInfo.data.resolution;
- },
- s: function() {
- return "" + FileInfo.data.size + " " + FileInfo.data.unit;
}
}
};
diff --git a/script.coffee b/script.coffee
index 1d21f7489..2cf4239a4 100644
--- a/script.coffee
+++ b/script.coffee
@@ -1904,15 +1904,16 @@ options =
backlink: ->
$.id('backlinkPreview').textContent = conf['backlink'].replace /%id/, '123456789'
fileInfo: ->
- FileInfo.type = if @name is 'fileInfoR' then 0 else 1
+ type = if @name is 'fileInfoR' then 0 else 1
FileInfo.data =
- link : '1329791824.png'
- size : 996
- unit : 'KB'
+ link: '1329791824.png'
+ size: 996
+ unit: 'KB'
resolution: '1366x768'
- filename : 'Untitled.png'
- FileInfo.funks = FileInfo.setFormats()
- $.id("#{@name}Preview").innerHTML = FileInfo.funks[FileInfo.type] FileInfo
+ filename: 'Untitled.png'
+ type: type
+ FileInfo.setFormats()
+ $.id("#{@name}Preview").innerHTML = FileInfo.funks[type] FileInfo
favicon: ->
Favicon.switch()
unread.update true
@@ -2398,31 +2399,40 @@ Time =
FileInfo =
init: ->
return if g.BOARD is 'f'
- FileInfo.funks = FileInfo.setFormats()
+ @setFormats()
g.callbacks.push @node
node: (root) ->
return if root.className is 'inline' or not node = $ '.filesize', root
- FileInfo.type = if node.childElementCount is 2 then 0 else 1
+ type = if node.childElementCount is 2 then 0 else 1
+ regexp = [
+ /File:\s()-\((?:Spoiler Image,\s)?([\d\.]+)\s([BKM]{1,2}),\s(\d+x\d+|PDF),\s/
+ /File:\s()-\((?:Spoiler Image,\s)?([\d\.]+)\s([BKM]{1,2}),\s(\d+x\d+|PDF)\)/
+ ][type]
[_, link, size, unit, resolution, filename] =
- node.innerHTML.match FileInfo.regexp[FileInfo.type]
+ node.innerHTML.match regexp
FileInfo.data =
link: link
size: size
unit: unit
resolution: resolution
filename: filename
- node.innerHTML = FileInfo.funks[FileInfo.type] FileInfo
+ type: type
+ node.innerHTML = FileInfo.funks[type] FileInfo
setFormats: ->
+ funks = []
for i in [0..1]
- code = conf[FileInfo.conf[i]].replace FileInfo.param[i], (s, c) ->
+ format = conf[['fileInfoR', 'fileInfoT'][i]]
+ param = [/%([BKlLMnNrs])/g, /%([BKlMrs])/g][i]
+ code = format.replace param, (s, c) ->
if c of FileInfo.formatters
- "' + FileInfo.formatters.#{c}() + '"
+ "' + f.formatters.#{c}() + '"
else
s
- Function 'FileInfo', "return '#{code}'"
+ funks.push Function 'f', "return '#{code}'"
+ @funks = funks
convertUnit: (unitT) ->
- size = FileInfo.data.size
- unitF = FileInfo.data.unit
+ size = @data.size
+ unitF = @data.unit
if unitF isnt unitT
units = ['B', 'KB', 'MB']
i = units.indexOf(unitF) - units.indexOf unitT
@@ -2434,36 +2444,24 @@ FileInfo =
if size < 1 and size.toString().length > size.toFixed(2).length
size = size.toFixed 2
"#{size} #{unitT}"
- conf: [
- 'fileInfoR'
- 'fileInfoT'
- ]
- param: [
- /%([BKlLMnNrs])/g
- /%([BKlMrs])/g
- ]
- regexp: [
- /File:\s()-\((?:Spoiler Image,\s)?([\d\.]+)\s([BKM]{1,2}),\s(\d+x\d+|PDF),\s/
- /File:\s()-\((?:Spoiler Image,\s)?([\d\.]+)\s([BKM]{1,2}),\s(\d+x\d+|PDF)\)/
- ]
formatters:
B: -> FileInfo.convertUnit 'B'
K: -> FileInfo.convertUnit 'KB'
+ M: -> FileInfo.convertUnit 'MB'
+ s: -> "#{FileInfo.data.size} #{FileInfo.data.unit}"
l: ->
- if FileInfo.type is 0
- FileInfo.data.link.replace />\d+\.\w+, '>' + FileInfo.formatters.n() + '<'
+ if FileInfo.data.type is 0
+ FileInfo.data.link.replace />\d+\.\w+, '>' + @n() + '<'
else
FileInfo.data.link
L: -> FileInfo.data.link.replace />\d+\.\w+, '>' + FileInfo.data.filename + '<'
- M: -> FileInfo.convertUnit 'MB'
n: ->
if (ext = FileInfo.data.filename.lastIndexOf '.') > 38
- '' + FileInfo.data.filename + '' + FileInfo.data.filename.substr(0, 32) + ' (...)' + FileInfo.data.filename.substr(ext) + ''
+ "#{FileInfo.data.filename}#{FileInfo.data.filename.substr 0, 32}(...)#{FileInfo.data.filename.substr ext}"
else
FileInfo.data.filename
N: -> FileInfo.data.filename
r: -> FileInfo.data.resolution
- s: -> "#{FileInfo.data.size} #{FileInfo.data.unit}"
getTitle = (thread) ->
el = $ '.filetitle', thread