Skip to content

Commit bb78070

Browse files
committed
improve echo of custom object #526
1 parent 5f58cb0 commit bb78070

6 files changed

+129
-57
lines changed

js/jquery.terminal-2.8.0.js

+42-18
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
* emoji regex v7.0.1 by Mathias Bynens
4040
* MIT license
4141
*
42-
* Date: Fri, 25 Oct 2019 10:58:14 +0000
42+
* Date: Fri, 25 Oct 2019 15:24:00 +0000
4343
*/
4444
/* global location, setTimeout, window, global, sprintf, setImmediate,
4545
IntersectionObserver, ResizeObserver, module, require, define,
@@ -4058,7 +4058,7 @@
40584058
// -------------------------------------------------------------------------
40594059
$.terminal = {
40604060
version: 'DEV',
4061-
date: 'Fri, 25 Oct 2019 10:58:14 +0000',
4061+
date: 'Fri, 25 Oct 2019 15:24:00 +0000',
40624062
// colors from https://www.w3.org/wiki/CSS/Properties/color/keywords
40634063
color_names: [
40644064
'transparent', 'currentcolor', 'black', 'silver', 'gray', 'white',
@@ -5849,9 +5849,44 @@
58495849
}
58505850
}
58515851
// ---------------------------------------------------------------------
5852+
// :: helper function that use option to render objects
5853+
// ---------------------------------------------------------------------
5854+
function preprocess_value(value) {
5855+
if (is_function(settings.renderHandler)) {
5856+
var ret = settings.renderHandler.call(self, value, self);
5857+
if (ret === false) {
5858+
return false;
5859+
}
5860+
if (typeof ret === 'string') {
5861+
return ret;
5862+
} else {
5863+
return value;
5864+
}
5865+
}
5866+
return value;
5867+
}
5868+
// ---------------------------------------------------------------------
5869+
// :: helper function that render DOM nodes and jQuery objects
5870+
// ---------------------------------------------------------------------
5871+
function render(value) {
5872+
if (value instanceof $.fn.init || value instanceof Element) {
5873+
self.echo('<div class="terminal-render-item"/>', {
5874+
raw: true,
5875+
finalize: function(div) {
5876+
div.find('.terminal-render-item').replaceWith(value);
5877+
}
5878+
});
5879+
return true;
5880+
}
5881+
}
5882+
// ---------------------------------------------------------------------
58525883
// :: Display object on terminal
58535884
// ---------------------------------------------------------------------
58545885
function display_object(object) {
5886+
object = preprocess_value(object);
5887+
if (object === false) {
5888+
return;
5889+
}
58555890
if (typeof object === 'string') {
58565891
self.echo(object);
58575892
} else if (is_array(object)) {
@@ -8391,26 +8426,15 @@
83918426
} else {
83928427
value = '';
83938428
}
8394-
} else if (is_function(settings.renderHandler)) {
8395-
var ret = settings.renderHandler.call(self, arg, self);
8429+
} else {
8430+
var ret = preprocess_value(arg);
83968431
if (ret === false) {
83978432
return self;
83988433
}
8399-
if (typeof ret === 'string') {
8400-
value = ret;
8401-
} else {
8402-
value = arg;
8403-
}
8404-
} else {
8405-
value = arg;
8434+
value = ret;
84068435
}
8407-
if (value instanceof $.fn.init || value instanceof Element) {
8408-
return self.echo('<div class="terminal-render-item"/>', {
8409-
raw: true,
8410-
finalize: function(div) {
8411-
div.find('.terminal-render-item').replaceWith(value);
8412-
}
8413-
});
8436+
if (render(value)) {
8437+
return self;
84148438
}
84158439
process_line({
84168440
string: value,

js/jquery.terminal-2.8.0.min.js

+2-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

js/jquery.terminal-src.js

+40-16
Original file line numberDiff line numberDiff line change
@@ -5849,9 +5849,44 @@
58495849
}
58505850
}
58515851
// ---------------------------------------------------------------------
5852+
// :: helper function that use option to render objects
5853+
// ---------------------------------------------------------------------
5854+
function preprocess_value(value) {
5855+
if (is_function(settings.renderHandler)) {
5856+
var ret = settings.renderHandler.call(self, value, self);
5857+
if (ret === false) {
5858+
return false;
5859+
}
5860+
if (typeof ret === 'string') {
5861+
return ret;
5862+
} else {
5863+
return value;
5864+
}
5865+
}
5866+
return value;
5867+
}
5868+
// ---------------------------------------------------------------------
5869+
// :: helper function that render DOM nodes and jQuery objects
5870+
// ---------------------------------------------------------------------
5871+
function render(value) {
5872+
if (value instanceof $.fn.init || value instanceof Element) {
5873+
self.echo('<div class="terminal-render-item"/>', {
5874+
raw: true,
5875+
finalize: function(div) {
5876+
div.find('.terminal-render-item').replaceWith(value);
5877+
}
5878+
});
5879+
return true;
5880+
}
5881+
}
5882+
// ---------------------------------------------------------------------
58525883
// :: Display object on terminal
58535884
// ---------------------------------------------------------------------
58545885
function display_object(object) {
5886+
object = preprocess_value(object);
5887+
if (object === false) {
5888+
return;
5889+
}
58555890
if (typeof object === 'string') {
58565891
self.echo(object);
58575892
} else if (is_array(object)) {
@@ -8391,26 +8426,15 @@
83918426
} else {
83928427
value = '';
83938428
}
8394-
} else if (is_function(settings.renderHandler)) {
8395-
var ret = settings.renderHandler.call(self, arg, self);
8429+
} else {
8430+
var ret = preprocess_value(arg);
83968431
if (ret === false) {
83978432
return self;
83988433
}
8399-
if (typeof ret === 'string') {
8400-
value = ret;
8401-
} else {
8402-
value = arg;
8403-
}
8404-
} else {
8405-
value = arg;
8434+
value = ret;
84068435
}
8407-
if (value instanceof $.fn.init || value instanceof Element) {
8408-
return self.echo('<div class="terminal-render-item"/>', {
8409-
raw: true,
8410-
finalize: function(div) {
8411-
div.find('.terminal-render-item').replaceWith(value);
8412-
}
8413-
});
8436+
if (render(value)) {
8437+
return self;
84148438
}
84158439
process_line({
84168440
string: value,

js/jquery.terminal.js

+42-18
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
* emoji regex v7.0.1 by Mathias Bynens
4040
* MIT license
4141
*
42-
* Date: Fri, 25 Oct 2019 10:58:14 +0000
42+
* Date: Fri, 25 Oct 2019 15:24:00 +0000
4343
*/
4444
/* global location, setTimeout, window, global, sprintf, setImmediate,
4545
IntersectionObserver, ResizeObserver, module, require, define,
@@ -4058,7 +4058,7 @@
40584058
// -------------------------------------------------------------------------
40594059
$.terminal = {
40604060
version: 'DEV',
4061-
date: 'Fri, 25 Oct 2019 10:58:14 +0000',
4061+
date: 'Fri, 25 Oct 2019 15:24:00 +0000',
40624062
// colors from https://www.w3.org/wiki/CSS/Properties/color/keywords
40634063
color_names: [
40644064
'transparent', 'currentcolor', 'black', 'silver', 'gray', 'white',
@@ -5849,9 +5849,44 @@
58495849
}
58505850
}
58515851
// ---------------------------------------------------------------------
5852+
// :: helper function that use option to render objects
5853+
// ---------------------------------------------------------------------
5854+
function preprocess_value(value) {
5855+
if (is_function(settings.renderHandler)) {
5856+
var ret = settings.renderHandler.call(self, value, self);
5857+
if (ret === false) {
5858+
return false;
5859+
}
5860+
if (typeof ret === 'string') {
5861+
return ret;
5862+
} else {
5863+
return value;
5864+
}
5865+
}
5866+
return value;
5867+
}
5868+
// ---------------------------------------------------------------------
5869+
// :: helper function that render DOM nodes and jQuery objects
5870+
// ---------------------------------------------------------------------
5871+
function render(value) {
5872+
if (value instanceof $.fn.init || value instanceof Element) {
5873+
self.echo('<div class="terminal-render-item"/>', {
5874+
raw: true,
5875+
finalize: function(div) {
5876+
div.find('.terminal-render-item').replaceWith(value);
5877+
}
5878+
});
5879+
return true;
5880+
}
5881+
}
5882+
// ---------------------------------------------------------------------
58525883
// :: Display object on terminal
58535884
// ---------------------------------------------------------------------
58545885
function display_object(object) {
5886+
object = preprocess_value(object);
5887+
if (object === false) {
5888+
return;
5889+
}
58555890
if (typeof object === 'string') {
58565891
self.echo(object);
58575892
} else if (is_array(object)) {
@@ -8391,26 +8426,15 @@
83918426
} else {
83928427
value = '';
83938428
}
8394-
} else if (is_function(settings.renderHandler)) {
8395-
var ret = settings.renderHandler.call(self, arg, self);
8429+
} else {
8430+
var ret = preprocess_value(arg);
83968431
if (ret === false) {
83978432
return self;
83988433
}
8399-
if (typeof ret === 'string') {
8400-
value = ret;
8401-
} else {
8402-
value = arg;
8403-
}
8404-
} else {
8405-
value = arg;
8434+
value = ret;
84068435
}
8407-
if (value instanceof $.fn.init || value instanceof Element) {
8408-
return self.echo('<div class="terminal-render-item"/>', {
8409-
raw: true,
8410-
finalize: function(div) {
8411-
div.find('.terminal-render-item').replaceWith(value);
8412-
}
8413-
});
8436+
if (render(value)) {
8437+
return self;
84148438
}
84158439
process_line({
84168440
string: value,

js/jquery.terminal.min.js

+2-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

js/jquery.terminal.min.js.map

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)