Uses 1113K of libraries. Click here for Pure Java version (8504L/47K).
!7 /* How to: -use "transpile debug" on #1031393, copy output into #1030949 -Press the "do it" button -Manually add lambdaMapLike etc to #1030953 -Check that things still work */ cprint { transient Set<S> requestedFunctions, requestedClasses; transient Set<S> have, haveClasses; transient new Set<S> blockedFunctions; transient new Set<S> blockedClasses; transient Set<S> newFunctions, newClasses; transient new Set<S> imported; transient Set<S> importedClasses; transient Set<S> toImport, classesToImport; transient new SS modifiers; transient S loadableUtilsSnippetID = #1030952; transient S includeSnippetID = #1030953; transient S globalSnippetID = #1020737; transient S transpilerOutputSnippetID = #1030949; visual withCenteredButtons(super, jButton("Do it", rThreadEnter doIt)); start-thread { LS transpilerLines = mapLines(loadSnippet(transpilerOutputSnippetID), s -> dropLeadingAngleBracketStuff(s)); requestedFunctions = asSet(startingWithIC_dropAndTrim("Compiling function:", transpilerLines); requestedClasses = asSet(startingWithIC_dropAndTrim("Compiling class:", transpilerLines); print(n2(requestedFunctions, "requested function")); print(n2(requestedClasses, "requested class", "requested classes")); for (PairS p : parseColonPropertyPairs(lines(transpilerLines))) if (eqOneOf(p.a, "mapLike", "mapMethodLike", "nuLike", "lambdaMapLike", "curry1Like")) modifiers.put(p.b, p.a); print(n2(modifiers, "function modifier")); S text = loadSnippet(loadableUtilsSnippetID); have = asSet(lmap tok_lastIdentifier(jextractAll("please include function <id>.", text))); haveClasses = asSet(lmap tok_lastIdentifier(jextractAll("please include class <id>.", text))); print("Have " + n2(have, "function")); S includeSnippet = joinNemptiesWithEmptyLines( loadSnippet(includeSnippetID), loadSnippet(globalSnippetID)); new Matches m; for (S comment : trimAll(getJavaLineComments(text))) { if (find3("don't include function *", comment, m)) blockedFunctions.add($1); if (find3("don't include class *", comment, m)) blockedClasses.add($1); } for (S comment : trimAll(getJavaLineComments(includeSnippet))) if (swic(comment, "don't import ")) blockedFunctions.add(tok_lastIdentifier(comment)); for (S s : jextractAll(javaTok(includeSnippet), "please include function <id>.")) blockedFunctions.add(tok_lastIdentifier(s)); print(n2(blockedFunctions, "blocked function") + ": " + blockedFunctions); print(n2(blockedClasses, "blocked class", "blocked classes") + ": " + blockedClasses); newFunctions = setMinusSet(setMinusSet(requestedFunctions, blockedFunctions), have); print(n2(newFunctions, "new function")); newClasses = setMinusSet(setMinusSet(requestedClasses, blockedClasses), haveClasses); print(n2(newClasses, "new class", "new classes")); for (S s : tlft(includeSnippet)) { s = simpleSpaces(s); if (startsWith(s, "import static ")) imported.add(tok_lastIdentifier(s)); } print(n2(imported, "imported function")); importedClasses = asSet(lmap tok_lastIdentifier(jextractAll("import loadableUtils.utils.<id>;", includeSnippet))); print(n2(importedClasses, "imported class", "imported classes")); toImport = setMinusSet(setMinusSet(have, imported), blockedFunctions); print(n2(toImport) + " function(s) to import"); classesToImport = setMinusSet(haveClasses, importedClasses); print(n2(classesToImport) + " class(es) to import"); } // appends to Loadable Utils snippet void appendThem { if (empty(newFunctions) && empty(newClasses)) ret with print("Nothing to do"); S text = loadSnippet(loadableUtilsSnippetID); text += "\n\n" + mapToLines(newFunctions, f -> "please include function " + f + ".") + mapToLines(newClasses, c -> "please include class " + c + "."); editSnippet(loadableUtilsSnippetID, text); } // appends to Compact Module Include void appendImported { if (empty(toImport) && empty(classesToImport)) ret with print("Nothing to do"); S text = loadSnippet(includeSnippetID); text += "\n\n" + mapToLines(toImport, f -> "import static loadableUtils.utils." + appendSpaceIfNempty(modifiers.get(f)) + f + ";") + mapToLines(classesToImport, c -> "import loadableUtils.utils." + c + ";"); editSnippet(includeSnippetID, text); } void doIt { appendThem(); appendImported(); } }
download show line numbers debug dex old transpilations
Travelled to 4 computer(s): bhatertpkbcr, mqqgnosmbjvj, pyentgdyhuwx, vouqrxazstgt
No comments. add comment
Snippet ID: | #1030951 |
Snippet name: | Add functions and classes to Gazelle BEA Loadable Utils [OK] |
Eternal ID of this version: | #1030951/27 |
Text MD5: | 8c1c1f66cdb5c7688c07f2e2fa9442af |
Transpilation MD5: | 361dd1a27598c986e74115b4e573f3db |
Author: | stefan |
Category: | javax |
Type: | JavaX source code (Dynamic Module) |
Public (visible to everyone): | Yes |
Archived (hidden from active list): | No |
Created/modified: | 2021-09-18 16:52:57 |
Source code size: | 4766 bytes / 121 lines |
Pitched / IR pitched: | No / No |
Views / Downloads: | 237 / 511 |
Version history: | 26 change(s) |
Referenced in: | #1030952 - Loadable Utils for Gazelle BEA [LIVE, see #1030953, edited by #1030951] #1030953 - Compact Module Include for Gazelle BEA (edited by #1030951) #1033503 - LoadableUtilsExpander #1034511 - LoadableUtilsHelper |