ENHANCED: more readable indentation of nested ( If -> Then ; Else ) constructs
Example:
?- portray_clause((h :- ( a -> b ; c -> d ; e, f))).
h :-
( a ->
b
; c ->
d
; e,
f
).
true.
This commit is contained in:
@@ -494,8 +494,8 @@ body_(Var, C, I, VNs) --> { var(Var) }, !,
|
|||||||
body_((A,B), C, I, VNs) --> !,
|
body_((A,B), C, I, VNs) --> !,
|
||||||
body_(A, C, I, VNs), ",\n",
|
body_(A, C, I, VNs), ",\n",
|
||||||
body_(B, 0, I, VNs).
|
body_(B, 0, I, VNs).
|
||||||
body_((A ; Else), C, I, VNs) --> % ( If -> Then ; Else )
|
body_(Body, C, I, VNs) -->
|
||||||
{ nonvar(A), A = (If -> Then) },
|
{ body_if_then_else(Body, If, Then, Else) },
|
||||||
!,
|
!,
|
||||||
indent_to(C, I),
|
indent_to(C, I),
|
||||||
"( ",
|
"( ",
|
||||||
@@ -513,16 +513,28 @@ body_(Goal, C, I, VNs) -->
|
|||||||
indent_to(C, I), literal(Goal, VNs).
|
indent_to(C, I), literal(Goal, VNs).
|
||||||
|
|
||||||
|
|
||||||
|
% True iff Body has the shape ( If -> Then ; Else ).
|
||||||
|
body_if_then_else(Body, If, Then, Else) :-
|
||||||
|
nonvar(Body),
|
||||||
|
Body = (A ; Else),
|
||||||
|
nonvar(A),
|
||||||
|
A = (If -> Then).
|
||||||
|
|
||||||
else_branch(Else, C, I, VNs) -->
|
else_branch(Else, C, I, VNs) -->
|
||||||
indent_to(0, I),
|
indent_to(0, I),
|
||||||
"; ",
|
"; ",
|
||||||
body_(Else, C, C, VNs), "\n",
|
( { body_if_then_else(Else, If, Then, NextElse) } ->
|
||||||
indent_to(0, I),
|
{ C1 is I + 3 },
|
||||||
")".
|
body_(If, C1, C1, VNs), " ->\n",
|
||||||
|
body_(Then, 0, C1, VNs), "\n",
|
||||||
|
else_branch(NextElse, C1, I, VNs)
|
||||||
|
; body_(Else, C, C, VNs), "\n",
|
||||||
|
indent_to(0, I),
|
||||||
|
")"
|
||||||
|
).
|
||||||
|
|
||||||
indent_to(CurrentColumn, Indent) -->
|
indent_to(CurrentColumn, Indent) -->
|
||||||
{ Delta is Indent - CurrentColumn },
|
format_("~t~*|", [Indent-CurrentColumn]).
|
||||||
format_("~t~*|", [Delta]).
|
|
||||||
|
|
||||||
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
?- portray_clause(a).
|
?- portray_clause(a).
|
||||||
|
|||||||
Reference in New Issue
Block a user