12 changed files with 4 additions and 249 deletions
-
2Makefile.frag
-
2Zend/Makefile.am
-
155Zend/zend_indent.c
-
37Zend/zend_indent.h
-
2configure.in
-
1ext/readline/readline_cli.c
-
11main/main.c
-
18sapi/cgi/cgi_main.c
-
21sapi/cli/php_cli.c
-
1sapi/cli/php_cli_server.c
-
1sapi/fpm/fpm/fpm_main.c
-
2win32/build/config.w32
@ -1,155 +0,0 @@ |
|||
/* |
|||
+----------------------------------------------------------------------+ |
|||
| Zend Engine | |
|||
+----------------------------------------------------------------------+ |
|||
| Copyright (c) 1998-2015 Zend Technologies Ltd. (http://www.zend.com) | |
|||
+----------------------------------------------------------------------+ |
|||
| This source file is subject to version 2.00 of the Zend license, | |
|||
| that is bundled with this package in the file LICENSE, and is | |
|||
| available through the world-wide-web at the following url: | |
|||
| http://www.zend.com/license/2_00.txt. | |
|||
| If you did not receive a copy of the Zend license and are unable to | |
|||
| obtain it through the world-wide-web, please send a note to | |
|||
| license@zend.com so we can mail you a copy immediately. | |
|||
+----------------------------------------------------------------------+ |
|||
| Authors: Andi Gutmans <andi@zend.com> | |
|||
| Zeev Suraski <zeev@zend.com> | |
|||
+----------------------------------------------------------------------+ |
|||
*/ |
|||
|
|||
/* $Id$ */ |
|||
|
|||
/* This indenter doesn't really work, it's here for no particular reason. */ |
|||
|
|||
|
|||
#include "zend.h" |
|||
#include <zend_language_parser.h> |
|||
#include "zend_compile.h" |
|||
#include "zend_indent.h" |
|||
|
|||
#define zendtext LANG_SCNG(yy_text) |
|||
#define zendleng LANG_SCNG(yy_leng) |
|||
|
|||
|
|||
static void handle_whitespace(unsigned int *emit_whitespace) |
|||
{ |
|||
unsigned char c; |
|||
unsigned int i; |
|||
|
|||
for (c=0; c<128; c++) { |
|||
if (emit_whitespace[c]>0) { |
|||
for (i=0; i<emit_whitespace[c]; i++) { |
|||
zend_write((char *) &c, 1); |
|||
} |
|||
} |
|||
} |
|||
memset(emit_whitespace, 0, sizeof(int)*256); |
|||
} |
|||
|
|||
|
|||
ZEND_API void zend_indent(void) |
|||
{ |
|||
zval token; |
|||
int token_type; |
|||
int in_string=0; |
|||
unsigned int nest_level=0; |
|||
unsigned int emit_whitespace[256]; |
|||
unsigned int i; |
|||
|
|||
memset(emit_whitespace, 0, sizeof(int)*256); |
|||
|
|||
/* highlight stuff coming back from zendlex() */ |
|||
ZVAL_UNDEF(&token); |
|||
while ((token_type=lex_scan(&token))) { |
|||
switch (token_type) { |
|||
case T_INLINE_HTML: |
|||
zend_write((char*)LANG_SCNG(yy_text), LANG_SCNG(yy_leng)); |
|||
break; |
|||
case T_WHITESPACE: { |
|||
ZVAL_UNDEF(&token); |
|||
/* eat whitespace, emit newlines */ |
|||
for (i=0; i<LANG_SCNG(yy_leng); i++) { |
|||
emit_whitespace[(unsigned char) LANG_SCNG(yy_text)[i]]++; |
|||
} |
|||
continue; |
|||
} |
|||
break; |
|||
case '"': |
|||
in_string = !in_string; |
|||
/* break missing intentionally */ |
|||
default: |
|||
if (Z_TYPE(token) == IS_UNDEF) { |
|||
/* keyword */ |
|||
switch (token_type) { |
|||
case ',': |
|||
ZEND_PUTS(", "); |
|||
goto dflt_printout; |
|||
break; |
|||
case '{': |
|||
nest_level++; |
|||
if (emit_whitespace['\n']>0) { |
|||
ZEND_PUTS(" {\n"); |
|||
memset(emit_whitespace, 0, sizeof(int)*256); |
|||
} else { |
|||
ZEND_PUTS("{"); |
|||
} |
|||
break; |
|||
case '}': |
|||
nest_level--; |
|||
if (emit_whitespace['\n']==0) { |
|||
ZEND_PUTS("\n"); |
|||
} |
|||
for (i=0; i<nest_level; i++) { |
|||
ZEND_PUTS(" "); |
|||
} |
|||
goto dflt_printout; |
|||
break; |
|||
dflt_printout: |
|||
default: |
|||
if (emit_whitespace['\n']>0) { |
|||
for (i=0; i<emit_whitespace['\n']; i++) { |
|||
ZEND_PUTS("\n"); |
|||
} |
|||
memset(emit_whitespace, 0, sizeof(int)*256); |
|||
for (i=0; i<nest_level; i++) { |
|||
ZEND_PUTS(" "); |
|||
} |
|||
} else { |
|||
handle_whitespace(emit_whitespace); |
|||
} |
|||
zend_write((char*)LANG_SCNG(yy_text), LANG_SCNG(yy_leng)); |
|||
break; |
|||
} |
|||
} else { |
|||
handle_whitespace(emit_whitespace); |
|||
if (in_string) { |
|||
zend_write((char*)LANG_SCNG(yy_text), LANG_SCNG(yy_leng)); |
|||
/* a part of a string */ |
|||
} else { |
|||
zend_write((char*)LANG_SCNG(yy_text), LANG_SCNG(yy_leng)); |
|||
} |
|||
} |
|||
break; |
|||
} |
|||
if (Z_TYPE(token) == IS_STRING) { |
|||
switch (token_type) { |
|||
case T_OPEN_TAG: |
|||
case T_CLOSE_TAG: |
|||
case T_WHITESPACE: |
|||
break; |
|||
default: |
|||
zend_string_release(Z_STR(token)); |
|||
break; |
|||
} |
|||
} |
|||
ZVAL_UNDEF(&token); |
|||
} |
|||
} |
|||
|
|||
/* |
|||
* Local variables: |
|||
* tab-width: 4 |
|||
* c-basic-offset: 4 |
|||
* indent-tabs-mode: t |
|||
* End: |
|||
*/ |
|||
@ -1,37 +0,0 @@ |
|||
/* |
|||
+----------------------------------------------------------------------+ |
|||
| Zend Engine | |
|||
+----------------------------------------------------------------------+ |
|||
| Copyright (c) 1998-2015 Zend Technologies Ltd. (http://www.zend.com) | |
|||
+----------------------------------------------------------------------+ |
|||
| This source file is subject to version 2.00 of the Zend license, | |
|||
| that is bundled with this package in the file LICENSE, and is | |
|||
| available through the world-wide-web at the following url: | |
|||
| http://www.zend.com/license/2_00.txt. | |
|||
| If you did not receive a copy of the Zend license and are unable to | |
|||
| obtain it through the world-wide-web, please send a note to | |
|||
| license@zend.com so we can mail you a copy immediately. | |
|||
+----------------------------------------------------------------------+ |
|||
| Authors: Andi Gutmans <andi@zend.com> | |
|||
| Zeev Suraski <zeev@zend.com> | |
|||
+----------------------------------------------------------------------+ |
|||
*/ |
|||
|
|||
/* $Id$ */ |
|||
|
|||
#ifndef ZEND_INDENT_H |
|||
#define ZEND_INDENT_H |
|||
|
|||
BEGIN_EXTERN_C() |
|||
ZEND_API void zend_indent(void); |
|||
END_EXTERN_C() |
|||
|
|||
#endif /* ZEND_INDENT_H */ |
|||
|
|||
/* |
|||
* Local variables: |
|||
* tab-width: 4 |
|||
* c-basic-offset: 4 |
|||
* indent-tabs-mode: t |
|||
* End: |
|||
*/ |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue