textOutput()

in src/linter.js [157:261]


  textOutput(_terminalWidth = terminalWidth) {
    const maxColumns = _terminalWidth();
    const out = [];

    out.push(i18n._('Validation Summary:'));
    out.push('');
    out.push(
      columnify(this.output.summary, {
        showHeaders: false,
        minWidth: 15,
        maxLineWidth: maxColumns,
      })
    );
    out.push('');

    constants.MESSAGE_TYPES.forEach((type) => {
      const messageType = `${type}s`;
      if (this.output[messageType].length) {
        const outputConfig = {
          code: {
            dataTransform: (value) => {
              return this.colorize(type)(value);
            },
            headingTransform: () => {
              return i18n._('Code');
            },
            maxWidth: 35,
          },
          message: {
            headingTransform: () => {
              return i18n._('Message');
            },
            maxWidth: (maxColumns - 35) * 0.25,
          },
          description: {
            headingTransform: () => {
              return i18n._('Description');
            },
            maxWidth: (maxColumns - 35) * 0.5,
          },
          file: {
            headingTransform: () => {
              return i18n._('File');
            },
            maxWidth: (maxColumns - 35) * 0.25,
          },
          line: {
            headingTransform: () => {
              return i18n._('Line');
            },
            maxWidth: 6,
          },
          column: {
            headingTransform: () => {
              return i18n._('Column');
            },
            maxWidth: 6,
          },
        };

        const outputColumns = [
          'code',
          'message',
          'description',
          'file',
          'line',
          'column',
        ];

        // If the terminal is this small we cave and don't size things
        // contextually anymore.
        if (maxColumns < 60) {
          delete outputColumns[outputColumns.indexOf('column')];
          delete outputConfig.column;
          delete outputColumns[outputColumns.indexOf('description')];
          delete outputConfig.description;
          delete outputColumns[outputColumns.indexOf('line')];
          delete outputConfig.line;

          outputConfig.message.maxWidth = 15;
          outputConfig.file.maxWidth = 15;
        } else if (maxColumns < 78) {
          delete outputColumns[outputColumns.indexOf('description')];
          delete outputConfig.description;

          outputConfig.message.maxWidth = (maxColumns - 47) * 0.5;
          outputConfig.file.maxWidth = (maxColumns - 35) * 0.5;
        }

        out.push(`${messageType.toUpperCase()}:`);
        out.push('');
        out.push(
          columnify(this.output[messageType], {
            maxWidth: 35,
            columns: outputColumns,
            columnSplitter: '   ',
            config: outputConfig,
            maxLineWidth: maxColumns,
          })
        );
      }
    });

    return out.join('\n');
  }