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

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. // @ts-nocheck
  2. 'use strict';
  3. const ruleMessages = require('../../utils/ruleMessages');
  4. const selectorListCommaWhitespaceChecker = require('../selectorListCommaWhitespaceChecker');
  5. const validateOptions = require('../../utils/validateOptions');
  6. const whitespaceChecker = require('../../utils/whitespaceChecker');
  7. const ruleName = 'selector-list-comma-space-before';
  8. const messages = ruleMessages(ruleName, {
  9. expectedBefore: () => 'Expected single space before ","',
  10. rejectedBefore: () => 'Unexpected whitespace before ","',
  11. expectedBeforeSingleLine: () => 'Expected single space before "," in a single-line list',
  12. rejectedBeforeSingleLine: () => 'Unexpected whitespace before "," in a single-line list',
  13. });
  14. function rule(expectation, options, context) {
  15. const checker = whitespaceChecker('space', expectation, messages);
  16. return (root, result) => {
  17. const validOptions = validateOptions(result, ruleName, {
  18. actual: expectation,
  19. possible: ['always', 'never', 'always-single-line', 'never-single-line'],
  20. });
  21. if (!validOptions) {
  22. return;
  23. }
  24. let fixData;
  25. selectorListCommaWhitespaceChecker({
  26. root,
  27. result,
  28. locationChecker: checker.before,
  29. checkedRuleName: ruleName,
  30. fix: context.fix
  31. ? (ruleNode, index) => {
  32. fixData = fixData || new Map();
  33. const commaIndices = fixData.get(ruleNode) || [];
  34. commaIndices.push(index);
  35. fixData.set(ruleNode, commaIndices);
  36. return true;
  37. }
  38. : null,
  39. });
  40. if (fixData) {
  41. fixData.forEach((commaIndices, ruleNode) => {
  42. let selector = ruleNode.raws.selector ? ruleNode.raws.selector.raw : ruleNode.selector;
  43. commaIndices
  44. .sort((a, b) => b - a)
  45. .forEach((index) => {
  46. let beforeSelector = selector.slice(0, index);
  47. const afterSelector = selector.slice(index);
  48. if (expectation.includes('always')) {
  49. beforeSelector = beforeSelector.replace(/\s*$/, ' ');
  50. } else if (expectation.includes('never')) {
  51. beforeSelector = beforeSelector.replace(/\s*$/, '');
  52. }
  53. selector = beforeSelector + afterSelector;
  54. });
  55. if (ruleNode.raws.selector) {
  56. ruleNode.raws.selector.raw = selector;
  57. } else {
  58. ruleNode.selector = selector;
  59. }
  60. });
  61. }
  62. };
  63. }
  64. rule.ruleName = ruleName;
  65. rule.messages = messages;
  66. module.exports = rule;