summaryrefslogtreecommitdiffstats
path: root/sample_files/julia_2.jl
diff options
context:
space:
mode:
Diffstat (limited to 'sample_files/julia_2.jl')
-rw-r--r--sample_files/julia_2.jl55
1 files changed, 55 insertions, 0 deletions
diff --git a/sample_files/julia_2.jl b/sample_files/julia_2.jl
new file mode 100644
index 000000000..352b70a02
--- /dev/null
+++ b/sample_files/julia_2.jl
@@ -0,0 +1,55 @@
+import Base: display, redisplay
+
+struct InlineDisplay <: AbstractDisplay end
+
+# supported MIME types for inline display in IPython, in descending order
+# of preference (descending "richness")
+const ipy_mime = [
+ "application/vnd.dataresource+json",
+ ["application/vnd.vegalite.v$n+json" for n in 3:-1:2]...,
+ ["application/vnd.vega.v$n+json" for n in 5:-1:3]...,
+ "application/vnd.plotly.v1+json",
+ "text/html",
+ "text/latex",
+ "image/svg+xml",
+ "image/png",
+ "image/jpeg",
+ "text/plain",
+ "text/markdown",
+ "application/javascript"
+]
+
+# need special handling for showing a string as a textmime
+# type, since in that case the string is assumed to be
+# raw data unless it is text/plain
+israwtext(::MIME, x::AbstractString) = true
+israwtext(::MIME"text/plain", x::AbstractString) = false
+israwtext(::MIME, x) = false
+
+InlineIOContext(io, KVs::Pair...) = IOContext(
+ io,
+ :limit=>true, :color=>true, :jupyter=>true,
+ KVs...
+)
+
+# convert x to a string of type mime, making sure to use an
+# IOContext that tells the underlying show function to limit output
+function limitstringmime(mime::MIME, x)
+ buf = IOBuffer()
+ if istextmime(mime)
+ if israwtext(mime, x)
+ return String(x)
+ else
+ show(InlineIOContext(buf), mime, x)
+ end
+ else
+ b64 = Base64EncodePipe(buf)
+ if isa(x, Vector{UInt8})
+ write(b64, x) # x assumed to be raw binary data
+ else
+ show(InlineIOContext(b64), mime, x)
+ end
+ close(b64)
+ end
+ return String(take!(buf))
+end