MCPcopy Create free account
hub / github.com/formatjs/formatjs / walkNode

Function walkNode

packages/cli-lib/svelte_extractor.ts:137–239  ·  view source on GitHub ↗
(
  node: SvelteNode,
  source: string,
  parseScriptFn: ScriptParseFn
)

Source from the content-addressed store, hash-verified

135}
136
137function walkNode(
138 node: SvelteNode,
139 source: string,
140 parseScriptFn: ScriptParseFn
141): void {
142 switch (node.type) {
143 case 'ExpressionTag':
144 extractExpression(node.expression, source, parseScriptFn)
145 break
146
147 case 'ConstTag':
148 // {@const x = expr} — the declaration contains the expression
149 if (node.declaration) {
150 const content = source.slice(
151 node.declaration.start,
152 node.declaration.end
153 )
154 try {
155 parseScriptFn(content)
156 } catch (e) {
157 console.warn(
158 `Failed to parse const declaration. Ignore this if content has no extractable message`,
159 e
160 )
161 }
162 }
163 break
164
165 case 'IfBlock':
166 extractExpression(node.test, source, parseScriptFn)
167 walkFragment(node.consequent, source, parseScriptFn)
168 walkFragment(node.alternate, source, parseScriptFn)
169 break
170
171 case 'EachBlock':
172 extractExpression(node.expression, source, parseScriptFn)
173 if (node.key) {
174 extractExpression(node.key, source, parseScriptFn)
175 }
176 walkFragment(node.body, source, parseScriptFn)
177 walkFragment(node.fallback, source, parseScriptFn)
178 break
179
180 case 'AwaitBlock':
181 extractExpression(node.expression, source, parseScriptFn)
182 walkFragment(node.pending, source, parseScriptFn)
183 walkFragment(node.then, source, parseScriptFn)
184 walkFragment(node.catch, source, parseScriptFn)
185 break
186
187 case 'KeyBlock':
188 extractExpression(node.expression, source, parseScriptFn)
189 walkFragment(node.fragment, source, parseScriptFn)
190 break
191
192 case 'SnippetBlock':
193 walkFragment(node.body, source, parseScriptFn)
194 break

Callers 1

walkFragmentFunction · 0.85

Calls 3

extractExpressionFunction · 0.85
walkFragmentFunction · 0.85
extractMessageComponentFunction · 0.85

Tested by

no test coverage detected