All files / src/html warnings.ts

70% Statements 7/10
50% Branches 1/2
66.66% Functions 2/3
70% Lines 7/10

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34                        16x 16x                     9x   4x 4x 4x   4x      
import * as logger from '../utils/logger.js';
import { MbNode } from '../utils/node.js';
 
/**
 * Check and warns if element has conflicting attributes.
 * Note that attirbutes in `attrsConflictingWith` are not in conflict with each other,
 * but only towards `attribute`
 * @param node Root element to check
 * @param attribute An attribute that is conflicting with other attributes
 * @param attrsConflictingWith The attributes conflicting with `attribute`
 */
function _warnConflictingAttributes(node: MbNode, attribute: string, attrsConflictingWith: string[]) {
  if (!(attribute in node.attribs)) {
    return;
  }
 
  attrsConflictingWith.forEach((conflictingAttr) => {
    Iif (conflictingAttr in node.attribs) {
      logger.warn(`Usage of conflicting ${node.name} attributes: `
          + `'${attribute}' with '${conflictingAttr}'`);
    }
  });
}
 
export const warnConflictingAtributesMap: { [attr: string]: (nd: MbNode) => void } = {
  box: (node) => {
    _warnConflictingAttributes(node, 'light', ['seamless']);
    _warnConflictingAttributes(node, 'no-background', ['background-color', 'seamless']);
    _warnConflictingAttributes(node, 'no-border',
                               ['border-color', 'border-left-color', 'seamless']);
    _warnConflictingAttributes(node, 'no-icon', ['icon']);
  },
};