MCPcopy
hub / github.com/Effect-TS/effect / alterAnnotationsSafe

Function alterAnnotationsSafe

packages/printer/src/internal/doc.ts:702–761  ·  view source on GitHub ↗
(
  self: Doc.Doc<A>,
  f: (a: A) => Iterable<B>
)

Source from the content-addressed store, hash-verified

700>(2, (self, f) => Effect.runSync(alterAnnotationsSafe(self, f)))
701
702const alterAnnotationsSafe = <A, B>(
703 self: Doc.Doc<A>,
704 f: (a: A) => Iterable<B>
705): Effect.Effect<Doc.Doc<B>> => {
706 switch (self._tag) {
707 case "Cat": {
708 return Effect.zipWith(
709 Effect.suspend(() => alterAnnotationsSafe(self.left, f)),
710 alterAnnotationsSafe(self.right, f),
711 (left, right) => cat(left, right)
712 )
713 }
714 case "FlatAlt": {
715 return Effect.zipWith(
716 Effect.suspend(() => alterAnnotationsSafe(self.left, f)),
717 alterAnnotationsSafe(self.right, f),
718 (left, right) => flatAlt(left, right)
719 )
720 }
721 case "Union": {
722 return Effect.zipWith(
723 Effect.suspend(() => alterAnnotationsSafe(self.left, f)),
724 alterAnnotationsSafe(self.right, f),
725 (left, right) => union(left, right)
726 )
727 }
728 case "Nest": {
729 return Effect.map(
730 Effect.suspend(() => alterAnnotationsSafe(self.doc, f)),
731 nest(self.indent)
732 )
733 }
734 case "Column": {
735 return Effect.succeed(
736 column((position) => Effect.runSync(alterAnnotationsSafe(self.react(position), f)))
737 )
738 }
739 case "WithPageWidth": {
740 return Effect.succeed(
741 pageWidth((pageWidth) => Effect.runSync(alterAnnotationsSafe(self.react(pageWidth), f)))
742 )
743 }
744 case "Nesting": {
745 return Effect.succeed(
746 nesting((level) => Effect.runSync(alterAnnotationsSafe(self.react(level), f)))
747 )
748 }
749 case "Annotated": {
750 return Effect.map(alterAnnotationsSafe(self.doc, f), (doc) =>
751 Arr.reduceRight(
752 Arr.fromIterable(f(self.annotation)),
753 doc,
754 (doc, b) => annotate(doc, b)
755 ))
756 }
757 default: {
758 return Effect.succeed(self as unknown as Doc.Doc<B>)
759 }

Callers 1

doc.tsFile · 0.70

Calls 6

columnFunction · 0.85
pageWidthFunction · 0.85
nestingFunction · 0.85
mapMethod · 0.65
fFunction · 0.50
annotateFunction · 0.50

Tested by

no test coverage detected