Skip to content

Commit ee7add2

Browse files
committed
feat: generate a file that exports only contexts
1 parent d216233 commit ee7add2

File tree

4 files changed

+43
-0
lines changed

4 files changed

+43
-0
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,4 @@ src/parser/JavaParser.ts
44
src/parser/JavaParserListener.ts
55
src/parser/JavaParserVisitor.ts
66
src/parser/JavaLexer.ts
7+
src/parser/JavaContexts.ts

generate-contexts.js

+35
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
// @ts-check
2+
3+
const fs = require('fs').promises;
4+
const path = require('path');
5+
const { EOL } = require('os');
6+
7+
const listenerFilePath = path.join(__dirname, '/src/parser/JavaParserListener.ts');
8+
const contextsFilePath = path.join(__dirname, '/src/parser/JavaContexts.ts');
9+
10+
const main = () =>
11+
fs
12+
.stat(listenerFilePath)
13+
.catch(
14+
() => 'src/parser/JavaParserListener.ts not found use generate:parser script to generate it',
15+
)
16+
.then(() => fs.readFile(listenerFilePath, 'utf-8'))
17+
.then((listenerSource) =>
18+
listenerSource
19+
.split(EOL)
20+
.map((l) => {
21+
let matches = l.match(/import\s*\{\s*(.*Context)\s*\}.*/);
22+
if (matches === null) return null;
23+
return matches[1];
24+
})
25+
.filter((c) => c !== null),
26+
)
27+
.then((contexts) => contexts.reduce((list, context) => list + ` ${context},${EOL}`, ''))
28+
.then((exportList) => `export {${EOL}${exportList}} from './JavaParser';`)
29+
.then((contextsSource) => fs.writeFile(contextsFilePath, contextsSource));
30+
31+
main().catch((error) => {
32+
if (typeof error !== 'string') throw error;
33+
console.log('Failure: ' + error);
34+
process.exit(1);
35+
});

package.json

+2
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,14 @@
2525
"format": "prettier --write src/**.ts **/*.json",
2626
"prepublish": "yarn build",
2727
"generate:parser": "antlr4ts -visitor -o src/parser src/parser/JavaLexer.g4 src/parser/JavaParser.g4",
28+
"generate:contexts": "node generate-contexts.js",
2829
"precommit": "lint-staged",
2930
"postcommit": "git update-index --again",
3031
"test": "jest"
3132
},
3233
"devDependencies": {
3334
"@types/jest": "^23.1.5",
35+
"@types/node": "^14.0.22",
3436
"antlr4ts-cli": "^0.4.0-alpha.4",
3537
"husky": "^0.14.3",
3638
"jest": "^23.3.0",

yarn.lock

+5
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,11 @@
2626
version "23.1.5"
2727
resolved "https://registry.yarnpkg.com/@types/jest/-/jest-23.1.5.tgz#e31be003956e1fa8c860124d99bea9ae327ae37b"
2828

29+
"@types/node@^14.0.22":
30+
version "14.0.22"
31+
resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.22.tgz#23ea4d88189cec7d58f9e6b66f786b215eb61bdc"
32+
integrity sha512-emeGcJvdiZ4Z3ohbmw93E/64jRzUHAItSHt8nF7M4TGgQTiWqFVGB8KNpLGFmUHmHLvjvBgFwVlqNcq+VuGv9g==
33+
2934
abab@^1.0.4:
3035
version "1.0.4"
3136
resolved "https://registry.yarnpkg.com/abab/-/abab-1.0.4.tgz#5faad9c2c07f60dd76770f71cf025b62a63cfd4e"

0 commit comments

Comments
 (0)