private def findOrCreateDirNode()

in packaging/src/main/scala/org/jetbrains/sbtidea/packaging/artifact/IdeaArtifactXmlBuilder.scala [56:72]


  private def findOrCreateDirNode(path: String): Dir = {
    val elems = path.split("[/\\\\]")
    val result = elems.foldLeft(rootNode) {
      case (node , dirName) =>
        val child = node.children.collectFirst {
          case d@Dir(_, name) if name == dirName => d
        }
        child match {
          case Some(value) => value
          case None =>
            val newChild = Dir(mutable.ArrayBuffer.empty, dirName)
            node.children += newChild
            newChild
        }
    }
    result
  }