util.inspect-如果数字为0,则将字符串设为红色

时间:2018-10-12 20:38:10

标签: node.js

我有这个对象:

{
  services:
   { 'account-service': 1,
     'activity-service': 1,
     'cancellation-service': 1,
     'chat-service': 1,
     'integrator-service': 1,
     'lh-app': 1,
     'notification-service': 1,
     'patient-web-app': 0,   // make this line red if 0
     'reminder-service': 1,
     'rest-service': 1,
     'shortener-service': 1,
     'socket-service': 1,
     'tunnel-service': 1,
     'web-app': 1 } }}

如果数字之一为0,我想用红色代替黄色。任何人都知道创建自定义util.inspect函数的方法可以做到这一点吗?

enter image description here

2 个答案:

答案 0 :(得分:2)

当您将JSON.stringify的{​​{1}}选项设置为true时,util.inspect的输出。例如;

colors

它显示了所应用的ANSI颜色/格式代码。

鉴于您的console.log('%s', JSON.stringify(util.inspect(obj, { colors: true }))); 属性的值设置为patient-web-app,您将看到其格式为:

  

0

考虑使用正则表达式执行替换。例如:

\u001b[32m'patient-web-app'\u001b[39m: \u001b[33m0\u001b[39m,\n

打印

enter image description here

答案 1 :(得分:0)

您可以使用util.inspect.custom符号返回自定义字符串,该字符串将在调用inspect时按原样记录到控制台。

Here is the official documentation

示例:自定义console.table渲染

console.table实际上在要渲染的每个单元格值上调用inspect。如果要在单元格上进行自定义渲染,只需使其具有[util.inspect.custom]属性的对象即可返回自定义字符串:

import colors from 'colors/safe';  // i want to use custom colors

// ...

// utilty function to make any result render as-is
function overrideInspect(result) {
  return {
    [util.inspect.custom](depth, options) {
      return result;
    }
  };
}


function renderUsers(users) {
  const table = [];
  for (const user of users) {
    // ... get all our data ...
    let modInfo = '';
    if (role >= ModeratorRole) {
      modInfo = colors.yellow(' M');
    }

    // add to table
    table.push({
      name: overrideInspect(displayName + modInfo), // append yellow `M` to white name if it's a mod
      email,
      signup,
      stats,
      uid
    });
  }

  // render table
  console.table(table, [
    'name',
    'email',
    'signup',
    'stats',
    'uid'
  ]);
}