@@ -11,9 +11,26 @@ import io.github.vigoo.clipp.errors.ParserError
1111import scala .util .Try
1212
1313
14+ /**
15+ * Type class for parsing a command line argument to type T
16+ * @tparam T
17+ */
1418trait ParameterParser [T ] {
19+ /**
20+ * Parse the command line argument into type T or fail with an error message
21+ * @param value command line argument
22+ * @return Either failure or the parsed value
23+ */
1524 def parse (value : String ): Either [String , T ]
16- def default : T
25+
26+ /**
27+ * An example of the parsed value, used by the usage graph generator to simulate
28+ * the execution of the parser.
29+ *
30+ * It is never used as a result of the parser when it is executed on
31+ * real input.
32+ */
33+ def example : T
1734}
1835
1936case class ParameterParserMetadata (programName : String , description : Option [String ])
@@ -171,25 +188,25 @@ object parsers {
171188 implicit val stringParameterParser : ParameterParser [String ] = new ParameterParser [String ] {
172189 override def parse (value : String ): Either [String , String ] = Right (value)
173190
174- override def default : String = " "
191+ override def example : String = " "
175192 }
176193
177194 implicit val intParameterParser : ParameterParser [Int ] = new ParameterParser [Int ] {
178195 override def parse (value : String ): Either [String , Int ] = Try (value.toInt).toEither.left.map(_.getMessage)
179196
180- override def default : Int = 0
197+ override def example : Int = 0
181198 }
182199
183200 implicit val doubleParameterParser : ParameterParser [Double ] = new ParameterParser [Double ] {
184201 override def parse (value : String ): Either [String , Double ] = Try (value.toDouble).toEither.left.map(_.getMessage)
185202
186- override def default : Double = 0.0
203+ override def example : Double = 0.0
187204 }
188205
189206 implicit val fileParameterParser : ParameterParser [File ] = new ParameterParser [File ] {
190207 override def parse (value : String ): Either [String , File ] = Right (new File (value))
191208
192- override def default : File = new File (" x" )
209+ override def example : File = new File (" x" )
193210 }
194211}
195212
0 commit comments