}
public BlockUri(String uri) {
String[] split = uri.split(MODULE_SEPARATOR, 4);
if (split.length > 1) {
moduleName = new Name(split[0]);
}
if (split.length == 4) {
familyName = new Name(split[1]);
String shapeModuleName = split[2];
split = split[3].split(IDENTIFIER_SEPARATOR_REGEX, 2);
if (split.length > 1) {
shape = new AssetUri(AssetType.SHAPE, shapeModuleName, split[0]);
blockIdentifier = new Name(split[1]);
} else if (split.length == 1) {
shape = new AssetUri(AssetType.SHAPE, shapeModuleName, split[0]);
}
} else if (split.length == 2) {
split = split[1].split(IDENTIFIER_SEPARATOR_REGEX, 2);
if (split.length > 1) {
familyName = new Name(split[0]);
blockIdentifier = new Name(split[1]);
} else if (split.length == 1) {
familyName = new Name(split[0]);
}
}
}