ParsingAndRunManager.java

package org.jruby;

import java.io.IOException;
import java.io.InputStream;

import org.jruby.ast.Node;
import org.jruby.runtime.ThreadContext;

public class ParsingAndRunManager {
    
    public void dealWithRunFromMain(Ruby runtime, InputStream inputStream, String filename) {
        Node scriptNode = runtime.parseFromMain(inputStream, filename);

        // done with the stream, shut it down
        try {inputStream.close();} catch (IOException ioe) {}

        ThreadContext context = runtime.getCurrentContext();

        String oldFile = context.getFile();
        int oldLine = context.getLine();
        try {
            if(scriptNode != null) context.setFileAndLine(scriptNode.getPosition());
            
            RubyInstanceConfig config = runtime.getInstanceConfig();
            if (config.isAssumePrinting() || config.isAssumeLoop()) {
                runtime.runWithGetsLoop(scriptNode, config.isAssumePrinting(), config.isProcessLineEnds(),
                        config.isSplit());
            } else {
                runtime.runNormally(scriptNode);
            }
        } finally {
            context.setFileAndLine(oldFile, oldLine);
        }
    }

}