Skip to content

Commit

Permalink
track return types in a map
Browse files Browse the repository at this point in the history
  • Loading branch information
mcmonkey4eva committed Oct 20, 2021
1 parent 6846cc1 commit d3f60aa
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 0 deletions.
Expand Up @@ -43,6 +43,21 @@ public static class ObjectType<T extends ObjectTag> {

public static Map<String, ObjectType<? extends ObjectTag>> objectsByPrefix = new HashMap<>();
public static Map<Class<? extends ObjectTag>, ObjectType<? extends ObjectTag>> objectsByClass = new HashMap<>();
public static Map<Class<? extends ObjectTag>, List<Class<? extends ObjectTag>>> customSubtypeList = new HashMap<>();

public static Collection<Class<? extends ObjectTag>> getAllApplicableSubTypesFor(Class<? extends ObjectTag> type) {
if (type == ObjectTag.class) {
return objectsByClass.keySet();
}
List<Class<? extends ObjectTag>> customSet = customSubtypeList.get(type);
if (customSet != null) {
return customSet;
}
if (type == ElementTag.class) {
return Collections.singleton(ElementTag.class);
}
return Arrays.asList(type, ElementTag.class);
}

public static void registerCoreObjects() {
// Initialize the ObjectFetcher
Expand Down
Expand Up @@ -19,6 +19,8 @@ public class ObjectTagProcessor<T extends ObjectTag> {

public HashMap<String, TagRunnable.ObjectInterface<T, ?>> registeredObjectTags = new HashMap<>();

public HashMap<String, Class<? extends ObjectTag>> tagReturnTypes = new HashMap<>();

public ObjectTagProcessor() {

// <--[tag]
Expand Down Expand Up @@ -259,8 +261,10 @@ public <R extends ObjectTag> void registerTag(Class<R> returnType, String name,
return runnable.run(attribute, object);
};
registeredObjectTags.put(variant, newRunnable);
tagReturnTypes.put(variant, returnType);
}
registeredObjectTags.put(name, runnable);
tagReturnTypes.put(name, returnType);
}

public ObjectTag getObjectAttribute(T object, Attribute attribute) {
Expand Down
Expand Up @@ -43,9 +43,12 @@ public static void registerCoreTags() {

public static HashMap<String, TagRunnable.BaseInterface<?>> baseHandlers = new HashMap<>();

public static HashMap<String, Class<? extends ObjectTag>> baseReturnTypes = new HashMap<>();

public static HashSet<String> properTagBases = new HashSet<>();

public static <R extends ObjectTag> void registerTagHandler(Class<R> returnType, String name, TagRunnable.BaseInterface<R> run) {
baseReturnTypes.put(name, returnType);
properTagBases.add(name);
baseHandlers.put(name, run);
}
Expand Down

0 comments on commit d3f60aa

Please sign in to comment.