(
query: QueryIR,
predicate: (query: QueryIR) => boolean
)
| 166 | * @returns The first matching query node, or undefined if none found |
| 167 | */ |
| 168 | export function findInQueryIR( |
| 169 | query: QueryIR, |
| 170 | predicate: (query: QueryIR) => boolean |
| 171 | ): QueryIR | undefined { |
| 172 | let found: QueryIR | undefined; |
| 173 | |
| 174 | traverseQueryIR(query, { |
| 175 | onRawConfig: (q) => { if (predicate(q)) { found = q; return false; } }, |
| 176 | onRegexp: (q) => { if (predicate(q)) { found = q; return false; } }, |
| 177 | onSymbol: (q) => { if (predicate(q)) { found = q; return false; } }, |
| 178 | onLanguage: (q) => { if (predicate(q)) { found = q; return false; } }, |
| 179 | onConst: (q) => { if (predicate(q)) { found = q; return false; } }, |
| 180 | onRepo: (q) => { if (predicate(q)) { found = q; return false; } }, |
| 181 | onRepoRegexp: (q) => { if (predicate(q)) { found = q; return false; } }, |
| 182 | onBranchesRepos: (q) => { if (predicate(q)) { found = q; return false; } }, |
| 183 | onRepoIds: (q) => { if (predicate(q)) { found = q; return false; } }, |
| 184 | onRepoSet: (q) => { if (predicate(q)) { found = q; return false; } }, |
| 185 | onFileNameSet: (q) => { if (predicate(q)) { found = q; return false; } }, |
| 186 | onType: (q) => { if (predicate(q)) { found = q; return false; } }, |
| 187 | onSubstring: (q) => { if (predicate(q)) { found = q; return false; } }, |
| 188 | onAnd: (q) => { if (predicate(q)) { found = q; return false; } }, |
| 189 | onOr: (q) => { if (predicate(q)) { found = q; return false; } }, |
| 190 | onNot: (q) => { if (predicate(q)) { found = q; return false; } }, |
| 191 | onBranch: (q) => { if (predicate(q)) { found = q; return false; } }, |
| 192 | onBoost: (q) => { if (predicate(q)) { found = q; return false; } }, |
| 193 | }); |
| 194 | |
| 195 | return found; |
| 196 | } |
| 197 | |
| 198 | /** |
| 199 | * Checks if any node in the query tree matches the predicate. |
no test coverage detected