All pastes #967578 Raw Edit

Someone

public text v1 · immutable
·published 2008-04-02 14:59 UTC
rendered paste body
    function parse_packages( $filename )
    {
        $lines = (strpos($filename, ".gz") !== False)
          ? gzfile($filename) : file($filename);

        $i = -1;
        $curtag = false;
        $newtag = true;
        $value = "";
        $res = Array();
        foreach( $lines as $line )
        {
            $matches = Array();
            if ( preg_match("/^([^ ]*):( )?(.*)$/", $line, $matches) )
            {
                if ( $curtag !== false && $i >= 0 )
                    $res[$i][1][$curtag] = $value;

                $curtag = $matches[1];
                $value = $matches[3];

                if ( $curtag == "Package" )
                    $res[++$i] = Array(0 => $value, 1 => Array());
                $newtag = true;
            }
            else
            {
                if ( trim($line) !== "." )
                {
                    if ( $newtag || substr($line, 0, 2) == "  " )
                        $value .= "\n";
                    else
                        $value .= " ";
                    $value .= trim($line);
                }
                else $value .= "\n\n";
                $newtag = false;
            }
        }
        if ( $curtag !== false && $i >= 0 )
            $res[$i][1][$curtag] = $value;

        return $res;
    }