fun split()

in intellij-plugin-structure/structure-base/src/main/kotlin/com/jetbrains/plugin/structure/base/utils/trie/Trie.kt [82:113]


    fun split(str: CharSequence): List<Pair<Char?, String>> {
      if (str.isEmpty()) return emptyList()
      val result = ArrayList<Pair<Char?, String>>()
      var separator: Char? = null
      var i = 0
      // trim start separators
      while (str[i] == '/' || str[i] == '.' || str[i] == '$') {
        i++
      }
      var startIndex = i
      while (i < str.length) {
        val c = str[i]
        if (c == '/' || c == '.' || c == '$') {
          if (startIndex != i) {
            result.add(Pair(separator, str.substring(startIndex, i)))
          } else if (startIndex != 0) {
            i++
            continue
          }
          separator = c
          startIndex = i + 1
        }
        i++
      }
      if (startIndex < str.length) {
        result.add(Pair(separator, str.substring(startIndex, str.length)))
      }
      if (result.isNotEmpty()) {
        assert(result.first().first == null)
      }
      return result
    }