class Nexmo::Markdown::ModalFilter
Public Instance Methods
call(input)
click to toggle source
# 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