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 1.9KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. // @ts-nocheck
  2. 'use strict';
  3. const valueParser = require('postcss-value-parser');
  4. const declarationValueIndex = require('../../utils/declarationValueIndex');
  5. const getDeclarationValue = require('../../utils/getDeclarationValue');
  6. const report = require('../../utils/report');
  7. const ruleMessages = require('../../utils/ruleMessages');
  8. const setDeclarationValue = require('../../utils/setDeclarationValue');
  9. const validateOptions = require('../../utils/validateOptions');
  10. const ruleName = 'color-hex-case';
  11. const messages = ruleMessages(ruleName, {
  12. expected: (actual, expected) => `Expected "${actual}" to be "${expected}"`,
  13. });
  14. const HEX = /^#[0-9A-Za-z]+/;
  15. const IGNORED_FUNCTIONS = new Set(['url']);
  16. function rule(expectation, options, context) {
  17. return (root, result) => {
  18. const validOptions = validateOptions(result, ruleName, {
  19. actual: expectation,
  20. possible: ['lower', 'upper'],
  21. });
  22. if (!validOptions) {
  23. return;
  24. }
  25. root.walkDecls((decl) => {
  26. const parsedValue = valueParser(getDeclarationValue(decl));
  27. let needsFix = false;
  28. parsedValue.walk((node) => {
  29. const { value } = node;
  30. if (isIgnoredFunction(node)) return false;
  31. if (!isHexColor(node)) return;
  32. const expected = expectation === 'lower' ? value.toLowerCase() : value.toUpperCase();
  33. if (value === expected) return;
  34. if (context.fix) {
  35. node.value = expected;
  36. needsFix = true;
  37. return;
  38. }
  39. report({
  40. message: messages.expected(value, expected),
  41. node: decl,
  42. index: declarationValueIndex(decl) + node.sourceIndex,
  43. result,
  44. ruleName,
  45. });
  46. });
  47. if (needsFix) {
  48. setDeclarationValue(decl, parsedValue.toString());
  49. }
  50. });
  51. };
  52. }
  53. function isIgnoredFunction({ type, value }) {
  54. return type === 'function' && IGNORED_FUNCTIONS.has(value.toLowerCase());
  55. }
  56. function isHexColor({ type, value }) {
  57. return type === 'word' && HEX.test(value);
  58. }
  59. rule.ruleName = ruleName;
  60. rule.messages = messages;
  61. module.exports = rule;