@@ -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}
0 commit comments