|
|
|
@ -164,34 +164,51 @@ |
|
|
|
|
return text |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Handle unicode (i.e. Japanese/Chinese chars) |
|
|
|
|
function renderedLength(text) { |
|
|
|
|
regEx = /&#\d+;|./g |
|
|
|
|
regEx = /&#\d+;/g |
|
|
|
|
if (text.match(regEx) !== null) { |
|
|
|
|
return text.match(regEx).length |
|
|
|
|
} else { |
|
|
|
|
return text.match(/&#\d+;|./g).length |
|
|
|
|
} |
|
|
|
|
return text.length |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
function trimLine(text, width) { |
|
|
|
|
// If text has unicode char, a different trim is needed due to rendering |
|
|
|
|
// unicode characters like "面" as one "character". |
|
|
|
|
containsUnicode = text.match(/&#\d+;/) |
|
|
|
|
if (containsUnicode !== null) { |
|
|
|
|
chars = text.match(/&#\d+;|./g) |
|
|
|
|
numUnicodes = text.match(/&#\d+;/g).length |
|
|
|
|
chars.splice(-1, 1) // Remove "|" |
|
|
|
|
text = chars.join("") |
|
|
|
|
fudge = 0.69 // TODO: Fix this...non-monospaced fonts may kill me |
|
|
|
|
spacing = width - renderedLength(text) - (numUnicodes * fudge) |
|
|
|
|
if (spacing < 0) { |
|
|
|
|
spacing = 0 |
|
|
|
|
} |
|
|
|
|
text = text + " ".repeat(spacing) + "|" |
|
|
|
|
} else { |
|
|
|
|
if (text.length > width) { |
|
|
|
|
end = (width - text.length) |
|
|
|
|
start = width - 2 // Subtract 2 for " |" |
|
|
|
|
text = text.substring(end, start) + " |" |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
return text |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
function buildLine(width, text, prefix) { |
|
|
|
|
prefix = "|" + prefix |
|
|
|
|
|
|
|
|
|
// Subtract 2 for " |" |
|
|
|
|
spacing = (width - prefix.length - renderedLength(text) - 2) |
|
|
|
|
spacing = (width - prefix.length - text.length - 2) |
|
|
|
|
if(spacing < 0) { |
|
|
|
|
spacing = 0 |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
line = prefix + text + " ".repeat(spacing) + " |" |
|
|
|
|
|
|
|
|
|
// Trim line if too long |
|
|
|
|
if(line.length > width) { |
|
|
|
|
end = (width - line.length) |
|
|
|
|
start = width - 2 // Subtract 2 for " |" |
|
|
|
|
line = line.substring(end, start) + " |" |
|
|
|
|
} |
|
|
|
|
return line |
|
|
|
|
return trimLine(line, width) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
function buildDownloadLine(width, url) { |
|
|
|
|