markdown.config.js 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. 'use strict';
  2. require('@babel/register');
  3. const {
  4. configs: {
  5. recommended: { rules: recommended },
  6. strict: { rules: strict },
  7. },
  8. rules,
  9. } = require('./src');
  10. const ruleTableRows = Object.keys(rules)
  11. .sort()
  12. .map((id) => {
  13. const { meta } = rules[id];
  14. const { url, errorOptions } = meta.docs;
  15. const recSev = [].concat(recommended[`jsx-a11y/${id}`] || 'off')[0];
  16. const strictSev = [].concat(strict[`jsx-a11y/${id}`] || 'off')[0];
  17. return [
  18. `[${id}](${url})`,
  19. recSev === 'error' ? (errorOptions ? 'error, with options' : 'error') : recSev, // eslint-disable-line no-nested-ternary
  20. strictSev,
  21. ].join(' | ');
  22. });
  23. const buildRulesTable = (rows) => {
  24. const header = 'Rule | Recommended | Strict';
  25. const separator = ':--- | :--- | :---';
  26. return [header, separator].concat(rows)
  27. .map((row) => `| ${row} |`)
  28. .join('\n');
  29. };
  30. const ruleList = Object.keys(rules)
  31. .sort()
  32. .map((id) => {
  33. const { meta } = rules[id];
  34. const { description, url } = meta.docs;
  35. return description ? [`- [${id}](${url}): ${description}`] : null;
  36. });
  37. const buildRuleList = (listItems) => listItems.join('\n');
  38. const LIST = () => buildRuleList(ruleList);
  39. const TABLE = () => buildRulesTable(ruleTableRows);
  40. module.exports = {
  41. transforms: {
  42. TABLE,
  43. LIST,
  44. },
  45. callback: () => {
  46. console.log('The auto-generating of rules finished!');
  47. },
  48. };