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

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. // @ts-nocheck
  2. 'use strict';
  3. const _ = require('lodash');
  4. const ruleMessages = require('../../utils/ruleMessages');
  5. const selectorAttributeOperatorSpaceChecker = require('../selectorAttributeOperatorSpaceChecker');
  6. const validateOptions = require('../../utils/validateOptions');
  7. const whitespaceChecker = require('../../utils/whitespaceChecker');
  8. const ruleName = 'selector-attribute-operator-space-after';
  9. const messages = ruleMessages(ruleName, {
  10. expectedAfter: (operator) => `Expected single space after "${operator}"`,
  11. rejectedAfter: (operator) => `Unexpected whitespace after "${operator}"`,
  12. });
  13. function rule(expectation, options, context) {
  14. return (root, result) => {
  15. const checker = whitespaceChecker('space', expectation, messages);
  16. const validOptions = validateOptions(result, ruleName, {
  17. actual: expectation,
  18. possible: ['always', 'never'],
  19. });
  20. if (!validOptions) {
  21. return;
  22. }
  23. selectorAttributeOperatorSpaceChecker({
  24. root,
  25. result,
  26. locationChecker: checker.after,
  27. checkedRuleName: ruleName,
  28. checkBeforeOperator: false,
  29. fix: context.fix
  30. ? (attributeNode) => {
  31. const { operatorAfter, setOperatorAfter } = (() => {
  32. const rawOperator = _.get(attributeNode, 'raws.operator');
  33. if (rawOperator) {
  34. return {
  35. operatorAfter: rawOperator.slice(attributeNode.operator.length),
  36. setOperatorAfter(fixed) {
  37. delete attributeNode.raws.operator;
  38. _.set(attributeNode, 'raws.spaces.operator.after', fixed);
  39. },
  40. };
  41. }
  42. const rawOperatorAfter = _.get(attributeNode, 'raws.spaces.operator.after');
  43. if (rawOperatorAfter) {
  44. return {
  45. operatorAfter: rawOperatorAfter,
  46. setOperatorAfter(fixed) {
  47. attributeNode.raws.spaces.operator.after = fixed;
  48. },
  49. };
  50. }
  51. return {
  52. operatorAfter: _.get(attributeNode, 'spaces.operator.after', ''),
  53. setOperatorAfter(fixed) {
  54. _.set(attributeNode, 'spaces.operator.after', fixed);
  55. },
  56. };
  57. })();
  58. if (expectation === 'always') {
  59. setOperatorAfter(operatorAfter.replace(/^\s*/, ' '));
  60. return true;
  61. }
  62. if (expectation === 'never') {
  63. setOperatorAfter(operatorAfter.replace(/^\s*/, ''));
  64. return true;
  65. }
  66. }
  67. : null,
  68. });
  69. };
  70. }
  71. rule.ruleName = ruleName;
  72. rule.messages = messages;
  73. module.exports = rule;