@@ -966,10 +966,10 @@ discard block |
||
| 966 | 966 | */ |
| 967 | 967 | public function getFunctionName() |
| 968 | 968 | { |
| 969 | - // function name is used as base for caching, so it must be unique for |
|
| 970 | - // every combination of settings that changes code in compiled template |
|
| 969 | + // function name is used as base for caching, so it must be unique for |
|
| 970 | + // every combination of settings that changes code in compiled template |
|
| 971 | 971 | |
| 972 | - if (!$this->_functionName) { |
|
| 972 | + if (!$this->_functionName) { |
|
| 973 | 973 | |
| 974 | 974 | // just to make tempalte name recognizable |
| 975 | 975 | $basename = preg_replace('/\.[a-z]{3,5}$/', '', basename($this->_source->getRealPath())); |
@@ -989,7 +989,7 @@ discard block |
||
| 989 | 989 | $hash = strtr(rtrim(base64_encode($hash),"="),"+/=","_A_"); |
| 990 | 990 | |
| 991 | 991 | $this->_functionName = $this->getFunctionNamePrefix($this->_source->getLastModifiedTime()) . |
| 992 | - $basename . '__' . $hash; |
|
| 992 | + $basename . '__' . $hash; |
|
| 993 | 993 | } |
| 994 | 994 | return $this->_functionName; |
| 995 | 995 | } |
@@ -52,14 +52,14 @@ |
||
| 52 | 52 | |
| 53 | 53 | $macroname = strtr($this->expression, '-', '_'); |
| 54 | 54 | |
| 55 | - // throw error if attempting to define and use macro at same time |
|
| 56 | - // [should perhaps be a TemplateException? but I don't know how to set that up...] |
|
| 57 | - if ($defineAttr = $this->phpelement->getAttributeNodeNS( |
|
| 58 | - 'http://xml.zope.org/namespaces/metal', 'define-macro')) { |
|
| 59 | - if ($defineAttr->getValue() == $macroname) |
|
| 60 | - throw new PHPTAL_TemplateException("Cannot simultaneously define and use macro '$macroname'", |
|
| 61 | - $this->phpelement->getSourceFile(), $this->phpelement->getSourceLine()); |
|
| 62 | - } |
|
| 55 | + // throw error if attempting to define and use macro at same time |
|
| 56 | + // [should perhaps be a TemplateException? but I don't know how to set that up...] |
|
| 57 | + if ($defineAttr = $this->phpelement->getAttributeNodeNS( |
|
| 58 | + 'http://xml.zope.org/namespaces/metal', 'define-macro')) { |
|
| 59 | + if ($defineAttr->getValue() == $macroname) |
|
| 60 | + throw new PHPTAL_TemplateException("Cannot simultaneously define and use macro '$macroname'", |
|
| 61 | + $this->phpelement->getSourceFile(), $this->phpelement->getSourceLine()); |
|
| 62 | + } |
|
| 63 | 63 | |
| 64 | 64 | // local macro (no filename specified) and non dynamic macro name |
| 65 | 65 | // can be called directly if it's a known function (just generated or seen in previous compilation) |
@@ -67,12 +67,12 @@ |
||
| 67 | 67 | } elseif ($cache_per_expression == 'nothing') { |
| 68 | 68 | /* do nothing */ |
| 69 | 69 | } elseif ($cache_per_expression) { |
| 70 | - $code = $codewriter->evaluateExpression($cache_per_expression); |
|
| 70 | + $code = $codewriter->evaluateExpression($cache_per_expression); |
|
| 71 | 71 | |
| 72 | - if (is_array($code)) throw new PHPTAL_ParserException("Chained expressions in per-cache directive are not supported", |
|
| 72 | + if (is_array($code)) throw new PHPTAL_ParserException("Chained expressions in per-cache directive are not supported", |
|
| 73 | 73 | $this->phpelement->getSourceFile(), $this->phpelement->getSourceLine()); |
| 74 | 74 | |
| 75 | - $cache_tag = '('.$code.')."@".' . $cache_tag; |
|
| 75 | + $cache_tag = '('.$code.')."@".' . $cache_tag; |
|
| 76 | 76 | } |
| 77 | 77 | |
| 78 | 78 | $this->cache_filename_var = $codewriter->createTempVariable(); |
@@ -466,10 +466,10 @@ |
||
| 466 | 466 | $nsattr = PHPTAL_Dom_Defs::getInstance()->getNamespaceAttribute($domattr->getNamespaceURI(), $domattr->getLocalName()); |
| 467 | 467 | if (array_key_exists($nsattr->getPriority(), $temp)) { |
| 468 | 468 | throw new PHPTAL_TemplateException(sprintf("Attribute conflict in < %s > '%s' cannot appear with '%s'", |
| 469 | - $this->qualifiedName, |
|
| 470 | - $key, |
|
| 471 | - $temp[$nsattr->getPriority()][0]->getNamespace()->getPrefix() . ':' . $temp[$nsattr->getPriority()][0]->getLocalName() |
|
| 472 | - ), $this->getSourceFile(), $this->getSourceLine()); |
|
| 469 | + $this->qualifiedName, |
|
| 470 | + $key, |
|
| 471 | + $temp[$nsattr->getPriority()][0]->getNamespace()->getPrefix() . ':' . $temp[$nsattr->getPriority()][0]->getLocalName() |
|
| 472 | + ), $this->getSourceFile(), $this->getSourceLine()); |
|
| 473 | 473 | } |
| 474 | 474 | $temp[$nsattr->getPriority()] = array($nsattr, $domattr); |
| 475 | 475 | } |
@@ -60,23 +60,23 @@ discard block |
||
| 60 | 60 | |
| 61 | 61 | |
| 62 | 62 | static $state_names = array( |
| 63 | - self::ST_ROOT => 'root node', |
|
| 64 | - self::ST_TEXT => 'text', |
|
| 65 | - self::ST_LT => 'start of tag', |
|
| 66 | - self::ST_TAG_NAME => 'tag name', |
|
| 67 | - self::ST_TAG_CLOSE => 'closing tag', |
|
| 68 | - self::ST_TAG_SINGLE => 'self-closing tag', |
|
| 69 | - self::ST_TAG_ATTRIBUTES => 'tag', |
|
| 70 | - self::ST_TAG_BETWEEN_ATTRIBUTE => 'tag attributes', |
|
| 71 | - self::ST_CDATA => 'CDATA', |
|
| 72 | - self::ST_COMMENT => 'comment', |
|
| 73 | - self::ST_DOCTYPE => 'doctype', |
|
| 74 | - self::ST_XMLDEC => 'XML declaration', |
|
| 75 | - self::ST_PREPROC => 'preprocessor directive', |
|
| 76 | - self::ST_ATTR_KEY => 'attribute name', |
|
| 77 | - self::ST_ATTR_EQ => 'attribute value', |
|
| 78 | - self::ST_ATTR_QUOTE => 'quoted attribute value', |
|
| 79 | - self::ST_ATTR_VALUE => 'unquoted attribute value', |
|
| 63 | + self::ST_ROOT => 'root node', |
|
| 64 | + self::ST_TEXT => 'text', |
|
| 65 | + self::ST_LT => 'start of tag', |
|
| 66 | + self::ST_TAG_NAME => 'tag name', |
|
| 67 | + self::ST_TAG_CLOSE => 'closing tag', |
|
| 68 | + self::ST_TAG_SINGLE => 'self-closing tag', |
|
| 69 | + self::ST_TAG_ATTRIBUTES => 'tag', |
|
| 70 | + self::ST_TAG_BETWEEN_ATTRIBUTE => 'tag attributes', |
|
| 71 | + self::ST_CDATA => 'CDATA', |
|
| 72 | + self::ST_COMMENT => 'comment', |
|
| 73 | + self::ST_DOCTYPE => 'doctype', |
|
| 74 | + self::ST_XMLDEC => 'XML declaration', |
|
| 75 | + self::ST_PREPROC => 'preprocessor directive', |
|
| 76 | + self::ST_ATTR_KEY => 'attribute name', |
|
| 77 | + self::ST_ATTR_EQ => 'attribute value', |
|
| 78 | + self::ST_ATTR_QUOTE => 'quoted attribute value', |
|
| 79 | + self::ST_ATTR_VALUE => 'unquoted attribute value', |
|
| 80 | 80 | ); |
| 81 | 81 | |
| 82 | 82 | private $input_encoding; |
@@ -381,15 +381,15 @@ discard block |
||
| 381 | 381 | |
| 382 | 382 | // http://www.w3.org/International/questions/qa-forms-utf-8 |
| 383 | 383 | $match = '[\x09\x0A\x0D\x20-\x7F]' // ASCII |
| 384 | - . '|[\xC2-\xDF][\x80-\xBF]' // non-overlong 2-byte |
|
| 385 | - . '|\xE0[\xA0-\xBF][\x80-\xBF]' // excluding overlongs |
|
| 386 | - . '|[\xE1-\xEC\xEE\xEE][\x80-\xBF]{2}' // straight 3-byte (exclude FFFE and FFFF) |
|
| 387 | - . '|\xEF[\x80-\xBE][\x80-\xBF]' // straight 3-byte |
|
| 388 | - . '|\xEF\xBF[\x80-\xBD]' // straight 3-byte |
|
| 389 | - . '|\xED[\x80-\x9F][\x80-\xBF]' // excluding surrogates |
|
| 390 | - . '|\xF0[\x90-\xBF][\x80-\xBF]{2}' // planes 1-3 |
|
| 391 | - . '|[\xF1-\xF3][\x80-\xBF]{3}' // planes 4-15 |
|
| 392 | - . '|\xF4[\x80-\x8F][\x80-\xBF]{2}'; // plane 16 |
|
| 384 | + . '|[\xC2-\xDF][\x80-\xBF]' // non-overlong 2-byte |
|
| 385 | + . '|\xE0[\xA0-\xBF][\x80-\xBF]' // excluding overlongs |
|
| 386 | + . '|[\xE1-\xEC\xEE\xEE][\x80-\xBF]{2}' // straight 3-byte (exclude FFFE and FFFF) |
|
| 387 | + . '|\xEF[\x80-\xBE][\x80-\xBF]' // straight 3-byte |
|
| 388 | + . '|\xEF\xBF[\x80-\xBD]' // straight 3-byte |
|
| 389 | + . '|\xED[\x80-\x9F][\x80-\xBF]' // excluding surrogates |
|
| 390 | + . '|\xF0[\x90-\xBF][\x80-\xBF]{2}' // planes 1-3 |
|
| 391 | + . '|[\xF1-\xF3][\x80-\xBF]{3}' // planes 4-15 |
|
| 392 | + . '|\xF4[\x80-\x8F][\x80-\xBF]{2}'; // plane 16 |
|
| 393 | 393 | |
| 394 | 394 | if (!preg_match('/^(?:(?>'.$match.'))+$/s',$str)) { |
| 395 | 395 | $res = preg_split('/((?>'.$match.')+)/s',$str,null,PREG_SPLIT_DELIM_CAPTURE); |
@@ -153,7 +153,7 @@ discard block |
||
| 153 | 153 | public function interpolateTalesVarsInHTML($src) |
| 154 | 154 | { |
| 155 | 155 | return preg_replace_callback('/((?:\$\$)*)\$\{(structure |text )?(.*?)\}|((?:\$\$)+)\{/isS', |
| 156 | - array($this,'_interpolateTalesVarsInHTMLCallback'), $src); |
|
| 156 | + array($this,'_interpolateTalesVarsInHTMLCallback'), $src); |
|
| 157 | 157 | } |
| 158 | 158 | |
| 159 | 159 | /** |
@@ -172,7 +172,7 @@ discard block |
||
| 172 | 172 | public function interpolateTalesVarsInCDATA($src) |
| 173 | 173 | { |
| 174 | 174 | return preg_replace_callback('/((?:\$\$)*)\$\{(structure |text )?(.*?)\}|((?:\$\$)+)\{/isS', |
| 175 | - array($this,'_interpolateTalesVarsInCDATACallback'), $src); |
|
| 175 | + array($this,'_interpolateTalesVarsInCDATACallback'), $src); |
|
| 176 | 176 | } |
| 177 | 177 | |
| 178 | 178 | /** |
@@ -172,8 +172,8 @@ discard block |
||
| 172 | 172 | } |
| 173 | 173 | |
| 174 | 174 | if ($element->getNamespaceURI() !== 'http://www.w3.org/1999/xhtml' |
| 175 | - && $element->getNamespaceURI() !== '') { |
|
| 176 | - return false; |
|
| 175 | + && $element->getNamespaceURI() !== '') { |
|
| 176 | + return false; |
|
| 177 | 177 | } |
| 178 | 178 | |
| 179 | 179 | return in_array($element->getLocalName(), self::$breaks_line); |
@@ -189,8 +189,8 @@ discard block |
||
| 189 | 189 | private function isInlineBlock(PHPTAL_Dom_Element $element) |
| 190 | 190 | { |
| 191 | 191 | if ($element->getNamespaceURI() !== 'http://www.w3.org/1999/xhtml' |
| 192 | - && $element->getNamespaceURI() !== '') { |
|
| 193 | - return false; |
|
| 192 | + && $element->getNamespaceURI() !== '') { |
|
| 193 | + return false; |
|
| 194 | 194 | } |
| 195 | 195 | |
| 196 | 196 | return in_array($element->getLocalName(), self::$inline_blocks); |
@@ -209,45 +209,45 @@ discard block |
||
| 209 | 209 | $attrs_by_qname[$attrnode->getQualifiedName()] = $attrnode; |
| 210 | 210 | } |
| 211 | 211 | |
| 212 | - if (count($attrs_by_qname) > 1) { |
|
| 213 | - uksort($attrs_by_qname, array($this, 'compareQNames')); |
|
| 214 | - $element->setAttributeNodes(array_values($attrs_by_qname)); |
|
| 215 | - } |
|
| 212 | + if (count($attrs_by_qname) > 1) { |
|
| 213 | + uksort($attrs_by_qname, array($this, 'compareQNames')); |
|
| 214 | + $element->setAttributeNodes(array_values($attrs_by_qname)); |
|
| 215 | + } |
|
| 216 | 216 | } |
| 217 | 217 | |
| 218 | 218 | /** |
| 219 | - * pre-defined order of attributes roughly by popularity |
|
| 220 | - */ |
|
| 221 | - private static $attributes_order = array( |
|
| 219 | + * pre-defined order of attributes roughly by popularity |
|
| 220 | + */ |
|
| 221 | + private static $attributes_order = array( |
|
| 222 | 222 | 'href','src','class','rel','type','title','width','height','alt','content','name','style','lang','id', |
| 223 | 223 | ); |
| 224 | 224 | |
| 225 | - /** |
|
| 226 | - * compare names according to $attributes_order array. |
|
| 227 | - * Elements that are not in array, are considered greater than all elements in array, |
|
| 228 | - * and are sorted alphabetically. |
|
| 229 | - */ |
|
| 230 | - private static function compareQNames($a, $b) { |
|
| 231 | - $a_index = array_search($a, self::$attributes_order); |
|
| 232 | - $b_index = array_search($b, self::$attributes_order); |
|
| 233 | - |
|
| 234 | - if ($a_index !== false && $b_index !== false) { |
|
| 235 | - return $a_index - $b_index; |
|
| 236 | - } |
|
| 237 | - if ($a_index === false && $b_index === false) { |
|
| 238 | - return strcmp($a, $b); |
|
| 239 | - } |
|
| 240 | - return ($a_index === false) ? 1 : -1; |
|
| 241 | - } |
|
| 225 | + /** |
|
| 226 | + * compare names according to $attributes_order array. |
|
| 227 | + * Elements that are not in array, are considered greater than all elements in array, |
|
| 228 | + * and are sorted alphabetically. |
|
| 229 | + */ |
|
| 230 | + private static function compareQNames($a, $b) { |
|
| 231 | + $a_index = array_search($a, self::$attributes_order); |
|
| 232 | + $b_index = array_search($b, self::$attributes_order); |
|
| 233 | + |
|
| 234 | + if ($a_index !== false && $b_index !== false) { |
|
| 235 | + return $a_index - $b_index; |
|
| 236 | + } |
|
| 237 | + if ($a_index === false && $b_index === false) { |
|
| 238 | + return strcmp($a, $b); |
|
| 239 | + } |
|
| 240 | + return ($a_index === false) ? 1 : -1; |
|
| 241 | + } |
|
| 242 | 242 | |
| 243 | 243 | /** |
| 244 | 244 | * HTML5 doesn't care about boilerplate |
| 245 | 245 | */ |
| 246 | - private function elementSpecificOptimizations(PHPTAL_Dom_Element $element) |
|
| 247 | - { |
|
| 248 | - if ($element->getNamespaceURI() !== 'http://www.w3.org/1999/xhtml' |
|
| 249 | - && $element->getNamespaceURI() !== '') { |
|
| 250 | - return; |
|
| 246 | + private function elementSpecificOptimizations(PHPTAL_Dom_Element $element) |
|
| 247 | + { |
|
| 248 | + if ($element->getNamespaceURI() !== 'http://www.w3.org/1999/xhtml' |
|
| 249 | + && $element->getNamespaceURI() !== '') { |
|
| 250 | + return; |
|
| 251 | 251 | } |
| 252 | 252 | |
| 253 | 253 | if ($this->getPHPTAL()->getOutputMode() !== PHPTAL::HTML5) { |
@@ -255,11 +255,11 @@ discard block |
||
| 255 | 255 | } |
| 256 | 256 | |
| 257 | 257 | // <meta charset> |
| 258 | - if ('meta' === $element->getLocalName() && |
|
| 259 | - $element->getAttributeNS('','http-equiv') === 'Content-Type') { |
|
| 260 | - $element->removeAttributeNS('','http-equiv'); |
|
| 261 | - $element->removeAttributeNS('','content'); |
|
| 262 | - $element->setAttributeNS('','charset',strtolower($this->getPHPTAL()->getEncoding())); |
|
| 258 | + if ('meta' === $element->getLocalName() && |
|
| 259 | + $element->getAttributeNS('','http-equiv') === 'Content-Type') { |
|
| 260 | + $element->removeAttributeNS('','http-equiv'); |
|
| 261 | + $element->removeAttributeNS('','content'); |
|
| 262 | + $element->setAttributeNS('','charset',strtolower($this->getPHPTAL()->getEncoding())); |
|
| 263 | 263 | } |
| 264 | 264 | elseif (('link' === $element->getLocalName() && $element->getAttributeNS('','rel') === 'stylesheet') || |
| 265 | 265 | ('style' === $element->getLocalName())) { |