UNPKG

peggy-loader

Version:
59 lines (46 loc) 1.85 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); exports['default'] = loader; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } } var _peggy = require('peggy'); var peggy = _interopRequireWildcard(_peggy); var _loaderUtils = require('loader-utils'); var _loaderUtils2 = _interopRequireDefault(_loaderUtils); function extractAllowedStartRules(query) { if (typeof query.allowedStartRules === 'string') { return [query.allowedStartRules]; } if (Array.isArray(query.allowedStartRules)) { return query.allowedStartRules; } return []; } function loader(source) { if (this.cacheable) { this.cacheable(); } var query = _loaderUtils2['default'].parseQuery(this.query); var cacheParserResults = !!query.cache; var optimizeParser = query.optimize || 'speed'; var trace = !!query.trace; var dependencies = JSON.parse(query.dependencies || '{}'); var allowedStartRules = extractAllowedStartRules(query); // Description of Peggy options: https://peggyjs.org/documentation.html#generating-a-parser-javascript-api var pegOptions = { cache: cacheParserResults, dependencies: dependencies, format: 'commonjs', optimize: optimizeParser, output: 'source', trace: trace }; if (allowedStartRules.length > 0) { pegOptions.allowedStartRules = allowedStartRules; } var methodName = typeof peggy.generate === 'function' ? 'generate' : 'buildParser'; return peggy[methodName](source, pegOptions); } module.exports = exports['default'];