group jison loader and transformer

This commit is contained in:
Matthieu MOREL 2021-09-30 00:07:57 +02:00 committed by GitHub
parent d040883286
commit 9c48703fb1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 35 additions and 17 deletions

View File

@ -4,7 +4,7 @@ module.exports = {
testEnvironment: 'jsdom',
transform: {
'^.+\\.jsx?$': ['babel-jest', { rootMode: 'upward' }],
'^.+\\.jison$': path.resolve(__dirname, './jisonTransformer.js'),
'^.+\\.jison$': [path.resolve(__dirname, './jison/transformer.js'), { 'token-stack': true }],
},
transformIgnorePatterns: ['/node_modules/(?!dagre-d3-renderer/lib).*\\.js'],
moduleNameMapper: {

12
jison/loader.js Normal file
View File

@ -0,0 +1,12 @@
const { Generator } = require('jison');
const { validate } = require('schema-utils');
const schema = require('./parser-options-schema.json');
module.exports = function jisonLoader(source) {
const options = this.getOptions();
validate(schema, options, {
name: 'Jison Loader',
baseDataPath: 'options',
});
return new Generator(source, options).generate();
};

View File

@ -0,0 +1,13 @@
{
"title": "Jison Parser options",
"type": "object",
"properties": {
"token-stack": {
"type": "boolean"
},
"debug": {
"type": "boolean"
}
},
"additionalProperties": false
}

7
jison/transformer.js Normal file
View File

@ -0,0 +1,7 @@
const { Generator } = require('jison');
module.exports = {
process(sourceText, sourcePath, options) {
return new Generator(sourceText, options.transformerConfig).generate();
},
};

View File

@ -1,5 +0,0 @@
const { Generator } = require('jison');
module.exports = function jisonLoader(source) {
return new Generator(source, this.getOptions()).generate();
};

View File

@ -1,9 +0,0 @@
const { Generator } = require('jison');
module.exports = {
process(source, filename, config, transformOptions) {
return new Generator(source, {
'token-stack': true,
}).generate();
},
};

View File

@ -3,7 +3,7 @@ import path from 'path';
const jisonRule = {
test: /\.jison$/,
use: {
loader: path.resolve(__dirname, './jisonLoader'),
loader: path.resolve(__dirname, './jison/loader'),
options: {
'token-stack': true,
},

View File

@ -11,7 +11,7 @@ const jsRule = {
const jisonRule = {
test: /\.jison$/,
use: {
loader: path.resolve(__dirname, './jisonLoader'),
loader: path.resolve(__dirname, './jison/loader'),
options: {
'token-stack': true,
},