Skip to content

Commit 9563798

Browse files
committed
Add conditional block IfThenElse
1 parent 5c0d691 commit 9563798

File tree

2 files changed

+20
-3
lines changed

2 files changed

+20
-3
lines changed

wdlgen/common.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,16 @@
44
from .util import WdlBase
55

66

7+
class IfThenElse(WdlBase):
8+
def __init__(self, condition, value_if_true, value_if_false):
9+
self.condition = condition
10+
self.value_if_true = value_if_true
11+
self.value_if_false = value_if_false
12+
13+
def get_string(self):
14+
return f"if {self.condition} then {self.value_if_true} else {self.value_if_false}"
15+
16+
717
class Input(WdlBase):
818
def __init__(self, data_type: WdlType, name: str, expression: str = None, requires_quotes=True):
919
self.type = data_type
@@ -31,14 +41,16 @@ def get_string_from_type(self, wdtype):
3141

3242
if isinstance(expression, bool):
3343
expression = "true" if expression else "false"
44+
elif hasattr(expression, 'get_string'):
45+
expression = expression.get_string()
3446

3547
if requires_quotes:
3648
expression = f'"{expression}"'
3749

3850
return self.format.format(
3951
type=wdtype,
4052
name=self.name,
41-
def_w_equals=((" = " + expression) if expression is not None else "")
53+
def_w_equals=((" = " + str(expression)) if expression is not None else "")
4254
)
4355

4456

wdlgen/task.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,13 @@ def __init__(self, **kwargs):
2929
self.kwargs = kwargs
3030

3131
def get_string(self):
32-
return ['{k}: {v}'.format(k=k, v=v) for k,v in self.kwargs.items()]
32+
l = []
33+
for k, v in self.kwargs.items():
34+
val = v
35+
if hasattr(v, 'get_string'):
36+
val = v.get_string()
37+
l.append('{k}: {v}'.format(k=k, v=val))
38+
return l
3339

3440
def add_docker(self, docker):
3541
self.kwargs["docker"] = f'"{docker}"'
@@ -46,7 +52,6 @@ def add_gcp_disk(self, disk_size_gb):
4652
def add_gcp_boot_disk(self, disk_size_gb: int):
4753
self.kwargs["bootDiskSizeGb"] = int(disk_size_gb)
4854

49-
5055
class Command(WdlBase):
5156
"""
5257
Past the regular attributes, I've built the command generation here, because that's where

0 commit comments

Comments
 (0)