public function parseNext( $text, WikiObjectModelCollection $parentObj, $offset = 0 ) { $lastLF = ( $offset == 0 || $text { $offset - 1 } == "\n" ); $text = substr( $text, $offset ); if ( !$lastLF ) return null; $r = preg_match( '/^(={1,6})/', $text, $m ); if ( $r ) { $text1 = substr( $text, strlen( $m[0] ) ); $s = explode( "\n", $text1, 2 ); $r = preg_match( '/(={1,})\s*$/', $s[0], $m1, PREG_OFFSET_CAPTURE ); if ( $r ) { $len = strlen( $m[0] ) + strlen( $s[0] ) + 1/* \n */; $level = strlen( $m[1] ) < strlen( $m1[1][0] ) ? strlen( $m[1] ) : strlen( $m1[1][0] ); $obj = new WOMSectionModel( trim( substr( WOMSectionParser::$heading, 0, strlen( $m[1] ) - $level ) . substr( $s[0], 0, $m1[1][1] + strlen( $m1[1][0] ) - $level ) ), $level ); while ( $parentObj != null && ( $parentObj->getTypeID() == WOM_TYPE_SECTION ) && ( $parentObj->getLevel() >= $obj->getLevel() ) ) { $parentObj = $parentObj->getParent(); } $obj->setParent( $parentObj ); return array( 'len' => $len, 'obj' => $obj ); } } return null; }