Add Tag, TagMatcher Interface and Implementations
continuous-integration/drone/push Build is failing Details

This commit is contained in:
qvalentin 2022-03-06 15:57:16 +01:00
parent cf50f1bb86
commit 916db1decb
5 changed files with 79 additions and 0 deletions

View File

@ -0,0 +1,5 @@
package tag;
public record Tag(TagName name, String additionalData) {
}

View File

@ -0,0 +1,10 @@
package tag;
import link.LinkUrl;
import java.util.Optional;
public interface TagMatcher {
Optional<Tag> matches(LinkUrl linkUrl);
}

View File

@ -0,0 +1,5 @@
package tag;
public record TagName(String name) {
}

View File

@ -0,0 +1,32 @@
package tag.matcherImplementations;
import link.LinkUrl;
import tag.Tag;
import tag.TagMatcher;
import tag.TagName;
import java.util.Optional;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class CustomTagMatcher implements TagMatcher {
private final Pattern regex;
private final TagName tagName;
public CustomTagMatcher(TagName name, String regexString) {
this.regex = Pattern.compile(regexString); // TODO this could throw??
this.tagName = name;
}
@Override
public Optional<Tag> matches(LinkUrl linkUrl) {
Matcher matcher = regex.matcher(linkUrl.toString());
if (matcher.find()) {
return Optional.of(new Tag(this.tagName, ""));
}
return Optional.empty();
}
}

View File

@ -0,0 +1,27 @@
package tag.matcherImplementations;
import link.LinkUrl;
import tag.Tag;
import tag.TagMatcher;
import tag.TagName;
import java.util.Optional;
public class GitHubTagMatcher implements TagMatcher {
public TagName getName() {
return new TagName("github");
}
public String getAdditionInfo() {
return null;
}
@Override
public Optional<Tag> matches(LinkUrl linkUrl) {
if (linkUrl.getUrl().getHost().equals("github.com")) {
return Optional.of(new Tag(getName(), getAdditionInfo()));
}
return Optional.empty();
}
}