Skip to content

Commit 2c42832

Browse files
committed
Switch to templates, improve search for return values.
1 parent f33e72e commit 2c42832

File tree

1 file changed

+65
-39
lines changed

1 file changed

+65
-39
lines changed

src/ecma-debugger/templates.js

Lines changed: 65 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -314,6 +314,7 @@
314314

315315
this.return_value = function(retval, search_term)
316316
{
317+
var STRING_MAX_VALUE_LENGTH = 30;
317318
// TODO: move constants
318319
var UNDEFINED = 0;
319320
var NULL = 1;
@@ -342,19 +343,24 @@
342343
names[PLUS_INFINITY] = "Infinity";
343344
names[MINUS_INFINITY] = "-Infinity";
344345

345-
var value_string = "";
346+
var search_re = new RegExp(search_term, "ig")
347+
var value_template = [];
346348
var value = "";
347349
var type = types[retval.value[0]];
348350
switch (retval.value[0])
349351
{
350352
case UNDEFINED:
351353
case NULL:
352-
if (type.contains(search_term))
353-
{
354-
value_string =
355-
"<item>" +
356-
"<value class='" + type + "'>" + type + "</value>" +
357-
"</item>";
354+
if (search_re.test(type))
355+
{
356+
value_template.push(
357+
["item",
358+
["value",
359+
type,
360+
"class", type
361+
]
362+
]
363+
);
358364
}
359365
break;
360366

@@ -364,51 +370,69 @@
364370
case PLUS_INFINITY:
365371
case MINUS_INFINITY:
366372
value = names[retval.value[0]];
367-
if (value.contains(search_term))
373+
if (search_re.test(value))
368374
{
369-
value_string =
370-
"<item>" +
371-
"<value class='" + type + "'>" + value + "</value>" +
372-
"</item>"
375+
value_template.push(
376+
["item",
377+
["value",
378+
value
379+
],
380+
"class", type
381+
]
382+
);
373383
}
374384
break;
375385

376386
case NUMBER:
377387
value = String(retval.value[1]);
378-
if (value.contains(search_term))
379-
{
380-
value_string =
381-
"<item>" +
382-
"<value class='" + type + "'>" + value + "</value>" +
383-
"</item>"
388+
if (search_re.test(value))
389+
{
390+
value_template.push(
391+
["item",
392+
["value",
393+
value,
394+
"class", type
395+
]
396+
]
397+
);
384398
}
385399
break;
386400

387401
case STRING:
388-
var MAX_VALUE_LENGTH = 30;
389-
var value = retval.value[2];
390-
if (value.contains(search_term))
402+
value = retval.value[2];
403+
if (search_re.test(value))
391404
{
392-
var short_value = value.length > MAX_VALUE_LENGTH
393-
? value.slice(0, MAX_VALUE_LENGTH) + "…"
405+
var short_value = value.length > STRING_MAX_VALUE_LENGTH
406+
? value.slice(0, STRING_MAX_VALUE_LENGTH) + "…"
394407
: "";
395408
value = helpers.escapeTextHtml(value).replace(/"/g, "&#39;");
396409
if (short_value)
397410
{
398-
value_string =
399-
"<item>" +
400-
"<input type='button' handler='expand-value' class='folder-key'/>" +
401-
"<value class='" + type + "' data-value='\"" + value + "\"'>" +
402-
"\"" + helpers.escapeTextHtml(short_value) + "\"" +
403-
"</value>" +
404-
"</item>"
411+
value_template.push(
412+
["item",
413+
["input",
414+
"type", "button",
415+
"handler", "expand-value",
416+
"class", "folder-key"
417+
],
418+
["value",
419+
"\"" + helpers.escapeTextHtml(short_value) + "\"",
420+
"class", type,
421+
"data-value", "\"" + value + "\"",
422+
]
423+
]
424+
);
405425
}
406426
else
407427
{
408-
value_string =
409-
"<item>" +
410-
"<value class='" + type + "'>\"" + value + "\"</value>" +
411-
"</item>"
428+
value_template.push(
429+
["item",
430+
["value",
431+
"\"" + value + "\"",
432+
"class", type
433+
]
434+
]
435+
);
412436
}
413437
}
414438
break;
@@ -418,7 +442,9 @@
418442
var name = object[4/*CLASS_NAME*/] === "Function" && !object[5]
419443
? ui_strings.S_ANONYMOUS_FUNCTION_NAME
420444
: object[5];
421-
value_string = window.templates.inspected_js_object(retval.model, true, null, search_term);
445+
value = window.templates.inspected_js_object(retval.model, true, null, search_term);
446+
if (value !== "")
447+
value_template = [value];
422448
break;
423449
}
424450

@@ -436,11 +462,11 @@
436462
object[0/*OBJECT_ID*/],
437463
retval.function_from[5] || ui_strings.S_ANONYMOUS_FUNCTION_NAME,
438464
object[4/*CLASS_NAME*/]);
439-
var func_search_term = (value_string !== "") ? null : search_term;
465+
var func_search_term = (value_template.length !== 0) ? null : search_term;
440466
var func = window.templates.inspected_js_object(model, true, null, func_search_term);
441467

442468
// If there is no function or value, don't show anything
443-
if (func === "" && value_string === "")
469+
if (func === "" && value_template.length === 0)
444470
return [];
445471

446472
return [
@@ -457,7 +483,7 @@
457483
[func],
458484
"class", "return-function-from"
459485
],
460-
(value_string
486+
(value_template.length
461487
? ["div",
462488
["span",
463489
"↳",
@@ -467,7 +493,7 @@
467493
"data-script-id", String(retval.position_to[0]),
468494
"data-script-line", String(retval.position_to[1])
469495
],
470-
[value_string],
496+
value_template,
471497
"class", "return-value"
472498
]
473499
: [])

0 commit comments

Comments
 (0)