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

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. // @ts-nocheck
  2. 'use strict';
  3. const isStandardSyntaxRule = require('../../utils/isStandardSyntaxRule');
  4. const isStandardSyntaxSelector = require('../../utils/isStandardSyntaxSelector');
  5. const keywordSets = require('../../reference/keywordSets');
  6. const parseSelector = require('../../utils/parseSelector');
  7. const report = require('../../utils/report');
  8. const ruleMessages = require('../../utils/ruleMessages');
  9. const validateOptions = require('../../utils/validateOptions');
  10. const ruleName = 'selector-pseudo-class-case';
  11. const messages = ruleMessages(ruleName, {
  12. expected: (actual, expected) => `Expected "${actual}" to be "${expected}"`,
  13. });
  14. function rule(expectation, options, context) {
  15. return (root, result) => {
  16. const validOptions = validateOptions(result, ruleName, {
  17. actual: expectation,
  18. possible: ['lower', 'upper'],
  19. });
  20. if (!validOptions) {
  21. return;
  22. }
  23. root.walkRules((ruleNode) => {
  24. if (!isStandardSyntaxRule(ruleNode)) {
  25. return;
  26. }
  27. const selector = ruleNode.selector;
  28. if (!selector.includes(':')) {
  29. return;
  30. }
  31. const fixedSelector = parseSelector(
  32. ruleNode.raws.selector ? ruleNode.raws.selector.raw : ruleNode.selector,
  33. result,
  34. ruleNode,
  35. (selectorTree) => {
  36. selectorTree.walkPseudos((pseudoNode) => {
  37. const pseudo = pseudoNode.value;
  38. if (!isStandardSyntaxSelector(pseudo)) {
  39. return;
  40. }
  41. if (
  42. pseudo.includes('::') ||
  43. keywordSets.levelOneAndTwoPseudoElements.has(pseudo.toLowerCase().slice(1))
  44. ) {
  45. return;
  46. }
  47. const expectedPseudo =
  48. expectation === 'lower' ? pseudo.toLowerCase() : pseudo.toUpperCase();
  49. if (pseudo === expectedPseudo) {
  50. return;
  51. }
  52. if (context.fix) {
  53. pseudoNode.value = expectedPseudo;
  54. return;
  55. }
  56. report({
  57. message: messages.expected(pseudo, expectedPseudo),
  58. node: ruleNode,
  59. index: pseudoNode.sourceIndex,
  60. ruleName,
  61. result,
  62. });
  63. });
  64. },
  65. );
  66. if (context.fix) {
  67. if (ruleNode.raws.selector) {
  68. ruleNode.raws.selector.raw = fixedSelector;
  69. } else {
  70. ruleNode.selector = fixedSelector;
  71. }
  72. }
  73. });
  74. };
  75. }
  76. rule.ruleName = ruleName;
  77. rule.messages = messages;
  78. module.exports = rule;