@@ -35,7 +35,21 @@ def indent(text, prefix, predicate=None):
35
35
ret .append (line )
36
36
ret .append ('\n ' )
37
37
return '' .join (ret [:- 1 ])
38
-
38
+
39
+ def indent_multiline_assign (text ):
40
+ ret = []
41
+ texts = text .split ('\n ' )
42
+ if len (texts ) <= 1 :
43
+ return text
44
+ try :
45
+ p = texts [0 ].index ('=' )
46
+ except :
47
+ return text
48
+ ret .append (texts [0 ])
49
+ ret .append ('\n ' )
50
+ ret .append (indent ('\n ' .join (texts [1 :]), ' ' * (p + 2 )))
51
+ return '' .join (ret )
52
+
39
53
#-------------------------------------------------------------------------------
40
54
class ConvertVisitor (object ):
41
55
def visit (self , node ):
@@ -593,10 +607,14 @@ def visit_Lor(self, node):
593
607
def visit_Cond (self , node ):
594
608
filename = getfilename (node )
595
609
template = self .env .get_template (filename )
610
+ true_value = del_paren (self .visit (node .true_value ))
611
+ false_value = del_paren (self .visit (node .false_value ))
612
+ if isinstance (node .false_value , Cond ):
613
+ false_value = '' .join ( ['\n ' , false_value ] )
596
614
template_dict = {
597
615
'cond' : del_paren (self .visit (node .cond )),
598
- 'true_value' : del_paren ( self . visit ( node . true_value )) ,
599
- 'false_value' : del_paren ( self . visit ( node . false_value )) ,
616
+ 'true_value' : true_value ,
617
+ 'false_value' : false_value ,
600
618
}
601
619
rslt = template .render (template_dict )
602
620
return rslt
@@ -609,6 +627,7 @@ def visit_Assign(self, node):
609
627
'right' : self .visit (node .right ),
610
628
}
611
629
rslt = template .render (template_dict )
630
+ rslt = indent_multiline_assign (rslt )
612
631
return rslt
613
632
614
633
def visit_Always (self , node ):
@@ -652,6 +671,7 @@ def visit_Substitution(self, node):
652
671
'rdelay' : '' if node .rdelay is None else self .visit (node .rdelay ),
653
672
}
654
673
rslt = template .render (template_dict )
674
+ rslt = indent_multiline_assign (rslt )
655
675
return rslt
656
676
657
677
def visit_BlockingSubstitution (self , node ):
@@ -664,6 +684,7 @@ def visit_BlockingSubstitution(self, node):
664
684
'rdelay' : '' if node .rdelay is None else self .visit (node .rdelay ),
665
685
}
666
686
rslt = template .render (template_dict )
687
+ rslt = indent_multiline_assign (rslt )
667
688
return rslt
668
689
669
690
def visit_NonblockingSubstitution (self , node ):
@@ -676,6 +697,7 @@ def visit_NonblockingSubstitution(self, node):
676
697
'rdelay' : '' if node .rdelay is None else self .visit (node .rdelay ),
677
698
}
678
699
rslt = template .render (template_dict )
700
+ rslt = indent_multiline_assign (rslt )
679
701
return rslt
680
702
681
703
def visit_IfStatement (self , node ):
0 commit comments