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

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. // @ts-nocheck
  2. 'use strict';
  3. const _ = require('lodash');
  4. const isStandardSyntaxRule = require('../../utils/isStandardSyntaxRule');
  5. const isStandardSyntaxSelector = require('../../utils/isStandardSyntaxSelector');
  6. const keywordSets = require('../../reference/keywordSets');
  7. const optionsMatches = require('../../utils/optionsMatches');
  8. const parseSelector = require('../../utils/parseSelector');
  9. const report = require('../../utils/report');
  10. const ruleMessages = require('../../utils/ruleMessages');
  11. const validateOptions = require('../../utils/validateOptions');
  12. const vendor = require('../../utils/vendor');
  13. const ruleName = 'selector-pseudo-element-no-unknown';
  14. const messages = ruleMessages(ruleName, {
  15. rejected: (selector) => `Unexpected unknown pseudo-element selector "${selector}"`,
  16. });
  17. function rule(actual, options) {
  18. return (root, result) => {
  19. const validOptions = validateOptions(
  20. result,
  21. ruleName,
  22. { actual },
  23. {
  24. actual: options,
  25. possible: {
  26. ignorePseudoElements: [_.isString],
  27. },
  28. optional: true,
  29. },
  30. );
  31. if (!validOptions) {
  32. return;
  33. }
  34. root.walkRules((ruleNode) => {
  35. if (!isStandardSyntaxRule(ruleNode)) {
  36. return;
  37. }
  38. const selector = ruleNode.selector;
  39. // Return early before parse if no pseudos for performance
  40. if (!selector.includes(':')) {
  41. return;
  42. }
  43. parseSelector(selector, result, ruleNode, (selectorTree) => {
  44. selectorTree.walkPseudos((pseudoNode) => {
  45. const value = pseudoNode.value;
  46. if (!isStandardSyntaxSelector(value)) {
  47. return;
  48. }
  49. // Ignore pseudo-classes
  50. if (value.slice(0, 2) !== '::') {
  51. return;
  52. }
  53. if (optionsMatches(options, 'ignorePseudoElements', pseudoNode.value.slice(2))) {
  54. return;
  55. }
  56. const name = value.slice(2);
  57. if (vendor.prefix(name) || keywordSets.pseudoElements.has(name.toLowerCase())) {
  58. return;
  59. }
  60. report({
  61. message: messages.rejected(value),
  62. node: ruleNode,
  63. index: pseudoNode.sourceIndex,
  64. ruleName,
  65. result,
  66. });
  67. });
  68. });
  69. });
  70. };
  71. }
  72. rule.ruleName = ruleName;
  73. rule.messages = messages;
  74. module.exports = rule;