Skip to content
This repository has been archived by the owner on Aug 10, 2021. It is now read-only.

Commit

Permalink
Type as object
Browse files Browse the repository at this point in the history
  • Loading branch information
Elena Lepilkina authored and Elena Lepilkina committed Jun 23, 2019
1 parent 6431066 commit f9aed67
Show file tree
Hide file tree
Showing 6 changed files with 41 additions and 41 deletions.
8 changes: 4 additions & 4 deletions kliopt/src/main/kotlin/org/jetbrains/kliopt/ArgType.kt
Original file line number Diff line number Diff line change
Expand Up @@ -15,23 +15,23 @@ sealed class ArgType<T : Any>(val hasParameter: kotlin.Boolean) {
abstract val convertion: (value: kotlin.String, name: kotlin.String, helpMessage: kotlin.String)->T

// Flags that can be only set/unset.
class Boolean : ArgType<kotlin.Boolean>(false) {
object Boolean : ArgType<kotlin.Boolean>(false) {
override val description: kotlin.String
get() = ""

override val convertion: (value: kotlin.String, name: kotlin.String, _: kotlin.String) -> kotlin.Boolean
get() = { value, _ , _ -> if (value == "false") false else true }
}

class String : ArgType<kotlin.String>(true) {
object String : ArgType<kotlin.String>(true) {
override val description: kotlin.String
get() = "{ String }"

override val convertion: (value: kotlin.String, name: kotlin.String, _: kotlin.String) -> kotlin.String
get() = { value, _, _ -> value }
}

class Int : ArgType<kotlin.Int>(true) {
object Int : ArgType<kotlin.Int>(true) {
override val description: kotlin.String
get() = "{ Int }"

Expand All @@ -40,7 +40,7 @@ sealed class ArgType<T : Any>(val hasParameter: kotlin.Boolean) {
?: error("Option $name is expected to be integer number. $value is provided.\n$helpMessage") }
}

class Double : ArgType<kotlin.Double>(true) {
object Double : ArgType<kotlin.Double>(true) {
override val description: kotlin.String
get() = "{ Double }"

Expand Down
6 changes: 3 additions & 3 deletions kliopt/src/main/kotlin/org/jetbrains/kliopt/KliOpt.kt
Original file line number Diff line number Diff line change
Expand Up @@ -374,14 +374,14 @@ open class ArgParser(val programName: String, var useDefaultHelpShortName: Boole
// Returns true if all arguments were parsed, otherwise return false and print help message.
fun parse(args: Array<String>): Boolean {
// Add help option.
val helpDescriptor = if (useDefaultHelpShortName) OptionDescriptor(ArgType.Boolean(),
val helpDescriptor = if (useDefaultHelpShortName) OptionDescriptor(ArgType.Boolean,
"help", "h", "Usage info")
else OptionDescriptor(ArgType.Boolean(), "help", description = "Usage info")
else OptionDescriptor(ArgType.Boolean, "help", description = "Usage info")
options["help"] = ParsingValue(helpDescriptor, ArgumentSingleValue(helpDescriptor.type.convertion))

// Add default list with arguments if there can be extra free arguments.
if (skipExtraArguments) {
arguments(ArgType.String())
arguments(ArgType.String)
}
val argumentsQueue = ArgumentsQueue(arguments.map { it.value.descriptor as ArgDescriptor<*> })

Expand Down
22 changes: 11 additions & 11 deletions kliopt/src/tests/ArgumentsTests.kt
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,9 @@ class ArgumentsTests {
@Test
fun testPositionalArguments() {
val argParser = ArgParser("testParser")
val debugMode by argParser.option(ArgType.Boolean(), "debug", "d", "Debug mode")
val input by argParser.argument(ArgType.String(), "input", "Input file")
val output by argParser.argument(ArgType.String(), "output", "Output file")
val debugMode by argParser.option(ArgType.Boolean, "debug", "d", "Debug mode")
val input by argParser.argument(ArgType.String, "input", "Input file")
val output by argParser.argument(ArgType.String, "output", "Output file")
argParser.parse(arrayOf("-d", "input.txt", "out.txt"))
assertEquals(true, debugMode)
assertEquals("out.txt", output)
Expand All @@ -23,8 +23,8 @@ class ArgumentsTests {
@Test
fun testArgumetsWithAnyNumberOfValues() {
val argParser = ArgParser("testParser")
val output by argParser.argument(ArgType.String(), "output", "Output file")
val inputs by argParser.arguments(ArgType.String(), description = "Input files")
val output by argParser.argument(ArgType.String, "output", "Output file")
val inputs by argParser.arguments(ArgType.String , description = "Input files")
argParser.parse(arrayOf("out.txt", "input1.txt", "input2.txt", "input3.txt",
"input4.txt"))
assertEquals("out.txt", output)
Expand All @@ -34,9 +34,9 @@ class ArgumentsTests {
@Test
fun testArgumetsWithSeveralValues() {
val argParser = ArgParser("testParser")
val addendums by argParser.arguments(ArgType.Int(), "addendums", 2, description = "Addendums")
val output by argParser.argument(ArgType.String(), "output", "Output file")
val debugMode by argParser.option(ArgType.Boolean(), "debug", "d", "Debug mode")
val addendums by argParser.arguments(ArgType.Int, "addendums", 2, description = "Addendums")
val output by argParser.argument(ArgType.String, "output", "Output file")
val debugMode by argParser.option(ArgType.Boolean, "debug", "d", "Debug mode")
argParser.parse(arrayOf("2", "-d", "3", "out.txt"))
assertEquals("out.txt", output)
val (first, second) = addendums!!
Expand All @@ -48,9 +48,9 @@ class ArgumentsTests {
@Test
fun testSkippingExtraArguments() {
val argParser = ArgParser("testParser", skipExtraArguments = true)
val addendums by argParser.arguments(ArgType.Int(), "addendums", 2, description = "Addendums")
val output by argParser.argument(ArgType.String(), "output", "Output file")
val debugMode by argParser.option(ArgType.Boolean(), "debug", "d", "Debug mode")
val addendums by argParser.arguments(ArgType.Int, "addendums", 2, description = "Addendums")
val output by argParser.argument(ArgType.String, "output", "Output file")
val debugMode by argParser.option(ArgType.Boolean, "debug", "d", "Debug mode")
argParser.parse(arrayOf("2", "-d", "3", "out.txt", "something", "else", "in", "string"))
assertEquals("out.txt", output)
}
Expand Down
14 changes: 7 additions & 7 deletions kliopt/src/tests/ErrorTests.kt
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,9 @@ class ErrorTests {
@Test
fun testExtraArguments() {
val argParser = ArgParser("testParser")
val addendums by argParser.arguments(ArgType.Int(), "addendums", 2, description = "Addendums")
val output by argParser.argument(ArgType.String(), "output", "Output file")
val debugMode by argParser.option(ArgType.Boolean(), "debug", "d", "Debug mode")
val addendums by argParser.arguments(ArgType.Int, "addendums", 2, description = "Addendums")
val output by argParser.argument(ArgType.String, "output", "Output file")
val debugMode by argParser.option(ArgType.Boolean, "debug", "d", "Debug mode")
val exception = assertFailsWith<IllegalStateException> { argParser.parse(
arrayOf("2", "-d", "3", "out.txt", "something", "else", "in", "string")) }
assertTrue("Too many arguments! Couldn't proccess argument something" in exception.message!!)
Expand All @@ -22,8 +22,8 @@ class ErrorTests {
@Test
fun testUnknownOption() {
val argParser = ArgParser("testParser")
val output by argParser.option(ArgType.String(), "output", "o", "Output file")
val input by argParser.option(ArgType.String(), "input", "i", "Input file")
val output by argParser.option(ArgType.String, "output", "o", "Output file")
val input by argParser.option(ArgType.String, "input", "i", "Input file")
val exception = assertFailsWith<IllegalStateException> {
argParser.parse(arrayOf("-o", "out.txt", "-d", "-i", "input.txt"))
}
Expand All @@ -33,7 +33,7 @@ class ErrorTests {
@Test
fun testWrongFormat() {
val argParser = ArgParser("testParser")
val number by argParser.option(ArgType.Int(), "number", description = "Integer number")
val number by argParser.option(ArgType.Int, "number", description = "Integer number")
val exception = assertFailsWith<IllegalStateException> {
argParser.parse(arrayOf("--number", "out.txt"))
}
Expand All @@ -43,7 +43,7 @@ class ErrorTests {
@Test
fun testWrongChoice() {
val argParser = ArgParser("testParser")
val useShortForm by argParser.option(ArgType.Boolean(), "short", "s", "Show short version of report", "false")
val useShortForm by argParser.option(ArgType.Boolean, "short", "s", "Show short version of report", "false")
val renders by argParser.options(ArgType.Choice(listOf("text", "html")),
"renders", "r", "Renders for showing information", "text", isMultiple = true)
val exception = assertFailsWith<IllegalStateException> {
Expand Down
18 changes: 9 additions & 9 deletions kliopt/src/tests/OptionsTests.kt
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ class OptionsTests {
@Test
fun testShortForm() {
val argParser = ArgParser("testParser")
val output by argParser.option(ArgType.String(), "output", "o", "Output file")
val input by argParser.option(ArgType.String(), "input", "i", "Input file")
val output by argParser.option(ArgType.String, "output", "o", "Output file")
val input by argParser.option(ArgType.String, "input", "i", "Input file")
argParser.parse(arrayOf("-o", "out.txt", "-i", "input.txt"))
assertEquals("out.txt", output)
assertEquals("input.txt", input)
Expand All @@ -21,8 +21,8 @@ class OptionsTests {
@Test
fun testFullForm() {
val argParser = ArgParser("testParser")
val output by argParser.option(ArgType.String(), "output", "o", "Output file")
val input by argParser.option(ArgType.String(), "input", "i", "Input file")
val output by argParser.option(ArgType.String, "output", "o", "Output file")
val input by argParser.option(ArgType.String, "input", "i", "Input file")
argParser.parse(arrayOf("--output", "out.txt", "--input", "input.txt"))
assertEquals("out.txt", output)
assertEquals("input.txt", input)
Expand All @@ -31,8 +31,8 @@ class OptionsTests {
@Test
fun testJavaPrefix() {
val argParser = ArgParser("testParser", prefixStyle = ArgParser.OPTION_PREFIX_STYLE.JVM)
val output by argParser.option(ArgType.String(), "output", "o", "Output file")
val input by argParser.option(ArgType.String(), "input", "i", "Input file")
val output by argParser.option(ArgType.String, "output", "o", "Output file")
val input by argParser.option(ArgType.String, "input", "i", "Input file")
argParser.parse(arrayOf("-output", "out.txt", "-i", "input.txt"))
assertEquals("out.txt", output)
assertEquals("input.txt", input)
Expand All @@ -41,7 +41,7 @@ class OptionsTests {
@Test
fun testMultipleOptions() {
val argParser = ArgParser("testParser")
val useShortForm by argParser.option(ArgType.Boolean(), "short", "s", "Show short version of report", "false")
val useShortForm by argParser.option(ArgType.Boolean, "short", "s", "Show short version of report", "false")
val renders by argParser.options(ArgType.Choice(listOf("text", "html", "xml", "json")),
"renders", "r", "Renders for showing information", "text", isMultiple = true)
argParser.parse(arrayOf("-s", "-r", "text", "-r", "json"))
Expand All @@ -55,10 +55,10 @@ class OptionsTests {
@Test
fun testDefaultOptions() {
val argParser = ArgParser("testParser")
val useShortForm by argParser.option(ArgType.Boolean(), "short", "s", "Show short version of report", "false")
val useShortForm by argParser.option(ArgType.Boolean, "short", "s", "Show short version of report", "false")
val renders by argParser.options(ArgType.Choice(listOf("text", "html", "xml", "json")),
"renders", "r", "Renders for showing information", "text", isMultiple = true)
val output by argParser.option(ArgType.String(), "output", "o", "Output file")
val output by argParser.option(ArgType.String, "output", "o", "Output file")
argParser.parse(arrayOf("-o", "out.txt"))
assertEquals(false, useShortForm)
assertEquals("text", renders!![0])
Expand Down
14 changes: 7 additions & 7 deletions kliopt/src/tests/SubcommandsTests.kt
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,10 @@ class SubcommandsTests {
@Test
fun testSubcommand() {
val argParser = ArgParser("testParser")
val output by argParser.option(ArgType.String(), "output", "o", "Output file")
val output by argParser.option(ArgType.String, "output", "o", "Output file")
class Summary: Subcommand("summary") {
val invert by option(ArgType.Boolean(), "invert", "i", "Invert results")
val addendums by arguments(ArgType.Int(), "addendums", description = "Addendums")
val invert by option(ArgType.Boolean, "invert", "i", "Invert results")
val addendums by arguments(ArgType.Int, "addendums", description = "Addendums")
var result: Int = 0

override fun execute() {
Expand All @@ -32,10 +32,10 @@ class SubcommandsTests {
@Test
fun testCommonOptions() {
abstract class CommonOptions(name: String): Subcommand(name) {
val numbers by arguments(ArgType.Int(), "numbers", description = "Numbers")
val numbers by arguments(ArgType.Int, "numbers", description = "Numbers")
}
class Summary: CommonOptions("summary") {
val invert by option(ArgType.Boolean(), "invert", "i", "Invert results")
val invert by option(ArgType.Boolean, "invert", "i", "Invert results")
var result: Int = 0

override fun execute() {
Expand Down Expand Up @@ -70,7 +70,7 @@ class SubcommandsTests {
val argParser = ArgParser("testParser")

class Summary: Subcommand("summary") {
val addendums by arguments(ArgType.Int(), "addendums", description = "Addendums")
val addendums by arguments(ArgType.Int, "addendums", description = "Addendums")
var result: Int = 0

override fun execute() {
Expand All @@ -82,7 +82,7 @@ class SubcommandsTests {
init {
subcommands(Summary())
}
val invert by option(ArgType.Boolean(), "invert", "i", "Invert results")
val invert by option(ArgType.Boolean, "invert", "i", "Invert results")
var result: Int = 0

override fun execute() {
Expand Down

0 comments on commit f9aed67

Please sign in to comment.