diff --git a/src/main/java/com/clubobsidian/dynamicgui/parser/gui/GuiToken.java b/src/main/java/com/clubobsidian/dynamicgui/parser/gui/GuiToken.java index 348c4a1..fa3278e 100644 --- a/src/main/java/com/clubobsidian/dynamicgui/parser/gui/GuiToken.java +++ b/src/main/java/com/clubobsidian/dynamicgui/parser/gui/GuiToken.java @@ -47,6 +47,7 @@ public class GuiToken implements Serializable { private MacroParser macroParser; private FunctionTree functions; private List loadMacros; + private Map metadata; public GuiToken(ConfigurationSection section) { this(section, new ArrayList()); @@ -81,6 +82,9 @@ public GuiToken(ConfigurationSection section, List macroTokens) this.functions = new FunctionTree(guiFunctionsSection, this.macroParser); this.loadMacros = section.getStringList("load-macros"); + + ConfigurationSection metadataSection = section.getConfigurationSection("metadata"); + this.metadata = this.parseMetadata(metadataSection); } public String parseType(String type) @@ -109,10 +113,23 @@ private void loadNpcs(ConfigurationSection section) for(String key : npcSection.getKeys()) { List npcIds = npcSection.getIntegerList(key); - npcs.put(key, npcIds); + this.npcs.put(key, npcIds); } } + private Map parseMetadata(ConfigurationSection section) + { + Map metadata = new HashMap<>(); + for(String key : section.getKeys()) + { + String parsedKey = this.macroParser.parseStringMacros(key); + String value = section.getString(parsedKey); + value = this.macroParser.parseStringMacros(value); + metadata.put(parsedKey, value); + } + + return metadata; + } private void loadSlots(ConfigurationSection section) { @@ -190,4 +207,9 @@ public List getLoadMacros() { return this.loadMacros; } + + public Map getMetadata() + { + return this.metadata; + } } \ No newline at end of file diff --git a/src/test/java/com/clubobsidian/dynamicgui/parser/test/gui/GuitMetadataTest.java b/src/test/java/com/clubobsidian/dynamicgui/parser/test/gui/GuitMetadataTest.java new file mode 100644 index 0000000..45c104b --- /dev/null +++ b/src/test/java/com/clubobsidian/dynamicgui/parser/test/gui/GuitMetadataTest.java @@ -0,0 +1,28 @@ +package com.clubobsidian.dynamicgui.parser.test.gui; + +import static org.junit.Assert.assertTrue; + +import java.io.File; +import java.util.Map; + +import org.junit.Test; + +import com.clubobsidian.dynamicgui.parser.gui.GuiToken; +import com.clubobsidian.dynamicgui.parser.slot.SlotToken; +import com.clubobsidian.wrappy.Configuration; +import com.clubobsidian.wrappy.ConfigurationSection; + +public class GuitMetadataTest { + + @Test + public void testSlotMetadata() + { + File slotFolder = new File("test", "gui"); + File metadataFile = new File(slotFolder, "metadata.yml"); + Configuration config = Configuration.load(metadataFile); + GuiToken token = new GuiToken(config); + Map metadata = token.getMetadata(); + assertTrue(metadata.size() == 1); + assertTrue(metadata.get("some").equals("metadata")); + } +} \ No newline at end of file diff --git a/test/gui/metadata.yml b/test/gui/metadata.yml new file mode 100644 index 0000000..5df5cd9 --- /dev/null +++ b/test/gui/metadata.yml @@ -0,0 +1,2 @@ +metadata: + some: "metadata" \ No newline at end of file