MCPcopy Index your code
hub / github.com/Effect-TS/effect / alterAnnotationsSafe

Function alterAnnotationsSafe

packages/printer/src/internal/docTree.ts:187–218  ·  view source on GitHub ↗
(
  self: DocTree.DocTree<A>,
  f: (a: A) => Iterable<B>
)

Source from the content-addressed store, hash-verified

185>(2, (self, f) => Effect.runSync(alterAnnotationsSafe(self, f)))
186
187const alterAnnotationsSafe = <A, B>(
188 self: DocTree.DocTree<A>,
189 f: (a: A) => Iterable<B>
190): Effect.Effect<DocTree.DocTree<B>> => {
191 switch (self._tag) {
192 case "EmptyTree": {
193 return Effect.succeed(empty)
194 }
195 case "CharTree": {
196 return Effect.succeed(char(self.char))
197 }
198 case "TextTree": {
199 return Effect.succeed(text(self.text))
200 }
201 case "LineTree": {
202 return Effect.succeed(line(self.indentation))
203 }
204 case "AnnotationTree": {
205 return Arr.reduce(
206 Arr.fromIterable(f(self.annotation)),
207 Effect.suspend(() => alterAnnotationsSafe(self.tree, f)),
208 (acc, b) => Effect.map(acc, annotation(b))
209 )
210 }
211 case "ConcatTree": {
212 return pipe(
213 Effect.forEach(self.trees, (tree) => alterAnnotationsSafe(tree, f)),
214 Effect.map(concat)
215 )
216 }
217 }
218}
219
220/** @internal */
221export const reAnnotate = dual<

Callers 1

docTree.tsFile · 0.70

Calls 6

charFunction · 0.70
textFunction · 0.70
lineFunction · 0.70
pipeFunction · 0.70
mapMethod · 0.65
fFunction · 0.50

Tested by

no test coverage detected