X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=net.mograsim.logic.model%2Fsrc%2Fnet%2Fmograsim%2Flogic%2Fmodel%2Fsnippets%2FCodeSnippetSupplier.java;h=26d5a0d959a6b3e51e362ebdb00d0f318716a8a8;hb=95a225aed8eae0fc080440dba779abfdf867ff3d;hp=619254a4da7ba3c90ec247ab7018b924e8977e9e;hpb=3977f16649531ca3ba345c9cd5ec365e0b804783;p=Mograsim.git diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/snippets/CodeSnippetSupplier.java b/net.mograsim.logic.model/src/net/mograsim/logic/model/snippets/CodeSnippetSupplier.java index 619254a4..26d5a0d9 100644 --- a/net.mograsim.logic.model/src/net/mograsim/logic/model/snippets/CodeSnippetSupplier.java +++ b/net.mograsim.logic.model/src/net/mograsim/logic/model/snippets/CodeSnippetSupplier.java @@ -3,12 +3,11 @@ package net.mograsim.logic.model.snippets; import java.util.Collections; import java.util.HashMap; import java.util.Map; -import java.util.Set; public class CodeSnippetSupplier { private final Map standardSnippetIDClassNames = new HashMap<>(); - private final Set standardSnippetIDSetUnmodifiable = Collections.unmodifiableSet(standardSnippetIDClassNames.keySet()); + private final Map standardSnippetIDClassNamesUnmodifiable = Collections.unmodifiableMap(standardSnippetIDClassNames); private final Map> snippetSuppliersForClassNames = new HashMap<>(); private final SnippetDefinintion defaultSnippetSupplier; @@ -17,14 +16,16 @@ public class CodeSnippetSupplier this.defaultSnippetSupplier = defaultSnippetSupplier; } - public void addStandardSnippetID(String standardSnippetID, String associatedSnippetClassName) + public void addStandardSnippetID(String standardSnippetID, String associatedSnippetID) { - standardSnippetIDClassNames.put(standardSnippetID, associatedSnippetClassName); + if (!associatedSnippetID.startsWith("class:")) + throw new IllegalArgumentException("Unrecognized snippet ID format: " + associatedSnippetID); + standardSnippetIDClassNames.put(standardSnippetID, associatedSnippetID); } - public Set getStandardSnippetIDs() + public Map getStandardSnippetIDs() { - return standardSnippetIDSetUnmodifiable; + return standardSnippetIDClassNamesUnmodifiable; } public void setSnippetSupplier(String id, SnippetDefinintion snippetSupplier) @@ -37,13 +38,10 @@ public class CodeSnippetSupplier { if (id != null) { - String snippetClassName; - if (id.startsWith("class:")) - snippetClassName = id.substring(6); - else - snippetClassName = standardSnippetIDClassNames.get(id); - if (snippetClassName != null) + String resolvedID = resolveID(id); + if (resolvedID != null) { + String snippetClassName = resolvedID.substring(6); tryLoadSnippetClass(snippetClassName); SnippetDefinintion snippetSupplier = snippetSuppliersForClassNames.get(snippetClassName); if (snippetSupplier != null) @@ -56,6 +54,13 @@ public class CodeSnippetSupplier return defaultSnippetSupplier; } + public String resolveID(String id) + { + if (id.startsWith("class:")) + return id; + return standardSnippetIDClassNames.get(id); + } + // static helpers private static void tryLoadSnippetClass(String snippetClassName)