~ d+$ΣzOӰ*caN)5J\λʘ$5\Jҽ 5 CpN_M#JC-2Ecz'(eRY=?O 07;u47RR@I%0bbC gB^mϪECVWˣ-Ϗ.v7A!lN f9"$TcF0JoE"y h8I0^*-M5+ i1{ЍJfqm0? HPvD ?6w7'/d #ҟp.2dM$Lc|6FXw5{B ?*=SOp͋旗,%_HjS?~gȰl(9OS6`7B]1T0ģXiel8Ծ'*|(]͠2CCۚ^,LyObOCL6{I*84&KAWecޱJ I8@ӹoK /,T[.7q=K uGUk΋5,HhV黼|yigMS|6ۑ9Țܽϫ< e jm뻀E˨qKS@KLnؚ1A4LZ8=攙c-(Z:dz aay0vjtKr,wZŐ!Nדc.PBJ0W$_$"_O.K6Pn!#Jxm273zi;+$MQIVyKG^w KބGp[B1*4{9vz3،CVzhVMm.g?Tud%f`kmKF,Q\˨ {of &~薶XȠ603rs8:U+,,6 4ӞoU#o6(bC&E'`|$'sփfVKF?Lyc.k3aD}85|?"ɰ_:zR)hDM2:mCIS%.w<%}n3 Lɾ+{`43+ rN`z <ϗՇz=qh$5dI]o ='(7&qRAGP[<}J}ZD{ݪ]ӤQ `2+Dco &9a7݂vvxTAm _DV{8 w8]o2)^(IN2IYz8`P9;BP&p X'+=B$v |=Y^]u#/$$ &Kt8$G>k-H}Mf~}oᦵHs昐B,(dIىLs{^PM xqK5Ykt_߅- ?@<[QMF ĢQ$3n :d4F;TMpǕߘj .9o'=EF(g gtaٳeΏVV9c7sB4Z53= J"ƾ8 bA(^U[:^(@RqjO"#\5Ѩ%.VGb)CR5w';{Q"*k Xw֠{X 8f^ցspw׺ĴљsŸSBwTdˡ<ڠЊ&hjs\w@P,~<-̐0!ԃߙEyrTSrcܺZ5;XGA(5Zv3={7f. X;&:~dKV39 ĢQ$32w ;>{gG~1=Z׳#]ӤQ `2+D22Tj*okپ x>o,W%QfAն ĢQ$3@Εߵ 5mIٻ@q ΃K8$zX zt85rϲpueЧ%0֧?f)=0k5D[ Ia2.X9Oe6VA/ǩU^ʷ)[ϊؼi@`¸<Ƈ]$j괫[ZKCrhzwCsk|yAt4i]=ێXK?Rkqq.&@ ĢQ$3Y0.^Wys*S@L[|x _ ~x_DmɔH // We don't do this, because Firefox // doesn't float an extra tfoot to the // bottom like it does for the first one. $node->name = 'tbody'; $content[] = $node; $ws_accum =& $content; } break; case 'tfoot': // see above for some aveats $tbody_mode = true; if ($tfoot === false) { $tfoot = $node; $ws_accum =& $after_tfoot_ws; } else { $node->name = 'tbody'; $content[] = $node; $ws_accum =& $content; } break; case 'colgroup': case 'col': $cols[] = $node; $ws_accum =& $cols; break; case '#PCDATA': // How is whitespace handled? We treat is as sticky to // the *end* of the previous element. So all of the // nonsense we have worked on is to keep things // together. if (!empty($node->is_whitespace)) { $ws_accum[] = $node; } break; } } if (empty($content) && $thead === false && $tfoot === false) { return false; } $ret = $initial_ws; if ($caption !== false) { $ret[] = $caption; $ret = array_merge($ret, $after_caption_ws); } if ($cols !== false) { $ret = array_merge($ret, $cols); } if ($thead !== false) { $ret[] = $thead; $ret = array_merge($ret, $after_thead_ws); } if ($tfoot !== false) { $ret[] = $tfoot; $ret = array_merge($ret, $after_tfoot_ws); } if ($tbody_mode) { // we have to shuffle tr into tbody $current_tr_tbody = null; foreach($content as $node) { switch ($node->name) { case 'tbody': $current_tr_tbody = null; $ret[] = $node; break; case 'tr': if ($current_tr_tbody === null) { $current_tr_tbody = new HTMLPurifier_Node_Element('tbody'); $ret[] = $current_tr_tbody; } $current_tr_tbody->children[] = $node; break; case '#PCDATA': //assert($node->is_whitespace); if ($current_tr_tbody === null) { $ret[] = $node; } else { $current_tr_tbody->children[] = $node; } break; } } } else { $ret = array_merge($ret, $content); } return $ret; } } // vim: et sw=4 sts=4