В целях демонстрации / тестирования моя реализация Category может отличаться от вашей.Вот то, что я использовал:
inner class Category(val s: String, var subCategory: Category? = null)
Теперь, как говорится, вот небольшая функция, которая будет проходить по пути к данному файлу и создавать иерархию категорий, размещая каждый элемент в правильном порядке:
private fun processCategory(currentFile: File): Category? {
val listOfDirectory = currentFile.path.split("/".toRegex())
//The root category (in your example, communications)
var rootCategory: Category? = null
//A reminder of the current Category, so we can attach the next one to it
var currentCategory: Category? = null
listOfDirectory.forEach {
if (rootCategory == null) {
//First element, so I need to create the root category
rootCategory = Category(it)
currentCategory = rootCategory
} else {
//Other elements are simply created
val nextCategory = Category(it)
//Added as a subCategory of the previous category
currentCategory!!.subCategory = nextCategory
//And we progress within the chain
currentCategory = nextCategory
}
}
//In the end, my root category will contain :
// Category("communications", Category("email", Category("Beginner", null)))
return rootCategory
}
Вы можете наверняка адаптировать этот код к вашим потребностям, заменив используемый мной конструктор на ваш YmlParser