add setText and getText methods. expose element and node.
This commit is contained in:
parent
dadf185a87
commit
8ebbbbac65
|
@ -372,6 +372,10 @@ parameter must be a string.
|
|||
and tags will be replaced with SGR codes (if enabled).
|
||||
- **getContent()** - return content, slightly different from `el.content`.
|
||||
assume the above formatting.
|
||||
- **setText(text)** - similar to `setContent`, but ignore tags and remove escape
|
||||
codes.
|
||||
- **getText()** - similar to `getContent`, but return content with tags and
|
||||
escape codes removed.
|
||||
- **insertLine(i, lines)** - insert a line into the box's content.
|
||||
- **deleteLine(i)** - delete a line from the box's content.
|
||||
- **getLine(i)** - get a line from the box's content.
|
||||
|
|
|
@ -1948,17 +1948,27 @@ Element.prototype.focus = function() {
|
|||
return this.screen.focused = this;
|
||||
};
|
||||
|
||||
Element.prototype.setContent = function(content, noClear) {
|
||||
Element.prototype.setContent = function(content, noClear, noTags) {
|
||||
if (!noClear) this.clearPos();
|
||||
this.content = content || '';
|
||||
this.parseContent();
|
||||
this.parseContent(noTags);
|
||||
};
|
||||
|
||||
Element.prototype.getContent = function() {
|
||||
return this._clines.fake.join('\n');
|
||||
};
|
||||
|
||||
Element.prototype.parseContent = function() {
|
||||
Element.prototype.setText = function(content, noClear) {
|
||||
content = content || '';
|
||||
content = content.replace(/\x1b\[[\d;]*m/g, '');
|
||||
return this.setContent(content, noClear, true);
|
||||
};
|
||||
|
||||
Element.prototype.getText = function() {
|
||||
return this.getContent().replace(/\x1b\[[\d;]*m/g, '');
|
||||
};
|
||||
|
||||
Element.prototype.parseContent = function(noTags) {
|
||||
if (this.detached) return false;
|
||||
|
||||
var width = this.width - this.iwidth;
|
||||
|
@ -1966,13 +1976,18 @@ Element.prototype.parseContent = function() {
|
|||
|| this._clines.width !== width
|
||||
|| this._clines.content !== this.content) {
|
||||
var content = this.content;
|
||||
|
||||
content = content
|
||||
.replace(/[\x00-\x08\x0b-\x0c\x0e-\x1a\x1c-\x1f\x7f]/g, '')
|
||||
.replace(/\x1b(?!\[[\d;]*m)/g, '')
|
||||
.replace(/\r\n|\r/g, '\n')
|
||||
.replace(/\t/g, this.screen.tabc)
|
||||
.replace(dwidthChars, '?');
|
||||
content = this._parseTags(content);
|
||||
|
||||
if (!noTags) {
|
||||
content = this._parseTags(content);
|
||||
}
|
||||
|
||||
this._clines = this._wrapContent(content, width);
|
||||
this._clines.width = width;
|
||||
this._clines.content = this.content;
|
||||
|
@ -1982,8 +1997,10 @@ Element.prototype.parseContent = function() {
|
|||
this._clines.ci.push(total);
|
||||
return total + line.length + 1;
|
||||
}.bind(this), 0);
|
||||
|
||||
this._pcontent = this._clines.join('\n');
|
||||
this.emit('parsed content');
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -5781,7 +5798,9 @@ var dwidthChars = new RegExp('(['
|
|||
* Expose
|
||||
*/
|
||||
|
||||
exports.Node = exports.node = Node;
|
||||
exports.Screen = exports.screen = Screen;
|
||||
exports.Element = exports.element = Element;
|
||||
exports.Box = exports.box = Box;
|
||||
exports.Text = exports.text = Text;
|
||||
exports.Line = exports.line = Line;
|
||||
|
|
Loading…
Reference in New Issue