All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.nthportal.shell.parsers.WhitespaceDelineatingParser.scala Maven / Gradle / Ivy

package com.nthportal.shell
package parsers

import java.util.regex.Pattern

/**
  * A [[LineParser]] which separates arguments with whitespace.
  */
object WhitespaceDelineatingParser extends LineParser {
  private val patternStr = "\\s+"
  private val endPattern = Pattern.compile("^.*" + patternStr + "$")
  private val splitPattern = Pattern.compile(patternStr)

  /**
    * @inheritdoc
    */
  override def parseLineForExecution(line: String): ImmutableSeq[String] = {
    if (line.isEmpty) Nil
    else splitPattern.split(line).to[ImmutableSeq]
  }

  /**
    * @inheritdoc
    */
  override def parseLineForTabCompletion(line: String): ImmutableSeq[String] = {
    if (line.isEmpty) List("")
    else if (endPattern.matcher(line).matches()) parseLineForExecution(line) :+ ""
    else parseLineForExecution(line)
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy