diff options
Diffstat (limited to 'sortrefl')
-rwxr-xr-x | sortrefl | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/sortrefl b/sortrefl new file mode 100755 index 0000000..f38efb5 --- /dev/null +++ b/sortrefl @@ -0,0 +1,51 @@ +#!/usr/bin/php +<?php +if ($_SERVER['argc'] < 2) { + die("usage %s filename\n"); +} +$in = fopen($name = $_SERVER['argv'][1], "r"); +if (!$in) { + die("Can't read input file $name\n"); +} + +$res = []; +$tab = []; +$class = $method = false; +fprintf(STDERR, "Reading $name:\n"); +while ($buf = fgets($in)) { + if (preg_match("/Class .* class ([^ ]*) /", $buf, $m)) { + $class = strtolower($m[1]); + $res[$class] = []; + $tab[$class] = $buf; + fprintf(STDERR, "+ $class\n"); + } else if (preg_match("/Method .* method ([^ ]*) /", $buf, $m)) { + $method = strtolower($m[1]); + $res[$class][$method] = ''; + fprintf(STDERR, "+ $method\n"); + } + + if ($class) { + if ($method) { + $res[$class][$method] .= $buf; + } + } + + if (strpos($buf, "}") == 8) { + $method = false; + } else if (strpos($buf, "}") == 4) { + $class = false; + } +} + +ksort($res); +foreach ($res as $class => $methods) { + echo $tab[$class]; + + ksort($methods); + foreach ($methods as $method => $def) { + echo $def; + } +} +fprintf(STDERR, "\nDone\n"); +fclose($in); +?> |