diff options
Diffstat (limited to 'media/CodeMirror-0.62/contrib/php/index.html')
-rw-r--r-- | media/CodeMirror-0.62/contrib/php/index.html | 292 |
1 files changed, 292 insertions, 0 deletions
diff --git a/media/CodeMirror-0.62/contrib/php/index.html b/media/CodeMirror-0.62/contrib/php/index.html new file mode 100644 index 0000000..f35f5d2 --- /dev/null +++ b/media/CodeMirror-0.62/contrib/php/index.html @@ -0,0 +1,292 @@ +<!-- +Copyright (c) 2008-2009 Yahoo! Inc. All rights reserved. +The copyrights embodied in the content of this file are licensed by +Yahoo! Inc. under the BSD (revised) open source license + +@author Dan Vlad Dascalescu <dandv@yahoo-inc.com> + +--> + + +<html xmlns="http://www.w3.org/1999/xhtml"> + <head> + <script src="../../js/codemirror.js" type="text/javascript"></script> + <title>CodeMirror: PHP+HTML+JavaScript+CSS mixed-mode demonstration</title> + <link rel="stylesheet" type="text/css" href="../../css/docs.css"/> + </head> + <body style="padding: 20px;"> + + <p>This is a complex demonstration of the <b>PHP+HTML+JavaScript+CSS mixed-mode + syntax highlight</b> capabilities of <a href="../../index.html">CodeMirror</a>. + <?php ... ?> tags use the PHP parser, <script> tags use the JavaScript + parser, and <style> tags use the CSS parser. The rest of the content is + parsed using the XML parser in HTML mode.</p> + + <p>Features of the PHP parser: + <ul> + <li>special "deprecated" style for PHP4 keywords like 'var' + <li>support for PHP 5.3 keywords: 'namespace', 'use' + <li>911 predefined constants, 1301 predefined functions, 105 predeclared classes + from a typical PHP installation in a LAMP environment + <li>new feature: syntax error flagging, thus enabling strict parsing of: + <ol> + <li>function definitions with explicitly or implicitly typed arguments and default values + <li>modifiers (public, static etc.) applied to method and member definitions + <li>foreach(array_expression as $key [=> $value]) loops + </ol> + <li>differentiation between single-quoted strings and double-quoted interpolating strings + </ul> + </p> + + <div style="border: 1px solid black; padding: 3px; background-color: #F8F8F8"> + <textarea id="code" cols="120" rows="30"> +The "root" parser is XML in HTML mode. +Next, we can switch into PHP mode, for example. This is +<?php echo 'text output by'; +?> +PHP. </b> +On the line above, we just had an XML syntax error due to the </b> tag not being opened. + +<?xml version='1.0' encoding='UTF-8' standalone='yes'?> HTML text will follow +<html> + <head> + <title>Similarly, the 'script' tag will switch to the JavaScript parser:</title> + <script type="text/javascript"> + // Press enter inside the object and your new line will be suitably + // indented. + var keyBindings = { + enter: "newline-and-indent", + tab: "reindent-selection", + ctrl_enter: "reparse-buffer", + ctrl_z: "undo", + ctrl_y: "redo", + ctrl_backspace: "undo-for-safari-which-stupidly-enough-blocks-ctrl-z" + }; + + // Press tab on the next line and the wrong indentation will be fixed. + var regex = /foo|bar/i; + + function example(x) { + // Local variables get a different colour than global ones. + var y = 44.4; + return x + y - z; + } + </script> + <style> + /* Some example CSS */ + + @import url("something.css"); + + body { + margin: 0; + padding: 3em 6em; + font-family: tahoma, arial, sans-serif; + color: #000; + } + + #navigation a { + font-weight: bold; + text-decoration: none !important; + } + + h1 { + font-size: 2.5em; + } + + h1:before, h2:before { + content: "::"; + } + + code { + font-family: courier, monospace; + font-size: 80%; + color: #418A8A; + } + </style> + </head> + + <body> + + The PHP code below contains some deliberate errors. Play with the editor by fixing them + and observing how the highlight changes. + + <?php + namespace A; + namespace A::B::C; + namespace A::::B; + namespace A::B::C::; + namespace A::B::C::D x; + self::range($row['lft'], $row['rgt'])); // error: extra ')' + $a = (b() + 4) 5 foo; // error: missing operators + self::$var; + $parent = self::range($max + 1, $max + 1); + $row[attributes][$attribute_name] = $attribute_value; + $row[attributes()][$attribute_name] = $attribute_value; + $row[attributes(5)][$attribute_name] = $attribute_value; + $row[$attributes()][$attribute_name] = $attribute_value; + abstract class 5 extends foo implements echo { + private function domainObjectBuilder() { + return $this->use_domain_object_builder + ? $this->domain()->objectBuilder() + : null; + } + + const $myconst = 'some string'; + $array[myconst] = 4; + // this is a single-line C++-style comment + # this is a single-line shell-style comment + private var $a = __FILE__; + protected static $b = timezone_transitions_get('some parameter here'); + global $g = isset("string"); + static $s = hash_update_file; // warning: predefined function non-call + function mike ($var) $foo; + mike(A::func(param)); + func($b $c); // error: function parameters must be comma-separated + foo bar; // error: no operator + $baz $quux; // error: no operator + public abstract function loadPageXML(util_FilePath $filename, $merge=0+$foo, $x, $y=3) { + $newrow[$key] = $val; + $newresult[] = $row; + $state = $row['c'] == 1; + $attribute_values[$attribute_name] = null; + $row['attributes'][$attribute_name] = $attribute_value; + $result[$row['element']][$row['attribute']] = $row['value']; + $sql = "multiline string +line2 is special - it'll interpolate variables like $state and method calls +{$this->cache->add($key, 5)} and maybe \"more\" + +line5"; + $sql = 'multiline string +single quoting means no \'interpolation\' like "$start" or method call +{$this->cache->add($key, 5)} will happen + +line5'; + $bitpattern = 1 << 2; + $bitpattern <<= 3; + $incorrect = <<< 5 EOSTRING // FIXME: CodeMirror update bug: add a letter before 5 and notice that syntax is not updated until EOF, even with continuousScanning: 500 +error: the identifier must conform to the identifier rules +EOSTRING; + $sql = <<< EOSQL + SELECT attribute, element, value + FROM attribute_values + WHERE dimension = ? +EOSQL; + $this->lr_cache->add($key, self::range($row['lft'], $row['rgt'])); + $composite_string = <<<EOSTRING +some lines here +EOSTRING +. 'something extra'; + $page_lft = ($domain->name() == 'page') ? $start + 1 : $page_start + 1; + echo "This is class foo"; + echo "a = ".$this ->a[2+3*$array["foo"]].""; + echo "b = {$this->b}"; // FIXME: highlight interpolation in strings + } + final function makecoffee error($types = array("cappuccino"), $coffeeMaker = NULL) { + $out_of_way_amount = $max - $child->left() + 1; + $absolute_pos = $child->left() - $move->width(); + $varfunc(1, 'x'); + $varfunc(1, 'x') + foo() - 5; + $funcarray[$i]('param1', $param2); + $lr[$domain_name] = $this->get_left_and_right($domain, + $dimension_name, + $element_name); + $domain_list = is_null($domain) ? + r3_Domain::names() : + array($domain->name()); + foreach (r3_Domain::names() as $domain_name) { + $placeholders = 'distance LIKE ' + . implode(array_fill(1, $num_distances, '?'), + ' OR distance LIKE '); + + } + return $this->target*$this->trans+myfunc(__METHOD__); + /* + echo 'This is a test'; /* This comment will cause a problem */ + */ + } + switch( $type ) { + case "r3core_AddTemplateToTargetEvent": + $this->notifyAddTemplateToTarget( $genevent ); + break; + case "r3core_GenerateTargetEvent" $this: + for($i=0; $i<=this->method(); $i++) { + echo 'Syntax "highlighting"'; + } + try { + foreach($array xor $loader->parse_fn($filename) as $key => value) { + namespace r3; + } + } catch( Exception $e ) { + /** restore the backup + */ + $this->loadAll($tmp, $event, true); + // `php -l` doesn't complain at all at this (it assumes string constants): + this + makes * no - sense; + } + + break; + + default moo: + throw new r3_util_Exception( get_class( $genevent ) . " does not map" ); + } + + + }; + + ?> + + <r3:cphp> + php("works", $here, 2); + </r3:cphp> + + <r4:cphp> + class foo { + // a comment + var $a; + var $b; + }; + </r4:cphp> + + <h1>This is an <?php # echo 'simple';?> example.</h1> + <p>The header above will say 'This is an example'.</p> + <h1>This is an <?php // echo 'simple';?> example.</h1> + + <?php echo; ?> + <body> + +<?php echo "<html> + <head> + <script> + var foo = 'bar'; + </script> + <style> + span.test {font-family: arial, 'lucida console', sans-serif} + </style> + </head> + <body> + <!-- comment --> + </body> +</html>"; ?> + +</body> +</html> + + + </textarea> + </div> + + <script type="text/javascript"> + var editor = CodeMirror.fromTextArea('code', { + height: "350px", + parserfile: ["parsexml.js", "parsecss.js", "tokenizejavascript.js", "parsejavascript.js", + "../contrib/php/js/tokenizephp.js", "../contrib/php/js/parsephp.js", + "../contrib/php/js/parsephphtmlmixed.js"], + stylesheet: ["../../css/xmlcolors.css", "../../css/jscolors.css", "../../css/csscolors.css", "css/phpcolors.css"], + path: "../../js/", + continuousScanning: 500 + }); + </script> + + + </body> +</html> |