Back to index

php5  5.3.10
Functions
zend_indent.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

ZEND_API void zend_indent (void)

Function Documentation

ZEND_API void zend_indent ( void  )

Definition at line 50 of file zend_indent.c.

{
       zval token;
       int token_type;
       int in_string=0;
       int nest_level=0;
       int emit_whitespace[256];
       int i;
       TSRMLS_FETCH();

       memset(emit_whitespace, 0, sizeof(int)*256);

       /* highlight stuff coming back from zendlex() */
       token.type = 0;
       while ((token_type=lex_scan(&token TSRMLS_CC))) {
              switch (token_type) {
                     case T_INLINE_HTML:
                            zend_write(LANG_SCNG(yy_text), LANG_SCNG(yy_leng));
                            break;
                     case T_WHITESPACE: {
                                   token.type = 0;
                                   /* 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 (token.type==0) {
                                   /* 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(LANG_SCNG(yy_text), LANG_SCNG(yy_leng));
                                                 break;
                                   }
                            } else {
                                   handle_whitespace(emit_whitespace);
                                   if (in_string) {
                                          zend_write(LANG_SCNG(yy_text), LANG_SCNG(yy_leng));
                                          /* a part of a string */
                                   } else {
                                          zend_write(LANG_SCNG(yy_text), LANG_SCNG(yy_leng));
                                   }
                            }
                            break;
              }
              if (token.type == IS_STRING) {
                     switch (token_type) {
                     case T_OPEN_TAG:
                     case T_CLOSE_TAG:
                     case T_WHITESPACE:
                            break;
                     default:
                            efree(token.value.str.val);
                            break;
                     }
              }
              token.type = 0;
       }
}

Here is the call graph for this function:

Here is the caller graph for this function: