}
token = 0;
}
- if (token == Scanner.TokenNameEOF)
+ if (token == Scanner.TokenNameEOF) {
break;
+ } else if (token == Scanner.TokenNameHEREDOC) {
+ // no indentation for heredocs and HTML !
+ outputCurrentTokenWithoutIndent(Scanner.TokenNameHEREDOC, 0);
+ continue;
+ } else if (token == Scanner.TokenNameINLINE_HTML) {
+ // no indentation for heredocs and HTML !
+ int newLineCount = 1;
+ if (scanner.startPosition==0) {
+ newLineCount = 0;
+ }
+ outputCurrentTokenWithoutIndent(Scanner.TokenNameINLINE_HTML, newLineCount);
+ continue;
+ }
/*
* ## MODIFYING the indentation level before generating new lines and indentation in the output string
*/
break;
case TokenNameswitch:
case TokenNamefor:
+ case TokenNameforeach:
case TokenNameif:
case TokenNamewhile:
if (openParenthesisCount == openParenthesis.length) {
if (constructionsCount > 0) {
switch (constructions[constructionsCount - 1]) {
case TokenNamefor:
+ case TokenNameforeach:
//indentationLevel += popExclusiveUntilBlock();
//break;
case TokenNameswitch:
// |= (15.25.2)
return "|="; //$NON-NLS-1$
case TokenNameDOT_EQUAL:
- // .=
+ // .=
return ".="; //$NON-NLS-1$
case TokenNameDOT:
// .
}
}
+ private void outputCurrentTokenWithoutIndent(int token, int newLineCount) {
+ newLine(newLineCount);
+ formattedSource.append(scanner.source, scanner.startPosition, scanner.currentPosition - scanner.startPosition);
+ }
+
/**
* Appends <code>token</code> to the formatted output. <br>
* If it contains <code>\n</code>, append a LINE_SEPARATOR and indent after it.
//return (currentToken == TokenNameCOMMA || currentToken ==
// TokenNameSEMICOLON);
return currentToken != TokenNameif && currentToken != TokenNameLPAREN && currentToken != TokenNameNOT
- && currentToken != TokenNamewhile && currentToken != TokenNamefor && currentToken != TokenNameswitch;
+ && currentToken != TokenNamewhile && currentToken != TokenNamefor && currentToken != TokenNameforeach
+ && currentToken != TokenNameswitch;
}
/**