Lawsun d230cfbce0 first commit 1 year ago
..
readme-assertions.js d230cfbce0 first commit 1 year ago
readme-assertions.js.map d230cfbce0 first commit 1 year ago

readme-assertions.js

"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