ref: 03b291f6e87c28a49b135fcdd0bf8e32c1d797aa
parent: 241905d43c0cf8f81c2b10ea18ebfdc17e9222cb
author: Tor Andersson <tor@ccxvii.net>
date: Tue Feb 4 11:56:44 EST 2014
K&R style braces in pretty printer. Good style for Javascript advocates opening braces on the same line, because there is less danger of intersecting badly with automatic semicolon insertion.
--- a/jsdump.c
+++ b/jsdump.c
@@ -380,13 +380,15 @@
break;
case EXP_FUN:
- ps("(function ");
+ if (p == 0) pc('(');
+ ps("function ");
if (exp->a) pexpi(d, 0, exp->a);
pc('(');
pargs(d, exp->b);
ps(") {\n");
pstmlist(d, exp->c);
- in(d); ps("})");
+ in(d); pc('}');
+ if (p == 0) pc(')');
break;
default:
@@ -426,7 +428,7 @@
static void pblock(int d, js_Ast *block)
{
assert(block->type == STM_BLOCK);
- in(d); ps("{\n");
+ ps(" {\n");
pstmlist(d, block->a);
in(d); pc('}');
}
@@ -435,8 +437,10 @@
{
if (stm->type == STM_BLOCK)
pblock(d, stm);
- else
+ else {
+ nl();
pstm(d+1, stm);
+ }
}
static void pcaselist(int d, js_Ast *list)
@@ -470,8 +474,7 @@
pexp(d, stm->a);
pc('(');
pargs(d, stm->b);
- ps(")\n");
- in(d); ps("{\n");
+ ps(") {\n");
pstmlist(d, stm->c);
in(d); ps("}");
break;
@@ -487,16 +490,16 @@
break;
case STM_IF:
- ps("if ("); pexp(d, stm->a); ps(")\n");
+ ps("if ("); pexp(d, stm->a); ps(")");
pstmh(d, stm->b);
if (stm->c) {
- nl(); in(d); ps("else\n");
+ nl(); in(d); ps("else");
pstmh(d, stm->c);
}
break;
case STM_DO:
- ps("do\n");
+ ps("do");
pstmh(d, stm->a);
nl();
in(d); ps("while ("); pexp(d, stm->b); ps(");");
@@ -503,7 +506,7 @@
break;
case STM_WHILE:
- ps("while ("); pexp(d, stm->a); ps(")\n");
+ ps("while ("); pexp(d, stm->a); ps(")");
pstmh(d, stm->b);
break;
@@ -511,7 +514,7 @@
ps("for (");
pexp(d, stm->a); ps("; ");
pexp(d, stm->b); ps("; ");
- pexp(d, stm->c); ps(")\n");
+ pexp(d, stm->c); ps(")");
pstmh(d, stm->d);
break;
case STM_FOR_VAR:
@@ -518,19 +521,19 @@
ps("for (var ");
pvarlist(d, stm->a); ps("; ");
pexp(d, stm->b); ps("; ");
- pexp(d, stm->c); ps(")\n");
+ pexp(d, stm->c); ps(")");
pstmh(d, stm->d);
break;
case STM_FOR_IN:
ps("for (");
pexp(d, stm->a); ps(" in ");
- pexp(d, stm->b); ps(")\n");
+ pexp(d, stm->b); ps(")");
pstmh(d, stm->c);
break;
case STM_FOR_IN_VAR:
ps("for (var ");
pvarlist(d, stm->a); ps(" in ");
- pexp(d, stm->b); ps(")\n");
+ pexp(d, stm->b); ps(")");
pstmh(d, stm->c);
break;
@@ -559,15 +562,14 @@
break;
case STM_WITH:
- ps("with ("); pexp(d, stm->a); ps(")\n");
- pstm(d, stm->b);
+ ps("with ("); pexp(d, stm->a); ps(")");
+ pstmh(d, stm->b);
break;
case STM_SWITCH:
ps("switch (");
pexp(d, stm->a);
- ps(")\n");
- in(d); ps("{\n");
+ ps(") {\n");
pcaselist(d, stm->b);
in(d); ps("}");
break;
@@ -577,14 +579,14 @@
break;
case STM_TRY:
- ps("try\n");
+ ps("try");
pstmh(d, stm->a);
if (stm->b && stm->c) {
- nl(); in(d); ps("catch ("); pexp(d, stm->b); ps(")\n");
+ nl(); in(d); ps("catch ("); pexp(d, stm->b); ps(")");
pstmh(d, stm->c);
}
if (stm->d) {
- nl(); in(d); ps("finally\n");
+ nl(); in(d); ps("finally");
pstmh(d, stm->d);
}
break;