diff --git a/jParser/core/src/main/java/com/github/xpenatan/jparser/core/codeparser/DefaultCodeParser.java b/jParser/core/src/main/java/com/github/xpenatan/jparser/core/codeparser/DefaultCodeParser.java index 0ae67e49..8c3f88cb 100644 --- a/jParser/core/src/main/java/com/github/xpenatan/jparser/core/codeparser/DefaultCodeParser.java +++ b/jParser/core/src/main/java/com/github/xpenatan/jparser/core/codeparser/DefaultCodeParser.java @@ -161,7 +161,7 @@ private boolean parserBlock(Node node, BlockComment blockComment) { return false; } - public boolean parseCodeBlock(Node node, String headerCommands, String content) { + protected boolean parseCodeBlock(Node node, String headerCommands, String content) { if(headerCommands.contains(CMD_ADD_RAW)) { setAddReplaceCMD(node, content, false, true); return true; diff --git a/jParser/loader/loader-teavm/src/main/java/emu/com/github/xpenatan/jparser/loader/JParserLibraryLoader.java b/jParser/loader/loader-teavm/src/main/java/emu/com/github/xpenatan/jparser/loader/JParserLibraryLoader.java index f49e9922..9dcbfc7a 100644 --- a/jParser/loader/loader-teavm/src/main/java/emu/com/github/xpenatan/jparser/loader/JParserLibraryLoader.java +++ b/jParser/loader/loader-teavm/src/main/java/emu/com/github/xpenatan/jparser/loader/JParserLibraryLoader.java @@ -1,5 +1,6 @@ package emu.com.github.xpenatan.jparser.loader; +import java.util.HashSet; import org.teavm.jso.browser.Window; import org.teavm.jso.dom.events.Event; import org.teavm.jso.dom.events.EventListener; @@ -8,6 +9,8 @@ public class JParserLibraryLoader { + private static HashSet loadedLibraries = new HashSet<>(); + public JParserLibraryLoader() { } @@ -26,19 +29,24 @@ public void load(String libraryName, Runnable runnable) { } public void load(String libraryName01, String libraryName02, Runnable runnable) { + String libPath = "assets/" + libraryName01 + ".js";; + if(loadedLibraries.contains(libPath)) { + return; + } + if(libraryName02 != null) { } if(libraryName01 != null) { - libraryName01 = "assets/" + libraryName01 + ".js"; - System.out.println("Loading JS script: " + libraryName01); + System.out.println("Loading JS script: " + libPath); Window current = Window.current(); HTMLDocument document = current.getDocument(); HTMLScriptElement scriptElement = (HTMLScriptElement)document.createElement("script"); - scriptElement.setSrc(libraryName01); + scriptElement.setSrc(libPath); scriptElement.addEventListener("load", new EventListener() { @Override public void handleEvent(Event evt) { + loadedLibraries.add(libPath); if(runnable != null) { runnable.run(); } diff --git a/jParser/teavm/src/main/java/com/github/xpenatan/jparser/teavm/TeaVMCodeParser.java b/jParser/teavm/src/main/java/com/github/xpenatan/jparser/teavm/TeaVMCodeParser.java index a59b6e2a..73354d96 100644 --- a/jParser/teavm/src/main/java/com/github/xpenatan/jparser/teavm/TeaVMCodeParser.java +++ b/jParser/teavm/src/main/java/com/github/xpenatan/jparser/teavm/TeaVMCodeParser.java @@ -583,4 +583,11 @@ public void onParserComplete(JParser jParser, ArrayList parserItems convertCallerLongToInt(all); } } + + @Override + protected boolean parseCodeBlock(Node node, String headerCommands, String content) { + // Replace custom code that contains module tag + String newContent = content.replace(TEMPLATE_TAG_MODULE, module); + return super.parseCodeBlock(node, headerCommands, newContent); + } } \ No newline at end of file