From 9c48703fb17fecce4c36709bf267c6c4bb91a28b Mon Sep 17 00:00:00 2001 From: Matthieu MOREL Date: Thu, 30 Sep 2021 00:07:57 +0200 Subject: [PATCH] group jison loader and transformer --- jest.config.js | 2 +- jison/loader.js | 12 ++++++++++++ jison/parser-options-schema.json | 13 +++++++++++++ jison/transformer.js | 7 +++++++ jisonLoader.js | 5 ----- jisonTransformer.js | 9 --------- webpack.config.base.js | 2 +- webpack.config.e2e.js | 2 +- 8 files changed, 35 insertions(+), 17 deletions(-) create mode 100644 jison/loader.js create mode 100644 jison/parser-options-schema.json create mode 100644 jison/transformer.js delete mode 100644 jisonLoader.js delete mode 100644 jisonTransformer.js diff --git a/jest.config.js b/jest.config.js index 96173e481..efde17e01 100644 --- a/jest.config.js +++ b/jest.config.js @@ -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: { diff --git a/jison/loader.js b/jison/loader.js new file mode 100644 index 000000000..93418ab43 --- /dev/null +++ b/jison/loader.js @@ -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(); +}; diff --git a/jison/parser-options-schema.json b/jison/parser-options-schema.json new file mode 100644 index 000000000..5c44d7b61 --- /dev/null +++ b/jison/parser-options-schema.json @@ -0,0 +1,13 @@ +{ + "title": "Jison Parser options", + "type": "object", + "properties": { + "token-stack": { + "type": "boolean" + }, + "debug": { + "type": "boolean" + } + }, + "additionalProperties": false +} diff --git a/jison/transformer.js b/jison/transformer.js new file mode 100644 index 000000000..e98072c0d --- /dev/null +++ b/jison/transformer.js @@ -0,0 +1,7 @@ +const { Generator } = require('jison'); + +module.exports = { + process(sourceText, sourcePath, options) { + return new Generator(sourceText, options.transformerConfig).generate(); + }, +}; diff --git a/jisonLoader.js b/jisonLoader.js deleted file mode 100644 index 63971859b..000000000 --- a/jisonLoader.js +++ /dev/null @@ -1,5 +0,0 @@ -const { Generator } = require('jison'); - -module.exports = function jisonLoader(source) { - return new Generator(source, this.getOptions()).generate(); -}; diff --git a/jisonTransformer.js b/jisonTransformer.js deleted file mode 100644 index 466445f08..000000000 --- a/jisonTransformer.js +++ /dev/null @@ -1,9 +0,0 @@ -const { Generator } = require('jison'); - -module.exports = { - process(source, filename, config, transformOptions) { - return new Generator(source, { - 'token-stack': true, - }).generate(); - }, -}; diff --git a/webpack.config.base.js b/webpack.config.base.js index ec5ddfe9d..7807185a9 100644 --- a/webpack.config.base.js +++ b/webpack.config.base.js @@ -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, }, diff --git a/webpack.config.e2e.js b/webpack.config.e2e.js index 04a017e88..668d5a446 100644 --- a/webpack.config.e2e.js +++ b/webpack.config.e2e.js @@ -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, },