|
1 | 1 | import type Prettier from "prettier"; |
2 | | -import nodeTypeInfo from "tree-sitter-java-orchard/src/node-types.json" with { type: "json" }; |
3 | 2 | import { Language, Parser, type Node } from "web-tree-sitter"; |
4 | 3 | import { determinePrettierIgnoreRanges } from "./comments.ts"; |
5 | | -import { SyntaxType, type CommentNode, type SyntaxNode } from "./node-types.ts"; |
| 4 | +import { |
| 5 | + multiFieldsByType, |
| 6 | + SyntaxType, |
| 7 | + type CommentNode, |
| 8 | + type SyntaxNode |
| 9 | +} from "./node-types.ts"; |
6 | 10 |
|
7 | 11 | export default { |
8 | 12 | async parse(text) { |
@@ -44,18 +48,6 @@ const parser = (async () => { |
44 | 48 | return parser; |
45 | 49 | })(); |
46 | 50 |
|
47 | | -const multipleFieldsByType = nodeTypeInfo.reduce((map, nodeInfo) => { |
48 | | - if ("fields" in nodeInfo && nodeInfo.fields) { |
49 | | - const fields = Object.entries(nodeInfo.fields) |
50 | | - .filter(([, { multiple }]) => multiple) |
51 | | - .map(([name]) => name); |
52 | | - if (fields.length) { |
53 | | - map.set(nodeInfo.type, new Set(fields)); |
54 | | - } |
55 | | - } |
56 | | - return map; |
57 | | -}, new Map<string, Set<string>>()); |
58 | | - |
59 | 51 | function processTree( |
60 | 52 | node: Node, |
61 | 53 | fieldName: string | null = null, |
@@ -92,8 +84,10 @@ function processTree( |
92 | 84 | return javaNode; |
93 | 85 | } |
94 | 86 |
|
95 | | - const multipleFields = multipleFieldsByType.get(node.type); |
96 | | - multipleFields?.forEach(name => (javaNode[`${name}Nodes`] = [])); |
| 87 | + const multiFields = multiFieldsByType[node.type]; |
| 88 | + if (multiFields) { |
| 89 | + Object.keys(multiFields).forEach(name => (javaNode[`${name}Nodes`] = [])); |
| 90 | + } |
97 | 91 |
|
98 | 92 | node.children.forEach((child, index) => { |
99 | 93 | const { type, text: value, startPosition, endPosition } = child; |
@@ -125,7 +119,7 @@ function processTree( |
125 | 119 | } |
126 | 120 |
|
127 | 121 | if (fieldName) { |
128 | | - if (multipleFields?.has(fieldName)) { |
| 122 | + if (multiFields?.[fieldName]) { |
129 | 123 | javaNode[`${fieldName}Nodes`].push(javaChild); |
130 | 124 | } else { |
131 | 125 | javaNode[`${fieldName}Node`] = javaChild; |
|
0 commit comments