| 700 | >(2, (self, f) => Effect.runSync(alterAnnotationsSafe(self, f))) |
| 701 | |
| 702 | const 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 | } |