You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@daffodil.apache.org by "Olabusayo Kilo (Jira)" <ji...@apache.org> on 2025/09/24 18:49:00 UTC

[jira] [Created] (DAFFODIL-3042) Add XML style Formatter

Olabusayo Kilo created DAFFODIL-3042:
----------------------------------------

             Summary: Add XML style Formatter
                 Key: DAFFODIL-3042
                 URL: https://issues.apache.org/jira/browse/DAFFODIL-3042
             Project: Daffodil
          Issue Type: Improvement
          Components: Clean Ups
    Affects Versions: 3.11.0
            Reporter: Olabusayo Kilo


Our TDML and XSD files are often full of inconsistences that the IDEs try to fix polluting the change set. These inconsistences should be fixed using an XML Formatter. We couldn't find a sbt xml formatter plugin , but scala.xml.PrettyPrinter might be enough for our purposes with a custom task suggested by Gemini. 

{code:scala}
import scala.xml.PrettyPrinter
import sbt.io.IO
 
// Define a custom task key for formatting XML
val formatXml = taskKey[Unit]("Formats XML files in the project.")
 
formatXml := {
  val log = streams.value.log
  val files = (baseDirectory.value ** "*.xml").get ++ (baseDirectory.value ** "*.xsd").get ++ (baseDirectory.value ** "*.tdml").get
  if (files.isEmpty) {
    log.info("No XML files found to format.")
  } else {
    log.info(s"Formatting ${files.size} XML files...")
    val printer = new PrettyPrinter(80, 2, true) // Max width 80, indent 2 spaces, minimize empty ex <foo />
    files.foreach { file =>
      try {
        val xmlText = IO.read(file)
        val formattedXml = printer.format(scala.xml.XML.loadString(xmlText))
        IO.write(file, formattedXml)
        log.info(s"Formatted: ${file.getName}")
      } catch {
        case e: Exception =>
          log.error(s"Failed to format ${file.getName}: ${e.getMessage}")
      }
    }
  }
}
{code}

There was also this maven plugin but sbt and mvn don't play nice

 https://github.com/hazendaz/xml-format-maven-plugin



--
This message was sent by Atlassian Jira
(v8.20.10#820010)