#!/usr/bin/php <?php /** * @file util/createdoxygen.php * @brief Adds a doxygen header to functions */ if (count($_SERVER["argv"]) < 2) die("usage: createdoxygen.php file\n"); $file = $_SERVER["argv"][1]; $data = file_get_contents($file); $lines = explode("\n", $data); $previous = ""; foreach ($lines AS $line) { $line = rtrim(trim($line, "\r")); if (strstr(strtolower($line), "function")) { $detect = strtolower(trim($line)); $detect = implode(" ", explode(" ", $detect)); $found = false; if (substr($detect, 0, 9) == "function ") $found = true; if (substr($detect, 0, 17) == "private function ") $found = true; if (substr($detect, 0, 23) == "public static function ") $found = true; if (substr($detect, 0, 10) == "function (") $found = false; if ($found and (trim($previous) == "*/")) $found = false; if ($found and !strstr($detect, "{")) $found = false; if ($found) { echo add_documentation($line); } } echo $line."\n"; $previous = $line; } /** * @brief Adds a doxygen header * * @param string $line The current line of the document * * @return string added doxygen header */ function add_documentation($line) { $trimmed = ltrim($line); $length = strlen($line) - strlen($trimmed); $space = substr($line, 0, $length); $block = $space."/**\n". $space." * @brief \n". $space." *\n"; /**/ $left = strpos($line, "("); $line = substr($line, $left + 1); $right = strpos($line, ")"); $line = trim(substr($line, 0, $right)); if ($line != "") { $parameters = explode(",", $line); foreach ($parameters AS $parameter) { $parameter = trim($parameter); $splitted = explode("=", $parameter); $block .= $space." * @param ".trim($splitted[0], "& ")."\n"; } if (count($parameters) > 0) $block .= $space." *\n"; } $block .= $space." * @return \n". $space." */\n"; return $block; } ?>