lib/phlylabs/idna_convert.class.php
protected function _apply_cannonical_ordering($input)
    {
        $swap = true;
        $size = count($input);
        while ($swap) {
            $swap = false;
            $last = $this->_get_combining_class(intval($input[0]));
            for ($i = 0; $i < $size - 1; ++$i) {
                $next = $this->_get_combining_class(intval($input[$i + 1]));
                if ($next != 0 && $last > $next) {
                    // Move item leftward until it fits
                    for ($j = $i + 1; $j > 0; --$j) {
                        if ($this->_get_combining_class(intval($input[$j - 1])) <= $next) {
                            break;
                        }
                        $t = intval($input[$j]);
                        $input[$j] = intval($input[$j - 1]);
                        $input[$j - 1] = $t;
                        $swap = true;
                    }
                    // Reentering the loop looking at the old character again
                    $next = $last;
                }
                $last = $next;
            }
        }
        return $input;
    }
protected function _apply_cannonical_ordering($input)
    {
        $swap = true;
        $size = count($input);
        while ($swap) {
            $swap = false;
            $last = $this->_get_combining_class(intval($input[0]));
            for ($i = 0; $i < $size - 1; ++$i) {
                $next = $this->_get_combining_class(intval($input[$i + 1]));
                if ($next != 0 && $last > $next) {
                    // Move item leftward until it fits
                    for ($j = $i + 1; $j > 0; --$j) {
                        if ($this->_get_combining_class(intval($input[$j - 1])) <= $next) {
                            break;
                        }
                        $t = intval($input[$j]);
                        $input[$j] = intval($input[$j - 1]);
                        $input[$j - 1] = $t;
                        $swap = true;
                    }
                    // Reentering the loop looking at the old character again
                    $next = $last;
                }
                $last = $next;
            }
        }
        return $input;
    }
protected function _apply_cannonical_ordering ( $ input ) { $ swap = true ; $ size = count ( $ input ) ; while ( $ swap ) { $ swap = false ; $ last = $ this -> _get_combining_class ( intval ( $ input [ 0 ] ) ) ; for ( $ i = 0 ; $ i < $ size - 1 ; ++ $ i ) { $ next = $ this -> _get_combining_class ( intval ( $ input [ $ i + 1 ] ) ) ; if ( $ next != 0 && $ last > $ next ) { // Move item leftward until it fits for ( $ j = $ i + 1 ; $ j > 0 ; -- $ j ) { if ( $ this -> _get_combining_class ( intval ( $ input [ $ j - 1 ] ) ) <= $ next ) { break ; } $ t = intval ( $ input [ $ j ] ) ; $ input [ $ j ] = intval ( $ input [ $ j - 1 ] ) ; $ input [ $ j - 1 ] = $ t ; $ swap = true ; } // Reentering the loop looking at the old character again $ next = $ last ; } $ last = $ next ; } } return $ input ; }
Applies the cannonical ordering of a decomposed UCS4 sequence
@param    array      Decomposed UCS4 sequence
@return   array      Ordered USC4 sequence
Applies the cannonical ordering of a decomposed UCS4 sequence