Skip to content
Snippets Groups Projects
Commit 3afac22a authored by Emmanuel Bruno's avatar Emmanuel Bruno
Browse files

first version.

parent 2a3eec19
No related branches found
No related tags found
No related merge requests found
Showing with 181 additions and 4 deletions
......@@ -89,7 +89,8 @@ RUN echo \
xsi:schemaLocation='http://maven.apache.org/SETTINGS/1.2.0 https://maven.apache.org/xsd/settings-1.2.0.xsd'> \
<localRepository>\${user.home}/work/.m2/repository</localRepository> \
</settings>" \
> $HOME/.sdkman/candidates/maven/current/conf/settings.xml && \
> $HOME/.sdkman/candidates/maven/current/conf/settings.xml
ENV NEEDED_WORK_DIRS "$NEEDED_WORK_DIRS .m2"
RUN echo '#THIS MUST BE AT THE END OF THE FILE FOR SDKMAN TO WORK!!!' >> $HOME/.zshenv && \
......@@ -102,6 +103,8 @@ SHELL ["/bin/zsh","-l","-c"]
RUN curl -L https://sourceforge.net/projects/plantuml/files/plantuml.${PLANTUML_VERSION}.jar/download -o /usr/local/bin/plantuml.jar && \
echo "$PLANTUML_SHA1 */usr/local/bin/plantuml.jar" | sha1sum -c -
COPY dependencies/* "$HOME/lib/"
# Adds Java and Maven to the user path
ENV PATH=/home/jovyan/.sdkman/candidates/maven/current/bin:/home/jovyan/.sdkman/candidates/java/current/bin:$PATH
......
File added
File added
File added
File added
File added
File added
File added
File added
File added
File added
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Path;
import java.io.InputStream;
import java.util.function.Consumer;
import java.util.concurrent.Future;
import io.github.spencerpark.ijava.IJava;
import io.github.spencerpark.ijava.JavaKernel;
import io.github.spencerpark.jupyter.kernel.magic.registry.UndefinedMagicException;
import com.github.javaparser.StaticJavaParser;
import com.github.javaparser.ast.body.MethodDeclaration;
import com.github.javaparser.ast.CompilationUnit;
/**
%%javasrcMethodByAnnotationName Test POST
/src/Test.java
*/
IJava.getKernelInstance().getMagics().registerCellMagic("javasrcMethodByAnnotationName", (args, body) -> {
String filename=body;
String className=args.get(0);
String annotationName=args.get(1);
int index=args.size()==3?Integer.valueOf(args.get(2)):0;
CompilationUnit cu = StaticJavaParser.parse(Files.readString(Path.of(filename)));
String out = cu.getClassByName(className).get()
.getMethods()
.stream()
.filter(m -> m.getAnnotations().stream().anyMatch(a -> a.getNameAsString().equals(annotationName)))
.skip(index)
.findFirst().get().toString();
out = "```java\n"+out+"\n```";
display(out,"text/markdown");
return out;
});
/**
%%javasrcMethodByName Test getAll
/src/Test.java
*/
IJava.getKernelInstance().getMagics().registerCellMagic("javasrcMethodByName", (args, body) -> {
String filename=body;
String className=args.get(0);
String methodName=args.get(1);
int index=args.size()==3?Integer.valueOf(args.get(2)):0;
CompilationUnit cu = StaticJavaParser.parse(Files.readString(Path.of(filename)));
String out = cu.getClassByName(className).get()
.getMethodsByName(methodName)
.get(index)
.toString();
out = "```java\n"+out+"\n```";
display(out,"text/markdown");
return out;
});
/**
%%javasrcClassByName Test
/src/Test.java
*/
IJava.getKernelInstance().getMagics().registerCellMagic("javasrcClassByName", (args, body) -> {
String filename=body;
String className=args.get(0);
CompilationUnit cu = StaticJavaParser.parse(Files.readString(Path.of(filename)));
String out = cu.getClassByName(className).get()
.toString();
out = "```java\n"+out+"\n```";
display(out,"text/markdown");
return out;
});
import java.io.File;
import java.io.InputStream;
import java.util.function.Consumer;
import java.util.concurrent.Future;
import io.github.spencerpark.ijava.IJava;
import io.github.spencerpark.ijava.JavaKernel;
import io.github.spencerpark.jupyter.kernel.magic.registry.UndefinedMagicException;
private static class StreamGobbler implements Runnable {
private InputStream inputStream;
private Consumer<String> consumer;
public StreamGobbler(InputStream inputStream, Consumer<String> consumer) {
this.inputStream = inputStream;
this.consumer = consumer;
}
@Override
public void run() {
new BufferedReader(new InputStreamReader(inputStream)).lines()
.forEach(consumer);
}
}
IJava.getKernelInstance().getMagics().registerCellMagic("shell", (args, body) -> {
String[] commands = {"zsh", "-c", body};
Process process = new ProcessBuilder()
//.redirectErrorStream(true)
.command(commands).start();
StreamGobbler streamGobbler =
new StreamGobbler(process.getInputStream(), System.out::println);
StreamGobbler streamGobblerErr =
new StreamGobbler(process.getErrorStream(), System.err::println);
Executors.newSingleThreadExecutor().submit(streamGobbler);
Executors.newSingleThreadExecutor().submit(streamGobblerErr);
return process.waitFor();
})
//%jars /usr/local/bin/plantuml.jar
import io.github.spencerpark.ijava.IJava;
import net.sourceforge.plantuml.*;
import net.sourceforge.plantuml.core.DiagramDescription;
import java.nio.charset.Charset;
import javax.imageio.ImageIO;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import io.github.spencerpark.ijava.IJava;
import io.github.spencerpark.ijava.JavaKernel;
import io.github.spencerpark.jupyter.kernel.magic.registry.UndefinedMagicException;
/**
Render plantUML from cell
*/
IJava.getKernelInstance().getMagics().registerCellMagic("plantUML", (args, body) -> {
//sets the results mimetype
if (args.size()>1) throw new Exception("Max one argument : SVG or PNG");
String fileFormat;
if (args.size()==0) fileFormat="SVG";
else fileFormat=args.get(0);
SourceStringReader reader = new SourceStringReader(body);
final ByteArrayOutputStream os = new ByteArrayOutputStream();
DiagramDescription desc = reader.outputImage(os, new FileFormatOption(FileFormat.valueOf(fileFormat)));
os.close();
Object out;
if (fileFormat.equals("SVG"))
out = new String(os.toByteArray(), Charset.forName("UTF-8"));
else
out= ImageIO.read(new ByteArrayInputStream(os.toByteArray()));
display(out,fileFormat.equals("SVG")?"image/svg+xml":"image/png");
return out;
});
/**
Render plantUML from file
*/
IJava.getKernelInstance().getMagics().registerCellMagic("plantUMLFile", (args, body) -> {
//sets the results mimetype
if (args.size()>1) throw new Exception("Max one argument : SVG or PNG");
String fileFormat;
if (args.size()==0) fileFormat="SVG";
else fileFormat=args.get(0);
List<String> l = new ArrayList<>();
List<Object> outList = new ArrayList<>();
body.lines().forEach(filename-> {
Object out;
try {
out=cellMagic("plantUML",args,Files.readString(Paths.get(filename)));
//display(out,fileFormat.equals("SVG")?"image/svg+xml":"image/png");
outList.add(out);
} catch (java.io.IOException e) {}
});
return outList;
});
#!/usr/bin/env bash
WORKDIR=$HOME/JUPYTER_WORK_DIR
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
. ${DIR}/env.sh
docker run --rm \
--name ${PWD##*/} \
--volume $PWD/work:/home/jovyan/work \
--volume $WORKDIR:/home/jovyan/work \
--publish 8888:8888 \
--env NB_UID=$UID \
--env JUPYTER_ENABLE_LAB=yes \
--env GRANT_SUDO=yes \
--env NB_GID=100 \
${BASE}:$SHA
#--env CHOWN_HOME_OPTS='-R' --env CHOWN_HOME=yes \
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment