fun createRangeAddresses()

in vim-engine/src/main/kotlin/com/maddyhome/idea/vim/ex/ranges/Address.kt [104:130]


    fun createRangeAddresses(str: String, offset: Int, move: Boolean): Array<Address>? {
      // Current line
      if (str.isEmpty() || str == ".") {
        return arrayOf(CurrentLineAddress(offset, move))
      } else if (str == "%") {
        return arrayOf(
          LineAddress(1, 0, move),  // Remember, one-based!
          LastLineAddress(offset, move)
        )
      } else if (str == "$") {
        return arrayOf(LastLineAddress(offset, move))
      } else if (str.startsWith("'") && str.length == 2) {
        return arrayOf(MarkAddress(str[1], offset, move))
      } else if (str.startsWith("/") || str.startsWith("\\/") || str.startsWith("\\&")) {
        return arrayOf(SearchAddress(str, offset, move))
      } else if (str.startsWith("?") || str.startsWith("\\?")) {
        return arrayOf(SearchAddress(str, offset, move))
      } else {
        try {
          val line1 = str.toInt()
          return arrayOf(LineAddress(line1, offset, move))
        } catch (e: NumberFormatException) { // Ignore - we'll send back bad range later.
        }
      }
      // User entered an invalid range.
      return null
    }