Ability to include from resources

This commit is contained in:
aNNiMON 2024-04-20 00:16:45 +03:00
parent fcb21f6e63
commit ae42c0952a

View File

@ -8,7 +8,7 @@ import com.annimon.ownlang.parser.error.ParseErrorsFormatterStage;
import com.annimon.ownlang.stages.*; import com.annimon.ownlang.stages.*;
import com.annimon.ownlang.util.Range; import com.annimon.ownlang.util.Range;
import com.annimon.ownlang.util.SourceLocation; import com.annimon.ownlang.util.SourceLocation;
import com.annimon.ownlang.util.input.InputSourceFile; import com.annimon.ownlang.util.input.InputSourceDetector;
import com.annimon.ownlang.util.input.SourceLoaderStage; import com.annimon.ownlang.util.input.SourceLoaderStage;
/** /**
@ -18,10 +18,12 @@ import com.annimon.ownlang.util.input.SourceLoaderStage;
public final class IncludeStatement extends InterruptableNode implements Statement, SourceLocation { public final class IncludeStatement extends InterruptableNode implements Statement, SourceLocation {
public final Node expression; public final Node expression;
private final InputSourceDetector inputSourceDetector;
private Range range; private Range range;
public IncludeStatement(Node expression) { public IncludeStatement(Node expression) {
this.expression = expression; this.expression = expression;
inputSourceDetector = new InputSourceDetector();
} }
public void setRange(Range range) { public void setRange(Range range) {
@ -46,7 +48,7 @@ public final class IncludeStatement extends InterruptableNode implements Stateme
// TODO LinterStage based on main context // TODO LinterStage based on main context
.then(new FunctionAddingStage()) .then(new FunctionAddingStage())
.then(new ExecutionStage()) .then(new ExecutionStage())
.perform(stagesData, new InputSourceFile(path)); .perform(stagesData, inputSourceDetector.toInputSource(path));
} catch (OwnLangParserException ex) { } catch (OwnLangParserException ex) {
final var error = new ParseErrorsFormatterStage() final var error = new ParseErrorsFormatterStage()
.perform(stagesData, ex.getParseErrors()); .perform(stagesData, ex.getParseErrors());