Software zum Installieren eines Smart-Mirror Frameworks , zum Nutzen von hochschulrelevanten Informationen, auf einem Raspberry-Pi.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

index.js 2.5KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. // @ts-nocheck
  2. 'use strict';
  3. const _ = require('lodash');
  4. const atRuleParamIndex = require('../../utils/atRuleParamIndex');
  5. const declarationValueIndex = require('../../utils/declarationValueIndex');
  6. const getUnitFromValueNode = require('../../utils/getUnitFromValueNode');
  7. const optionsMatches = require('../../utils/optionsMatches');
  8. const report = require('../../utils/report');
  9. const ruleMessages = require('../../utils/ruleMessages');
  10. const validateObjectWithArrayProps = require('../../utils/validateObjectWithArrayProps');
  11. const validateOptions = require('../../utils/validateOptions');
  12. const valueParser = require('postcss-value-parser');
  13. const ruleName = 'unit-whitelist';
  14. const messages = ruleMessages(ruleName, {
  15. rejected: (unit) => `Unexpected unit "${unit}"`,
  16. });
  17. function rule(listInput, options) {
  18. const list = [].concat(listInput);
  19. return (root, result) => {
  20. const validOptions = validateOptions(
  21. result,
  22. ruleName,
  23. {
  24. actual: list,
  25. possible: [_.isString],
  26. },
  27. {
  28. optional: true,
  29. actual: options,
  30. possible: {
  31. ignoreProperties: validateObjectWithArrayProps([_.isString, _.isRegExp]),
  32. },
  33. },
  34. );
  35. if (!validOptions) {
  36. return;
  37. }
  38. result.warn(`'${ruleName}' has been deprecated. Instead use 'unit-allowed-list'.`, {
  39. stylelintType: 'deprecation',
  40. stylelintReference: `https://github.com/stylelint/stylelint/blob/13.7.0/lib/rules/${ruleName}/README.md`,
  41. });
  42. function check(node, value, getIndex) {
  43. // make sure multiplication operations (*) are divided - not handled
  44. // by postcss-value-parser
  45. value = value.replace(/\*/g, ',');
  46. valueParser(value).walk((valueNode) => {
  47. // Ignore wrong units within `url` function
  48. if (valueNode.type === 'function' && valueNode.value.toLowerCase() === 'url') {
  49. return false;
  50. }
  51. const unit = getUnitFromValueNode(valueNode);
  52. if (!unit || (unit && list.includes(unit.toLowerCase()))) {
  53. return;
  54. }
  55. if (options && optionsMatches(options.ignoreProperties, unit.toLowerCase(), node.prop)) {
  56. return;
  57. }
  58. report({
  59. index: getIndex(node) + valueNode.sourceIndex,
  60. message: messages.rejected(unit),
  61. node,
  62. result,
  63. ruleName,
  64. });
  65. });
  66. }
  67. root.walkAtRules(/^media$/i, (atRule) => check(atRule, atRule.params, atRuleParamIndex));
  68. root.walkDecls((decl) => check(decl, decl.value, declarationValueIndex));
  69. };
  70. }
  71. rule.primaryOptionArray = true;
  72. rule.ruleName = ruleName;
  73. rule.messages = messages;
  74. rule.meta = { deprecated: true };
  75. module.exports = rule;