Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,11 @@ public String identifier() {
return path;
}

@Override
public Identifier namespaced(String namespace) {
return new Identifier(namespace, path);
}

@Override
public Identifier prefixed(String prefix) {
return new Identifier(namespace, prefix + path);
Expand All @@ -52,4 +57,14 @@ public Identifier prefixed(String prefix) {
public Identifier suffixed(String suffix) {
return new Identifier(namespace, path + suffix);
}

@Override
public Identifier subidentifier(int beginIndex) {
return new Identifier(namespace, path.substring(beginIndex));
}

@Override
public Identifier subidentifier(int beginIndex, int endIndex) {
return new Identifier(namespace, path.substring(beginIndex, endIndex));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,11 @@ default String identifier() {
throw new AbstractMethodError();
}

@Override
default Identifier namespaced(String namespace) {
throw new AbstractMethodError();
}

@Override
default Identifier prefixed(String prefix) {
throw new AbstractMethodError();
Expand All @@ -25,4 +30,14 @@ default Identifier prefixed(String prefix) {
default Identifier suffixed(String suffix) {
throw new AbstractMethodError();
}

@Override
default Identifier subidentifier(int beginIndex) {
throw new AbstractMethodError();
}

@Override
default Identifier subidentifier(int beginIndex, int endIndex) {
throw new AbstractMethodError();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,11 @@ public String identifier() {
return path;
}

@Override
public Identifier namespaced(String namespace) {
return new Identifier(namespace, path);
}

@Override
public Identifier prefixed(String prefix) {
return new Identifier(namespace, prefix + path);
Expand All @@ -56,4 +61,14 @@ public Identifier prefixed(String prefix) {
public Identifier suffixed(String suffix) {
return new Identifier(namespace, path + suffix);
}

@Override
public Identifier subidentifier(int beginIndex) {
return new Identifier(namespace, path.substring(beginIndex));
}

@Override
public Identifier subidentifier(int beginIndex, int endIndex) {
return new Identifier(namespace, path.substring(beginIndex, endIndex));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,11 @@ default String identifier() {
throw new AbstractMethodError();
}

@Override
default Identifier namespaced(String namespace) {
throw new AbstractMethodError();
}

@Override
default Identifier prefixed(String prefix) {
throw new AbstractMethodError();
Expand All @@ -25,4 +30,14 @@ default Identifier prefixed(String prefix) {
default Identifier suffixed(String suffix) {
throw new AbstractMethodError();
}

@Override
default Identifier subidentifier(int beginIndex) {
throw new AbstractMethodError();
}

@Override
default Identifier subidentifier(int beginIndex, int endIndex) {
throw new AbstractMethodError();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,14 @@ public interface NamespacedIdentifier {
* The separator between the namespace and identifier in the {@code String}
* representation of a {@code NamespacedIdentifier}.
*/
static char SEPARATOR = ':';
char SEPARATOR = ':';

/**
* @return the separator for the {@linkplain String}-representation of this {@code NamespacedIdentifier}.
*/
default char separator() {
return SEPARATOR;
}

/**
* @return the namespace of this {@code NamespacedIdentifier}.
Expand All @@ -35,6 +42,11 @@ public interface NamespacedIdentifier {
*/
String identifier();

/**
* @return a copy of this {@code NamespacedIdentifier} with the given namespace.
*/
NamespacedIdentifier namespaced(String namespace);

/**
* @return a copy of this {@code NamespacedIdentifier} with the given prefix.
*/
Expand All @@ -45,4 +57,14 @@ public interface NamespacedIdentifier {
*/
NamespacedIdentifier suffixed(String suffix);

/**
* @return a copy of this {@code NamespacedIdentifier} that is a subidentifier of this identifier.
*/
NamespacedIdentifier subidentifier(int beginIndex);

/**
* @return a copy of this {@code NamespacedIdentifier} that is a subidentifier of this identifier.
*/
NamespacedIdentifier subidentifier(int beginIndex, int endIndex);

}
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,37 @@ public static String validateIdentifier(String identifier) {
return identifier;
}

/**
* @return whether the given {@linkplain NamespacedIdentifier} is valid.
*/
public static boolean isValid(NamespacedIdentifier identifier) {
return isValidNamespace(identifier.namespace()) && isValidIdentifier(identifier.identifier());
}

/**
* @return whether the given {@linkplain String} is a valid namespace.
*/
public static boolean isValidNamespace(String namespace) {
return namespace != null && !namespace.isEmpty()
&& namespace.chars().allMatch(chr -> chr == '-' || chr == '.' || chr == '_' || (chr >= 'a' && chr <= 'z') || (chr >= '0' && chr <= '9'));
}

/**
* @return whether the given {@linkplain String} is a valid identifier.
*/
public static boolean isValidIdentifier(String identifier) {
return identifier != null && !identifier.isEmpty()
&& identifier.chars().allMatch(chr -> chr == '-' || chr == '.' || chr == '_' || chr == '/' || (chr >= 'a' && chr <= 'z') || (chr >= '0' && chr <= '9'));
}

/**
* @return whether the given character is allowed in a {@linkplain NamespacedIdentifier}
*/
public static boolean isCharAllowed(int chr) {
return (chr == ':' || chr == '-' || chr == '.' || chr == '_' || chr == '/' || (chr >= 'a' && chr <= 'z') || (chr >= '0' && chr <= '9'));
}

public static boolean equals(NamespacedIdentifier a, NamespacedIdentifier b) {
return a.namespace().equals(b.namespace()) && a.identifier().equals(b.identifier());
return a.separator() == b.separator() && a.namespace().equals(b.namespace()) && a.identifier().equals(b.identifier());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,11 @@ public String identifier() {
return identifier;
}

@Override
public NamespacedIdentifier namespaced(String namespace) {
return new NamespacedIdentifierImpl(namespace, identifier);
}

@Override
public NamespacedIdentifier prefixed(String prefix) {
return new NamespacedIdentifierImpl(namespace, prefix + identifier);
Expand All @@ -64,4 +69,14 @@ public NamespacedIdentifier prefixed(String prefix) {
public NamespacedIdentifier suffixed(String suffix) {
return new NamespacedIdentifierImpl(namespace, identifier + suffix);
}

@Override
public NamespacedIdentifier subidentifier(int beginIndex) {
return new NamespacedIdentifierImpl(namespace, identifier.substring(beginIndex));
}

@Override
public NamespacedIdentifier subidentifier(int beginIndex, int endIndex) {
return new NamespacedIdentifierImpl(namespace, identifier.substring(beginIndex, endIndex));
}
}
Loading