Skip to content

Commit 760f74f

Browse files
using isDefault for default case
1 parent 87a863b commit 760f74f

File tree

1 file changed

+57
-50
lines changed

1 file changed

+57
-50
lines changed

src/main/java/com/regnosys/rosetta/generator/python/expressions/PythonExpressionGenerator.xtend

Lines changed: 57 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -292,29 +292,33 @@ class PythonExpressionGenerator {
292292

293293
var funcNames = new ArrayList<String>()
294294

295-
for (i : 0 ..< expr.cases.size-1) {
296-
val thenExpr= expr.cases.get(i)
297-
val thenExprDef = generateExpression(thenExpr.getExpression(), ifLevel + 1, isLambda)
298-
val funcName = '''_then_«funcNames.size()+1»'''
299-
funcNames.add(funcName)
300-
switchCondBlocks.add(
301-
'''
302-
def «funcName»():
303-
return «thenExprDef»
304-
'''
305-
)
295+
for (i : 0 ..< expr.cases.size) {
296+
if(expr.cases.get(i).isDefault()){
297+
//default case
298+
val defaultExprDef = generateExpression(expr.getDefault(), 0, isLambda)
299+
val defaultFuncName = '''_then_default'''
300+
funcNames.add(defaultFuncName)
301+
switchCondBlocks.add(
302+
'''
303+
def «defaultFuncName»():
304+
return «defaultExprDef»
305+
'''
306+
)}
307+
else{
308+
val thenExpr= expr.cases.get(i)
309+
val thenExprDef = generateExpression(thenExpr.getExpression(), ifLevel + 1, isLambda)
310+
val funcName = '''_then_«funcNames.size()+1»'''
311+
funcNames.add(funcName)
312+
switchCondBlocks.add(
313+
'''
314+
def «funcName»():
315+
return «thenExprDef»
316+
'''
317+
)
318+
}
306319
}
307320

308-
//default case
309-
val defaultExprDef = generateExpression(expr.getDefault(), 0, isLambda)
310-
val defaultFuncName = '''_then_default'''
311-
funcNames.add(defaultFuncName)
312-
switchCondBlocks.add(
313-
'''
314-
def «defaultFuncName»():
315-
return «defaultExprDef»
316-
'''
317-
)
321+
318322
var _builder = new StringConcatenation()
319323

320324
// Generate switch logic
@@ -323,38 +327,41 @@ class PythonExpressionGenerator {
323327
_builder.append(attr)
324328
_builder.newLine()
325329
// Append each conditional
326-
for (i : 0 ..< expr.cases.size-1) {
327-
val guard = expr.cases.get(i).getGuard()
328-
329-
val prefix = (i == 0) ? "if " : "elif "
330-
_builder.append(indent)
331-
_builder.append(prefix)
332-
if (guard.getLiteralGuard() !== null) {
333-
val guardExpr = generateExpression(guard.getLiteralGuard(), 0, isLambda)
334-
_builder.append("switchAttribute == ")
335-
_builder.append(guardExpr)
336-
} else {
337-
val guardExpr = getGuardExpression(guard, isLambda)
338-
_builder.append(guardExpr)
330+
for (i : 0 ..< expr.cases.size) {
331+
if(expr.cases.get(i).isDefault()){
332+
// Default else
333+
_builder.append(indent)
334+
_builder.append("else:")
335+
_builder.newLine()
336+
_builder.append(indent)
337+
_builder.append(" return ")
338+
_builder.append(funcNames.last)
339+
_builder.append("()")
340+
}
341+
else{
342+
val guard = expr.cases.get(i).getGuard()
343+
344+
val prefix = (i == 0) ? "if " : "elif "
345+
_builder.append(indent)
346+
_builder.append(prefix)
347+
if (guard.getLiteralGuard() !== null) {
348+
val guardExpr = generateExpression(guard.getLiteralGuard(), 0, isLambda)
349+
_builder.append("switchAttribute == ")
350+
_builder.append(guardExpr)
351+
} else {
352+
val guardExpr = getGuardExpression(guard, isLambda)
353+
_builder.append(guardExpr)
354+
}
355+
_builder.append(":")
356+
_builder.newLine()
357+
_builder.append(indent)
358+
_builder.append(" return ")
359+
_builder.append(funcNames.get(i))
360+
_builder.append("()")
361+
_builder.newLine()
339362
}
340-
_builder.append(":")
341-
_builder.newLine()
342-
_builder.append(indent)
343-
_builder.append(" return ")
344-
_builder.append(funcNames.get(i))
345-
_builder.append("()")
346-
_builder.newLine()
347363
}
348364

349-
// Default else
350-
_builder.append(indent)
351-
_builder.append("else:")
352-
_builder.newLine()
353-
_builder.append(indent)
354-
_builder.append(" return ")
355-
_builder.append(funcNames.last)
356-
_builder.append("()")
357-
358365
return _builder.toString
359366
}
360367

0 commit comments

Comments
 (0)