4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
# File 'lib/nexmo_markdown_renderer/filters/modal_filter.rb', line 4
def call(input)
modals = []
input.gsub!(/@\[(.+?)\]\((.+?)\)/) do |_s|
id = 'M' + SecureRandom.hex(12)
modals << { document: $2, id: id }
"<a href='javascript:void(0)' data-modal='#{id}' class='Vlt-modal-trigger Vlt-text-link'>#{$1}</a>"
end
modals = modals.map do |modal|
filename = "#{Nexmo::Markdown::Config.docs_base_path}/#{modal[:document]}"
raise "Could not find modal #{filename}" unless File.exist? filename
document = File.read(filename)
output = Nexmo::Markdown::Renderer.new.call(document)
modal = <<~HEREDOC
<div class="Vlt-modal" id="#{modal[:id]}">
<div class="Vlt-modal__panel">
<div class="Vlt-modal__content">
#{output}
</div>
</div>
</div>
HEREDOC
"FREEZESTART#{Base64.urlsafe_encode64(modal)}FREEZEEND"
end
input + modals.join("\n")
end
|