in packaging/src/main/scala/org/jetbrains/sbtidea/packaging/artifact/IdeaArtifactXmlBuilder.scala [74:103]
private def render(entry: Entry): String = entry match {
case Dir(children, name) =>
s"""
|<element id="directory" name="$name">
|${children.map(render).mkString("\n")}
|</element>
""".stripMargin
case PackageJar(from, name) =>
s"""
|<element id="archive" name="$name">
|${from.map(render).mkString("\n")}
|</element>
""".stripMargin
case CopyRenameJar(from, newName) =>
s"""
|<element id="archive" name="$newName">
|<element id="extracted-dir" path="$from" path-in-jar="/" />
|</element>
""".stripMargin
case CopyFile(from) =>
s"""<element id="file-copy" path="$from" />"""
case CopyDir(from) =>
s"""<element id="dir-copy" path="$from" />"""
case ModuleContent(name) =>
s"""<element id="module-output" name="$name" />"""
case ExtractJar(from) =>
s"""<element id="extracted-dir" path="$from" path-in-jar="/" />"""
case _ =>
""
}