Class: Nexmo::Markdown::ModalFilter

Inherits:
Banzai::Filter
  • Object
show all
Defined in:
lib/nexmo_markdown_renderer/filters/modal_filter.rb

Instance Method Summary collapse

Instance Method Details

#call(input) ⇒ Object



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