update files

This commit is contained in:
nuintun
2015-12-03 15:53:46 +08:00
parent 53bce3cfc8
commit 5866d94577
3 changed files with 118 additions and 49 deletions

View File

@@ -1019,6 +1019,41 @@ AnsiTerminal.prototype.reset = function (){
this.row_wrap = false;
};
/**
* getStyles
* @returns {*|Array}
*/
AnsiTerminal.prototype.getStyles = function (){
var i, j, cols, node, styleBuffer;
var rows = this.screen.buffer.length;
var stylesBuffer = this.stylesBuffer || [];
stylesBuffer = stylesBuffer.slice(0, rows);
for (i = 0; i < rows; ++i) {
stylesBuffer[i] = stylesBuffer[i] || [];
cols = this.screen.buffer[i].cells.length;
stylesBuffer[i] = stylesBuffer[i].slice(0, cols);
for (j = 0; j < cols; ++j) {
styleBuffer = stylesBuffer[i][j];
node = this.screen.buffer[i].cells[j];
if (!styleBuffer || styleBuffer.value !== node.value || styleBuffer.attr !== node.attr) {
styleBuffer = styles(node);
styleBuffer.attr = node.attr;
styleBuffer.value = node.value;
stylesBuffer[i][j] = styleBuffer;
}
}
}
this.stylesBuffer = stylesBuffer;
return stylesBuffer;
};
/**
* toSting
* @param [type]
@@ -1034,25 +1069,16 @@ AnsiTerminal.prototype.toString = function (type){
var style = '';
var attrCache;
var styleBuffer;
var stylesBuffer = this.stylesBuffer || [];
stylesBuffer = stylesBuffer.slice(0, rows);
var stylesBuffer = this.getStyles();
for (i = 0; i < rows; ++i) {
stylesBuffer[i] = stylesBuffer[i] || [];
cols = this.screen.buffer[i].cells.length;
line = '<div>';
for (j = 0; j < cols; ++j) {
node = this.screen.buffer[i].cells[j];
styleBuffer = stylesBuffer[i][j] || styles(node);
if (styleBuffer.value !== node.value || styleBuffer.attr !== node.attr) {
styleBuffer = styles(node);
styleBuffer.attr = node.attr;
styleBuffer.value = node.value;
}
styleBuffer = stylesBuffer[i][j];
if (j === 0) {
style = htmlStyle(styleBuffer);
@@ -1078,11 +1104,7 @@ AnsiTerminal.prototype.toString = function (type){
} else {
s += '<div>&nbsp;</div>';
}
stylesBuffer[i][j] = styleBuffer;
}
this.stylesBuffer = stylesBuffer;
} else {
for (i = 0; i < rows; ++i) {
// FIXME: quick and dirty fill up from left