Skip to content

Commit

Permalink
Merge pull request #173 from vigoo/rename-default
Browse files Browse the repository at this point in the history
Rename 'default' to 'example'
  • Loading branch information
vigoo authored Mar 5, 2021
2 parents bbe59ae + 6563ab5 commit abd1f45
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 7 deletions.
27 changes: 22 additions & 5 deletions clipp-core/src/main/scala/io/github/vigoo/clipp/clipp.scala
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,26 @@ import io.github.vigoo.clipp.errors.ParserError
import scala.util.Try


/**
* Type class for parsing a command line argument to type T
* @tparam T
*/
trait ParameterParser[T] {
/**
* Parse the command line argument into type T or fail with an error message
* @param value command line argument
* @return Either failure or the parsed value
*/
def parse(value: String): Either[String, T]
def default: T

/**
* An example of the parsed value, used by the usage graph generator to simulate
* the execution of the parser.
*
* It is never used as a result of the parser when it is executed on
* real input.
*/
def example: T
}

case class ParameterParserMetadata(programName: String, description: Option[String])
Expand Down Expand Up @@ -171,25 +188,25 @@ object parsers {
implicit val stringParameterParser: ParameterParser[String] = new ParameterParser[String] {
override def parse(value: String): Either[String, String] = Right(value)

override def default: String = ""
override def example: String = ""
}

implicit val intParameterParser: ParameterParser[Int] = new ParameterParser[Int] {
override def parse(value: String): Either[String, Int] = Try(value.toInt).toEither.left.map(_.getMessage)

override def default: Int = 0
override def example: Int = 0
}

implicit val doubleParameterParser: ParameterParser[Double] = new ParameterParser[Double] {
override def parse(value: String): Either[String, Double] = Try(value.toDouble).toEither.left.map(_.getMessage)

override def default: Double = 0.0
override def example: Double = 0.0
}

implicit val fileParameterParser: ParameterParser[File] = new ParameterParser[File] {
override def parse(value: String): Either[String, File] = Right(new File(value))

override def default: File = new File("x")
override def example: File = new File("x")
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,9 +40,9 @@ object UsageInfoExtractor {
case flag: Flag =>
impl.flag(flag)
case namedParameter: NamedParameter[_] =>
impl.namedParameter(namedParameter, namedParameter.parameterParser.default)
impl.namedParameter(namedParameter, namedParameter.parameterParser.example)
case simpleParameter: SimpleParameter[_] =>
impl.simpleParameter(simpleParameter, simpleParameter.parameterParser.default)
impl.simpleParameter(simpleParameter, simpleParameter.parameterParser.example)
case command: Command =>
impl.command(command)
case Optional(parameter) =>
Expand Down

0 comments on commit abd1f45

Please sign in to comment.