"use strict"; var _path = _interopRequireDefault(require("path")); var _fs = _interopRequireDefault(require("fs")); var _lodash = _interopRequireDefault(require("lodash")); var _glob = _interopRequireDefault(require("glob")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** * This script is used to inline assertions into the README.md documents. */ var trimCode = function trimCode(code) { var lines = _lodash.default.trim(code).split('\n'); var indendation = lines[lines.length - 1].match(/^\s+/); var indentSize = indendation ? indendation[0].length : 0; lines = _lodash.default.map(lines, function (line, index) { if (index === 0) { return line; } return line.slice(indentSize); }); return lines.join('\n'); }; var formatCodeSnippet = function formatCodeSnippet(setup) { var paragraphs = []; paragraphs.push(trimCode(setup.code)); if (setup.settings) { paragraphs.push('// Settings: ' + JSON.stringify(setup.settings)); } if (setup.options) { paragraphs.push('// Options: ' + JSON.stringify(setup.options)); } if (setup.errors) { paragraphs.push('// Message: ' + setup.errors[0].message); } return paragraphs.join('\n'); }; var getAssertions = function getAssertions() { var assertionFiles = _glob.default.sync(_path.default.resolve(__dirname, '../../test/rules/assertions/*.js')); var assertionNames = _lodash.default.map(assertionFiles, function (filePath) { return _path.default.basename(filePath, '.js'); }); var assertionCodes = _lodash.default.map(assertionFiles, function (filePath) { // eslint-disable-next-line global-require, import/no-dynamic-require var codes = require(filePath); return { invalid: _lodash.default.map(codes.invalid, formatCodeSnippet), valid: _lodash.default.map(codes.valid, formatCodeSnippet) }; }); return _lodash.default.zipObject(assertionNames, assertionCodes); }; var updateDocuments = function updateDocuments(assertions) { var readmeDocumentPath = _path.default.join(__dirname, '../../README.md'); var documentBody = _fs.default.readFileSync(readmeDocumentPath, 'utf8'); documentBody = documentBody.replace(//ig, function (assertionsBlock) { var ruleName = assertionsBlock.match(/assertions ([a-z]+)/i)[1]; var ruleAssertions = assertions[ruleName]; if (!ruleAssertions) { throw new Error('No assertions available for rule "' + ruleName + '".'); } return 'The following patterns are considered problems:\n\n````js\n' + ruleAssertions.invalid.join('\n\n') + '\n````\n\nThe following patterns are not considered problems:\n\n````js\n' + ruleAssertions.valid.join('\n\n') + '\n````\n'; }); _fs.default.writeFileSync(readmeDocumentPath, documentBody); }; updateDocuments(getAssertions()); //# sourceMappingURL=readme-assertions.js.map