Skip to content

Commit cfb79be

Browse files
committed
Use relative path in include statement for resources
1 parent 896f76c commit cfb79be

File tree

2 files changed

+20
-6
lines changed

2 files changed

+20
-6
lines changed

ownlang-core/src/main/java/com/annimon/ownlang/util/input/InputSourceDetector.java

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,21 +11,30 @@ public InputSourceDetector() {
1111
}
1212

1313
public boolean isReadable(String programPath) {
14-
if (programPath.startsWith(RESOURCE_PREFIX)) {
15-
String path = programPath.substring(RESOURCE_PREFIX.length());
16-
return getClass().getResource(basePath + path) != null;
14+
if (basePath.startsWith(RESOURCE_PREFIX) || programPath.startsWith(RESOURCE_PREFIX)) {
15+
String base = removePrefixIfExists(basePath);
16+
String path = removePrefixIfExists(programPath);
17+
return getClass().getResource(base + path) != null;
1718
} else {
1819
Path path = Path.of(basePath, programPath);
1920
return Files.isReadable(path) && Files.isRegularFile(path);
2021
}
2122
}
2223

2324
public InputSource toInputSource(String programPath) {
24-
if (programPath.startsWith(RESOURCE_PREFIX)) {
25-
String path = programPath.substring(RESOURCE_PREFIX.length());
26-
return new InputSourceResource(basePath + path);
25+
if (basePath.startsWith(RESOURCE_PREFIX) || programPath.startsWith(RESOURCE_PREFIX)) {
26+
String base = removePrefixIfExists(basePath);
27+
String path = removePrefixIfExists(programPath);
28+
return new InputSourceResource(base + path);
2729
} else {
2830
return new InputSourceFile(basePath + programPath);
2931
}
3032
}
33+
34+
private String removePrefixIfExists(String path) {
35+
if (path.startsWith(RESOURCE_PREFIX)) {
36+
return path.substring(RESOURCE_PREFIX.length());
37+
}
38+
return path;
39+
}
3140
}

ownlang-core/src/main/java/com/annimon/ownlang/util/input/InputSourceResource.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,11 @@ public String load() throws IOException {
2020
throw new IOException(path + " not found");
2121
}
2222

23+
@Override
24+
public String getBasePath() {
25+
return "resource:" + InputSource.super.getBasePath();
26+
}
27+
2328
@Override
2429
public String toString() {
2530
return "Resource " + path;

0 commit comments

Comments
 (0)