Posted to tcl by mjanssen at Tue Jun 23 07:45:15 GMT 2020view pretty
# Copyright (c) 2020, M.P.C. Janssen
# This code is released under
# the terms of the MIT license. See the file LICENSE for details.
package require tls
package require http
package require base64
::http::register https 443 [list ::tls::socket -autoservername 1]
namespace eval ::tclssg::pipeline::10-register-template-command {
namespace path ::tclssg
proc plantumlurl {raw} {
return https://plantuml.mpcjanssen.nl/svg/[string map [list \n {}] [string trim [base64toplantuml [base64::encode [zlib deflate $raw]]]]]
}
variable base64map
foreach x {A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9 + /}\
y {0 1 2 3 4 5 6 7 8 9 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z - _} {
lappend base64map $x $y
}
interp alias {} [namespace current]::base64toplantuml {} string map $base64map
proc plantumlsvg {uml} {
set tok [http::geturl [plantumlurl $uml]]
set data [base64::encode [http::data $tok]]
http::cleanup $tok
return "<img src='data:image/svg+xml;base64,$data'/>"
}
proc transform {} {
set me [namespace tail [namespace current]]
log::info [list running demo plugin $me]
log::debug $::tclssg::interpreter::aliases
dict set ::tclssg::interpreter::aliases \
[namespace current]::plantumlsvg \
plantumlsvg
}
}