Warning: session_start(): open(/var/lib/php/sessions/sess_8rcf55lotm68krsa40ooleq505, O_RDWR) failed: No space left on device (28) in /var/www/tb-usercake/models/config.php on line 51
Warning: session_start(): Failed to read session data: files (path: /var/lib/php/sessions) in /var/www/tb-usercake/models/config.php on line 51
!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 requestedFunctions, requestedClasses;
transient Set have, haveClasses;
transient new Set blockedFunctions;
transient new Set blockedClasses;
transient Set newFunctions, newClasses;
transient new Set imported;
transient Set importedClasses;
transient Set 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 .", text)));
haveClasses = asSet(lmap tok_lastIdentifier(jextractAll("please include class .", 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 ."))
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.;", 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();
}
}