Beispiel #1
0
/**
 * @param array  $files
 * @param string $root
 *
 * @return array
 */
function parse_files($files, $root)
{
    $output = array();
    foreach ($files as $filename) {
        $file = new File_Reflector($filename);
        $path = ltrim(substr($filename, strlen($root)), DIRECTORY_SEPARATOR);
        $file->setFilename($path);
        $file->process();
        // TODO proper exporter
        $out = array('file' => export_docblock($file), 'path' => str_replace(DIRECTORY_SEPARATOR, '/', $file->getFilename()), 'root' => $root);
        if (!empty($file->uses)) {
            $out['uses'] = export_uses($file->uses);
        }
        foreach ($file->getIncludes() as $include) {
            $out['includes'][] = array('name' => $include->getName(), 'line' => $include->getLineNumber(), 'type' => $include->getType());
        }
        foreach ($file->getConstants() as $constant) {
            $out['constants'][] = array('name' => $constant->getShortName(), 'line' => $constant->getLineNumber(), 'value' => $constant->getValue());
        }
        if (!empty($file->uses['hooks'])) {
            $out['hooks'] = export_hooks($file->uses['hooks']);
        }
        foreach ($file->getFunctions() as $function) {
            $func = array('name' => $function->getShortName(), 'line' => $function->getLineNumber(), 'end_line' => $function->getNode()->getAttribute('endLine'), 'arguments' => export_arguments($function->getArguments()), 'doc' => export_docblock($function), 'hooks' => array());
            if (!empty($function->uses)) {
                $func['uses'] = export_uses($function->uses);
                if (!empty($function->uses['hooks'])) {
                    $func['hooks'] = export_hooks($function->uses['hooks']);
                }
            }
            $out['functions'][] = $func;
        }
        foreach ($file->getClasses() as $class) {
            $class_data = array('name' => $class->getShortName(), 'line' => $class->getLineNumber(), 'end_line' => $class->getNode()->getAttribute('endLine'), 'final' => $class->isFinal(), 'abstract' => $class->isAbstract(), 'extends' => $class->getParentClass(), 'implements' => $class->getInterfaces(), 'properties' => export_properties($class->getProperties()), 'methods' => export_methods($class->getMethods()), 'doc' => export_docblock($class));
            $out['classes'][] = $class_data;
        }
        $output[] = $out;
    }
    return $output;
}
Beispiel #2
0
 public static function get_parser_phpdoc($files, $root)
 {
     $output = array();
     // Fix WordPress Themes constants
     // Move all files inside wp-content folder to first elements
     $list = array();
     foreach ($files as $k => $file) {
         if (false !== strpos($file, 'wp-content')) {
             $list[] = $file;
             unset($files[$k]);
         }
     }
     $files = array_merge($list, $files);
     foreach ($files as $filename) {
         $file = new File_Reflector($filename);
         $file->setFilename(ltrim(substr($filename, strlen($root)), '/'));
         $file->process();
         // TODO proper exporter
         $out = array('file' => \WP_Parser\export_docblock($file), 'path' => $file->getFilename(), 'root' => $root);
         if (!empty($file->uses)) {
             $out['uses'] = \WP_Parser\export_uses($file->uses);
         }
         foreach ($file->getIncludes() as $include) {
             $out['includes'][] = array('name' => $include->getName(), 'line' => $include->getLineNumber(), 'type' => $include->getType());
         }
         foreach ($file->getConstants() as $constant) {
             $out['constants'][] = array('name' => $constant->getShortName(), 'line' => $constant->getLineNumber(), 'value' => $constant->getValue(), 'doc' => \WP_Parser\export_docblock($constant));
         }
         if (!empty($file->uses['hooks'])) {
             $out['hooks'] = \WP_Parser\export_hooks($file->uses['hooks']);
         }
         foreach ($file->getFunctions() as $function) {
             $func = array('name' => $function->getShortName(), 'line' => $function->getLineNumber(), 'end_line' => $function->getNode()->getAttribute('endLine'), 'arguments' => \WP_Parser\export_arguments($function->getArguments()), 'doc' => \WP_Parser\export_docblock($function), 'hooks' => array());
             if (!empty($function->uses)) {
                 $func['uses'] = \WP_Parser\export_uses($function->uses);
                 if (!empty($function->uses['hooks'])) {
                     $func['hooks'] = \WP_Parser\export_hooks($function->uses['hooks']);
                 }
             }
             $out['functions'][] = $func;
         }
         foreach ($file->getClasses() as $class) {
             $class_data = array('name' => $class->getShortName(), 'line' => $class->getLineNumber(), 'end_line' => $class->getNode()->getAttribute('endLine'), 'final' => $class->isFinal(), 'abstract' => $class->isAbstract(), 'extends' => $class->getParentClass(), 'implements' => $class->getInterfaces(), 'properties' => \WP_Parser\export_properties($class->getProperties()), 'methods' => \WP_Parser\export_methods($class->getMethods()), 'doc' => \WP_Parser\export_docblock($class));
             $out['classes'][] = $class_data;
         }
         $output[] = $out;
     }
     return $output;
 }