Skip to content

Commit 7de44c9

Browse files
committed
simpler casting for integers, longs, doubles, floats, and booleans
1 parent d1787a0 commit 7de44c9

1 file changed

Lines changed: 30 additions & 35 deletions

File tree

src/main/resources/io/viash/platforms/nextflow/arguments/_checkArgumentType.nf

Lines changed: 30 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -66,64 +66,56 @@ def _checkArgumentType(String stage, Map par, Object value, String errorIdentifi
6666
foundClass = "List[${e.foundClass}]"
6767
}
6868
} else if (par.type == "string") {
69-
// cast to string if need be
69+
// cast to string if need be. only cast if the value is a GString
7070
if (value instanceof GString) {
71-
value = value.toString()
71+
value = value as String
7272
}
7373
expectedClass = value instanceof String ? null : "String"
7474
} else if (par.type == "integer") {
7575
// cast to integer if need be
76-
if (value instanceof String) {
76+
if (value !instanceof Integer) {
7777
try {
78-
value = value.toInteger()
78+
value = value as Integer
7979
} catch (NumberFormatException e) {
80-
// do nothing
80+
expectedClass = "Integer"
8181
}
8282
}
83-
if (value instanceof java.math.BigInteger) {
84-
value = value.intValue()
85-
}
86-
expectedClass = value instanceof Integer ? null : "Integer"
8783
} else if (par.type == "long") {
8884
// cast to long if need be
89-
if (value instanceof String) {
85+
if (value !instanceof Long) {
9086
try {
91-
value = value.toLong()
87+
value = value as Long
9288
} catch (NumberFormatException e) {
93-
// do nothing
89+
expectedClass = "Long"
9490
}
9591
}
96-
if (value instanceof Integer) {
97-
value = value.toLong()
98-
}
99-
expectedClass = value instanceof Long ? null : "Long"
10092
} else if (par.type == "double") {
10193
// cast to double if need be
102-
if (value instanceof String) {
94+
if (value !instanceof Double) {
10395
try {
104-
value = value.toDouble()
96+
value = value as Double
10597
} catch (NumberFormatException e) {
106-
// do nothing
98+
expectedClass = "Double"
10799
}
108100
}
109-
if (value instanceof java.math.BigDecimal || value instanceof java.math.BigInteger) {
110-
value = value.doubleValue()
111-
}
112-
if (value instanceof Float || value instanceof Integer || value instanceof Long) {
113-
value = value.toDouble()
101+
} else if (par.type == "float") {
102+
// cast to float if need be
103+
if (value !instanceof Float) {
104+
try {
105+
value = value as Float
106+
} catch (NumberFormatException e) {
107+
expectedClass = "Float"
108+
}
114109
}
115-
expectedClass = value instanceof Double ? null : "Double"
116110
} else if (par.type == "boolean" | par.type == "boolean_true" | par.type == "boolean_false") {
117111
// cast to boolean if need be
118-
if (value instanceof String) {
119-
def valueLower = value.toLowerCase()
120-
if (valueLower == "true") {
121-
value = true
122-
} else if (valueLower == "false") {
123-
value = false
112+
if (value !instanceof Boolean) {
113+
try {
114+
value = value as Boolean
115+
} catch (Exception e) {
116+
expectedClass = "Boolean"
124117
}
125118
}
126-
expectedClass = value instanceof Boolean ? null : "Boolean"
127119
} else if (par.type == "file" && (par.direction == "input" || stage == "output")) {
128120
// cast to path if need be
129121
if (value instanceof String) {
@@ -135,10 +127,13 @@ def _checkArgumentType(String stage, Map par, Object value, String errorIdentifi
135127
expectedClass = value instanceof Path ? null : "Path"
136128
} else if (par.type == "file" && stage == "input" && par.direction == "output") {
137129
// cast to string if need be
138-
if (value instanceof GString) {
139-
value = value.toString()
130+
if (value !instanceof String) {
131+
try {
132+
value = value as String
133+
} catch (Exception e) {
134+
expectedClass = "String"
135+
}
140136
}
141-
expectedClass = value instanceof String ? null : "String"
142137
} else {
143138
// didn't find a match for par.type
144139
expectedClass = par.type

0 commit comments

Comments
 (0)