diff --git a/app/liquid_tags/runkit_tag.rb b/app/liquid_tags/runkit_tag.rb index 944282c67..6f80b888c 100644 --- a/app/liquid_tags/runkit_tag.rb +++ b/app/liquid_tags/runkit_tag.rb @@ -1,7 +1,7 @@ class RunkitTag < Liquid::Block def initialize(tag_name, markup, tokens) super - @markup = markup + @preamble = ActionView::Base.full_sanitizer.sanitize(markup, tags: []) end def render(context) @@ -9,7 +9,8 @@ class RunkitTag < Liquid::Block parsed_content = content.xpath("//html/body").text html = <<~HTML
- #{parsed_content} + #{@preamble} + #{parsed_content}
HTML html @@ -18,15 +19,15 @@ class RunkitTag < Liquid::Block def self.special_script <<~JAVASCRIPT var targets = document.getElementsByClassName("runkit-element"); - if (targets.length > 0) { - for (var i = 0; i < targets.length; i++) { - var content = targets[i].textContent; - targets[i].innerHTML = ""; - var notebook = RunKit.createNotebook({ - element: targets[i], - source: content, - }); - } + for (var i = 0; i < targets.length; i++) { + var preamble = targets[i].children[0].textContent; + var content = targets[i].children[1].textContent; + targets[i].innerHTML = ""; + var notebook = RunKit.createNotebook({ + element: targets[i], + source: content, + preamble: preamble + }); } JAVASCRIPT end @@ -36,16 +37,17 @@ class RunkitTag < Liquid::Block var checkRunkit = setInterval(function() { if(typeof(RunKit) !== 'undefined') { var targets = document.getElementsByClassName("runkit-element"); - if (targets.length > 0) { - for (var i = 0; i < targets.length; i++) { - var content = targets[i].textContent; - if(/^(\