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.2KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  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-allowed-list';
  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. function check(node, value, getIndex) {
  39. // make sure multiplication operations (*) are divided - not handled
  40. // by postcss-value-parser
  41. value = value.replace(/\*/g, ',');
  42. valueParser(value).walk((valueNode) => {
  43. // Ignore wrong units within `url` function
  44. if (valueNode.type === 'function' && valueNode.value.toLowerCase() === 'url') {
  45. return false;
  46. }
  47. const unit = getUnitFromValueNode(valueNode);
  48. if (!unit || (unit && list.includes(unit.toLowerCase()))) {
  49. return;
  50. }
  51. if (options && optionsMatches(options.ignoreProperties, unit.toLowerCase(), node.prop)) {
  52. return;
  53. }
  54. report({
  55. index: getIndex(node) + valueNode.sourceIndex,
  56. message: messages.rejected(unit),
  57. node,
  58. result,
  59. ruleName,
  60. });
  61. });
  62. }
  63. root.walkAtRules(/^media$/i, (atRule) => check(atRule, atRule.params, atRuleParamIndex));
  64. root.walkDecls((decl) => check(decl, decl.value, declarationValueIndex));
  65. };
  66. }
  67. rule.primaryOptionArray = true;
  68. rule.ruleName = ruleName;
  69. rule.messages = messages;
  70. module.exports = rule;