From c9ac5ee14bc5290807bd778538bde9711a553b7d Mon Sep 17 00:00:00 2001 From: Mark Canlas Date: Sun, 4 Dec 2022 17:17:55 -0500 Subject: [PATCH] allow many paragraph output --- data/annotated-snake.asm | 2 -- .../com/htmlism/firepower/demo/PrintPrograms.scala | 2 +- .../com/htmlism/firepower/demo/asm/AsmBlock.scala | 14 +++++++++----- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/data/annotated-snake.asm b/data/annotated-snake.asm index 4c05fae..7131206 100644 --- a/data/annotated-snake.asm +++ b/data/annotated-snake.asm @@ -5,6 +5,4 @@ ; Change direction: W A S D - - labeled: diff --git a/firepower-demo/src/main/scala/com/htmlism/firepower/demo/PrintPrograms.scala b/firepower-demo/src/main/scala/com/htmlism/firepower/demo/PrintPrograms.scala index bed3c4b..ba3d121 100644 --- a/firepower-demo/src/main/scala/com/htmlism/firepower/demo/PrintPrograms.scala +++ b/firepower-demo/src/main/scala/com/htmlism/firepower/demo/PrintPrograms.scala @@ -29,7 +29,7 @@ object PrintPrograms extends ZIOAppDefault: ), "annotated-snake.asm" -> (Line.mkString _) .compose(Paragraph.mkLines) - .compose((xs: List[AsmBlock]) => xs.map(AsmBlock.toParagraph)) + .compose((xs: List[AsmBlock]) => xs.flatMap(AsmBlock.toParagraphs)) .apply( List( CommentBlock.fromMultiline(asciiArt), diff --git a/firepower-demo/src/main/scala/com/htmlism/firepower/demo/asm/AsmBlock.scala b/firepower-demo/src/main/scala/com/htmlism/firepower/demo/asm/AsmBlock.scala index fa19567..7f03a55 100644 --- a/firepower-demo/src/main/scala/com/htmlism/firepower/demo/asm/AsmBlock.scala +++ b/firepower-demo/src/main/scala/com/htmlism/firepower/demo/asm/AsmBlock.scala @@ -11,18 +11,22 @@ case class NamedCodeBlock(name: String, intents: List[AsmBlock.Intent]) extends case class AnonymousCodeBlock(intents: List[AsmBlock.Intent]) extends AsmBlock object AsmBlock: - def toParagraph(xs: AsmBlock): Paragraph = + def toParagraphs(xs: AsmBlock): List[Paragraph] = xs match case CommentBlock(ys) => - Paragraph(ys.map("; " + _)) + List( + Paragraph(ys.map("; " + _)) + ) case NamedCodeBlock(label, _) => - Paragraph( - List(label + ":") + List( + Paragraph( + List(label + ":") + ) ) case AnonymousCodeBlock(_) => - Paragraph("") + Nil case class Intent(label: Option[String], instructions: List[Intent.Instruction])