Esempio n. 1
0
require_once 'reflector.inc.php';
if (realpath($_SERVER['SCRIPT_FILENAME']) === __FILE__) {
    error_reporting(E_ALL | E_STRICT);
    $trace_filename = "dumpfile.xt";
    $file_to_weave = $argv[1];
    if (!is_file($file_to_weave)) {
        throw new Exception("File ({$file_to_weave}) isn't readable");
    }
    // read trace
    $reflector = new StaticReflector();
    $sigs = new Signatures($reflector);
    $trace = new xtrace_TraceReader(new SplFileObject($trace_filename));
    $collector = new xtrace_TraceSignatureLogger($sigs, $reflector);
    $trace->process(new xtrace_FunctionTracer($collector, $reflector));
    // transform file
    $scanner = new ScannerMultiplexer();
    $parameters_scanner = $scanner->appendScanner(new FunctionParametersScanner());
    $function_body_scanner = $scanner->appendScanner(new FunctionBodyScanner());
    $modifiers_scanner = $scanner->appendScanner(new ModifiersScanner());
    $class_scanner = $scanner->appendScanner(new ClassScanner());
    $editor = new TracerDocBlockEditor($sigs, $class_scanner, $function_body_scanner);
    $transformer = $scanner->appendScanner(new DocCommentEditorTransformer($function_body_scanner, $modifiers_scanner, $parameters_scanner, $editor));
    $tokenizer = new TokenStreamParser();
    $token_stream = $tokenizer->scan(file_get_contents($file_to_weave));
    $token_stream->iterate($scanner);
    if (isset($argv[2])) {
        file_put_contents($argv[2], $transformer->getOutput());
    } else {
        echo $transformer->getOutput();
    }
}
Esempio n. 2
0
 function scan($source, $editor = null)
 {
     $editor = $editor ? $editor : new PassthruBufferEditor();
     $scanner = new ScannerMultiplexer();
     $parameters_scanner = $scanner->appendScanner(new FunctionParametersScanner());
     $function_body_scanner = $scanner->appendScanner(new FunctionBodyScanner());
     $modifiers_scanner = $scanner->appendScanner(new ModifiersScanner());
     $transformer = $scanner->appendScanner(new DocCommentEditorTransformer($function_body_scanner, $modifiers_scanner, $parameters_scanner, $editor));
     $tokenizer = new TokenStreamParser();
     $token_stream = $tokenizer->scan($source);
     $token_stream->iterate($scanner);
     return $transformer;
 }