2009/4/2 Justin Martin <[email protected]>:
> Hello everyone,
>
> --
> PHP Internals - PHP Runtime Development Mailing List
> To unsubscribe, visit: http://www.php.net/unsub.php
>
Just as an update, I reviewed my previous patch and re did it (attached).
Instead of adding the highlight.class_* INI entries, this simply adds two:
* highlight.inline_styles (default 1), set to 0 to trigger the use of classes
* highlight.class_prefix (default ""), set to a class prefix of choice
to prevent naming conflicts
I thought adding a class_prefix would be better than adding a yet
another class name on the <code> tag, prefixing should work out just
perfect.
--
Kalle Sommer Nielsen
[email protected]
Index: ZendEngine2/zend_highlight.c
===================================================================
RCS file: /repository/ZendEngine2/zend_highlight.c,v
retrieving revision 1.49.2.3.2.2.2.6
diff -u -r1.49.2.3.2.2.2.6 zend_highlight.c
--- ZendEngine2/zend_highlight.c 31 Dec 2008 11:15:32 -0000
1.49.2.3.2.2.2.6
+++ ZendEngine2/zend_highlight.c 2 Apr 2009 17:59:48 -0000
@@ -86,37 +86,47 @@
#endif /* ZEND_MULTIBYTE */
}
-
ZEND_API void zend_highlight(zend_syntax_highlighter_ini
*syntax_highlighter_ini TSRMLS_DC)
{
zval token;
int token_type;
+ zend_bool inline_styles = syntax_highlighter_ini->inline_style;
+ char *class_prefix = syntax_highlighter_ini->class_prefix;
char *last_color = syntax_highlighter_ini->highlight_html;
+ char *class = "html";
char *next_color;
zend_printf("<code>");
- zend_printf("<span style=\"color: %s\">\n", last_color);
+
+ if (inline_styles) {
+ zend_printf("<span style=\"color: %s\">\n", last_color);
+ } else {
+ zend_printf("<span class=\"%s%s\">", class_prefix, class);
+ }
+
/* highlight stuff coming back from zendlex() */
token.type = 0;
while ((token_type=lex_scan(&token TSRMLS_CC))) {
switch (token_type) {
case T_INLINE_HTML:
+ class = "html";
next_color =
syntax_highlighter_ini->highlight_html;
break;
case T_COMMENT:
case T_DOC_COMMENT:
+ class = "comment";
next_color =
syntax_highlighter_ini->highlight_comment;
break;
case T_OPEN_TAG:
case T_OPEN_TAG_WITH_ECHO:
- next_color =
syntax_highlighter_ini->highlight_default;
- break;
case T_CLOSE_TAG:
+ class = "default";
next_color =
syntax_highlighter_ini->highlight_default;
break;
case '"':
case T_ENCAPSED_AND_WHITESPACE:
case T_CONSTANT_ENCAPSED_STRING:
+ class = "string";
next_color =
syntax_highlighter_ini->highlight_string;
break;
case T_WHITESPACE:
@@ -125,7 +135,9 @@
continue;
break;
default:
+ class = "default";
if (token.type == 0) {
+ class = "keyword";
next_color =
syntax_highlighter_ini->highlight_keyword;
} else {
next_color =
syntax_highlighter_ini->highlight_default;
@@ -139,7 +151,11 @@
}
last_color = next_color;
if (last_color !=
syntax_highlighter_ini->highlight_html) {
- zend_printf("<span style=\"color: %s\">",
last_color);
+ if (inline_styles) {
+ zend_printf("<span style=\"color:
%s\">", last_color);
+ } else {
+ zend_printf("<span class=\"%s%s\">",
class_prefix, class);
+ }
}
}
switch (token_type) {
@@ -177,7 +193,11 @@
zend_printf("</span>");
}
if (syntax_highlighter_ini->highlight_comment !=
syntax_highlighter_ini->highlight_html) {
- zend_printf("<span style=\"color: %s\">",
syntax_highlighter_ini->highlight_comment);
+ if (inline_styles) {
+ zend_printf("<span style=\"color:
%s\">", syntax_highlighter_ini->highlight_comment);
+ } else {
+ zend_printf("<span
class=\"%scomment\">", class_prefix);
+ }
}
}
zend_html_puts(LANG_SCNG(yy_text), (LANG_SCNG(yy_limit) -
LANG_SCNG(yy_text)) TSRMLS_CC);
Index: ZendEngine2/zend_highlight.h
===================================================================
RCS file: /repository/ZendEngine2/zend_highlight.h,v
retrieving revision 1.25.2.1.2.1.2.2
diff -u -r1.25.2.1.2.1.2.2 zend_highlight.h
--- ZendEngine2/zend_highlight.h 31 Dec 2008 11:15:32 -0000
1.25.2.1.2.1.2.2
+++ ZendEngine2/zend_highlight.h 2 Apr 2009 17:59:58 -0000
@@ -36,6 +36,8 @@
char *highlight_default;
char *highlight_string;
char *highlight_keyword;
+ zend_bool inline_styles;
+ char *class_prefix;
} zend_syntax_highlighter_ini;
Index: ext/standard/basic_functions.c
===================================================================
RCS file: /repository/php-src/ext/standard/basic_functions.c,v
retrieving revision 1.725.2.31.2.64.2.87
diff -u -r1.725.2.31.2.64.2.87 basic_functions.c
--- ext/standard/basic_functions.c 27 Mar 2009 02:32:56 -0000
1.725.2.31.2.64.2.87
+++ ext/standard/basic_functions.c 2 Apr 2009 17:59:21 -0000
@@ -5090,6 +5090,8 @@
syntax_highlighter_ini->highlight_html = INI_STR("highlight.html");
syntax_highlighter_ini->highlight_keyword =
INI_STR("highlight.keyword");
syntax_highlighter_ini->highlight_string = INI_STR("highlight.string");
+ syntax_highlighter_ini->inline_styles =
INI_BOOL("highlight.inline_styles");
+ syntax_highlighter_ini->class_prefix =
INI_STR("highlight.class_prefix");
}
/* }}} */
Index: main/main.c
===================================================================
RCS file: /repository/php-src/main/main.c,v
retrieving revision 1.640.2.23.2.57.2.47
diff -u -r1.640.2.23.2.57.2.47 main.c
--- main/main.c 27 Mar 2009 02:34:06 -0000 1.640.2.23.2.57.2.47
+++ main/main.c 2 Apr 2009 17:57:59 -0000
@@ -394,13 +394,15 @@
/* {{{ PHP_INI
*/
PHP_INI_BEGIN()
- PHP_INI_ENTRY_EX("define_syslog_variables", "0",
PHP_INI_ALL, NULL, php_ini_boolean_displayer_cb)
- PHP_INI_ENTRY_EX("highlight.bg", HL_BG_COLOR,
PHP_INI_ALL, NULL, php_ini_color_displayer_cb)
+ PHP_INI_ENTRY_EX("define_syslog_variables", "0",
PHP_INI_ALL, NULL, php_ini_boolean_displayer_cb)
+ PHP_INI_ENTRY_EX("highlight.bg", HL_BG_COLOR,
PHP_INI_ALL, NULL, php_ini_color_displayer_cb)
PHP_INI_ENTRY_EX("highlight.comment", HL_COMMENT_COLOR,
PHP_INI_ALL, NULL, php_ini_color_displayer_cb)
PHP_INI_ENTRY_EX("highlight.default", HL_DEFAULT_COLOR,
PHP_INI_ALL, NULL, php_ini_color_displayer_cb)
- PHP_INI_ENTRY_EX("highlight.html", HL_HTML_COLOR,
PHP_INI_ALL, NULL, php_ini_color_displayer_cb)
+ PHP_INI_ENTRY_EX("highlight.html", HL_HTML_COLOR,
PHP_INI_ALL, NULL, php_ini_color_displayer_cb)
PHP_INI_ENTRY_EX("highlight.keyword", HL_KEYWORD_COLOR,
PHP_INI_ALL, NULL, php_ini_color_displayer_cb)
PHP_INI_ENTRY_EX("highlight.string", HL_STRING_COLOR,
PHP_INI_ALL, NULL, php_ini_color_displayer_cb)
+ PHP_INI_ENTRY_EX("highlight.inline_styles", "1",
PHP_INI_ALL, NULL, php_ini_boolean_displayer_cb)
+ PHP_INI_ENTRY("highlight.class_prefix", "",
PHP_INI_ALL, NULL)
STD_PHP_INI_BOOLEAN("allow_call_time_pass_reference", "1",
PHP_INI_SYSTEM|PHP_INI_PERDIR, OnUpdateBool,
allow_call_time_pass_reference, zend_compiler_globals, compiler_globals)
STD_PHP_INI_BOOLEAN("asp_tags", "0",
PHP_INI_SYSTEM|PHP_INI_PERDIR, OnUpdateBool,
asp_tags, zend_compiler_globals,
compiler_globals)
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php