UrlBuilder has absolute(to) method.

This commit is contained in:
Jesse Brault 2023-02-16 08:47:35 +01:00
parent 111bdea286
commit 60f4c1415f
3 changed files with 16 additions and 0 deletions

View File

@ -5,10 +5,12 @@ import java.nio.file.Path
class PathBasedUrlBuilder implements UrlBuilder { class PathBasedUrlBuilder implements UrlBuilder {
private final String absolute private final String absolute
private final String baseUrl
private final Path fromDirectory private final Path fromDirectory
PathBasedUrlBuilder(String targetPath, String baseUrl) { PathBasedUrlBuilder(String targetPath, String baseUrl) {
this.absolute = baseUrl + '/' + targetPath this.absolute = baseUrl + '/' + targetPath
this.baseUrl = baseUrl
def fromFilePath = Path.of(targetPath) def fromFilePath = Path.of(targetPath)
if (fromFilePath.parent) { if (fromFilePath.parent) {
this.fromDirectory = fromFilePath.parent this.fromDirectory = fromFilePath.parent
@ -22,6 +24,11 @@ class PathBasedUrlBuilder implements UrlBuilder {
this.absolute this.absolute
} }
@Override
String absolute(String to) {
this.baseUrl + '/' + to
}
@Override @Override
String relative(String to) { String relative(String to) {
this.fromDirectory.relativize(Path.of(to)).toString() this.fromDirectory.relativize(Path.of(to)).toString()

View File

@ -2,5 +2,6 @@ package com.jessebrault.ssg.url
interface UrlBuilder { interface UrlBuilder {
String getAbsolute() String getAbsolute()
String absolute(String to)
String relative(String to) String relative(String to)
} }

View File

@ -38,4 +38,12 @@ abstract class AbstractUrlBuilderTests {
) )
} }
@Test
void absoluteToCorrect() {
assertEquals(
'https://test.com/images/test.jpg',
this.getUrlBuilder('', 'https://test.com').absolute('images/test.jpg')
)
}
} }