diff options
Diffstat (limited to 'js/clipboard.js')
| -rw-r--r-- | js/clipboard.js | 40 |
1 files changed, 38 insertions, 2 deletions
diff --git a/js/clipboard.js b/js/clipboard.js index d2d1592..b20528a 100644 --- a/js/clipboard.js +++ b/js/clipboard.js @@ -9,7 +9,7 @@ var clipboard = (function () { import_ascii.addEventListener("change", exports.setFormat("ascii")) import_irssi.addEventListener("change", exports.setFormat("irssi")) import_mirc.addEventListener("change", exports.setFormat("mirc")) - import_button.addEventListener("click", exports.import_text) + import_button.addEventListener("click", exports.import_colorcode) import_html.addEventListener("click", exports.import_html) export_button.addEventListener("click", exports.export_data) import_textarea.addEventListener("focus", exports.focus) @@ -112,10 +112,46 @@ var clipboard = (function () { }) }) }, + + import_colorcode: function () { + var data = import_textarea.value + + var irssi_style_regex = /^\s*\/exec -out printf "/; + + // turn irssi style into mirc style + if (data.match(irssi_style_regex)){ + data = data.replace(/\\x03/gm, '\x03') + data = data.replace(/\\n/gm, '\n') + data = data.replace(irssi_style_regex, '') + data = data.replace(/"\s*$/, '') + } + + // not a colorcode + if (!data.match(/\x03/)) + return exports.import_text(); + + var json = colorcode_to_json(data) + + canvas.resize(json.w, json.h) + canvas.clear() + + for (var y = 0, line; line = json.lines[y]; y++){ + var row = canvas.aa[y] + for (var x = 0, char; char = line[x]; x++){ + var lex = row[x] + lex.char = String.fromCharCode(char.value) + lex.fg = char.fg + lex.bg = char.bg + lex.opacity = 1 + lex.build() + } + } + + }, import_text: function () { var data = import_textarea.value - lines = data.split("\n") + var lines = data.split("\n") var width = lines.reduce(function(a,b){ console.log(a,b); return Math.max(a, b.length) }, 0) var height = lines.length if (width > 200) { |
