Sha256: 3b60894d37ce2385746e4016d48d0f5d25d153f754f68e57aa7d146e167c124f

Contents?: true

Size: 1.18 KB

Versions: 21

Compression:

Stored size: 1.18 KB

Contents

module Nexmo
  module OAS
    module Renderer
      module Filters
        class Modal < Banzai::Filter
          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 = modal[:document]
              raise "Could not find modal #{filename}" unless File.exist? filename

              document = File.read(filename)
              output = MarkdownPipeline.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
        end
      end
    end
  end
end

Version data entries

21 entries across 21 versions & 1 rubygems

Version Path
nexmo-oas-renderer-0.7.1 lib/nexmo/oas/renderer/filters/modal.rb
nexmo-oas-renderer-0.7.0 lib/nexmo/oas/renderer/filters/modal.rb
nexmo-oas-renderer-0.6.6 lib/nexmo/oas/renderer/filters/modal.rb
nexmo-oas-renderer-0.6.5 lib/nexmo/oas/renderer/filters/modal.rb
nexmo-oas-renderer-0.6.4 lib/nexmo/oas/renderer/filters/modal.rb
nexmo-oas-renderer-0.6.3 lib/nexmo/oas/renderer/filters/modal.rb
nexmo-oas-renderer-0.6.2 lib/nexmo/oas/renderer/filters/modal.rb
nexmo-oas-renderer-0.6.1 lib/nexmo/oas/renderer/filters/modal.rb
nexmo-oas-renderer-0.5.6 lib/nexmo/oas/renderer/filters/modal.rb
nexmo-oas-renderer-0.5.5 lib/nexmo/oas/renderer/filters/modal.rb
nexmo-oas-renderer-0.5.4 lib/nexmo/oas/renderer/filters/modal.rb
nexmo-oas-renderer-0.5.2 lib/nexmo/oas/renderer/filters/modal.rb
nexmo-oas-renderer-0.5.1 lib/nexmo/oas/renderer/filters/modal.rb
nexmo-oas-renderer-0.5.0 lib/nexmo/oas/renderer/filters/modal.rb
nexmo-oas-renderer-0.4.1 lib/nexmo/oas/renderer/filters/modal.rb
nexmo-oas-renderer-0.4.0 lib/nexmo/oas/renderer/filters/modal.rb
nexmo-oas-renderer-0.3.7 lib/nexmo/oas/renderer/filters/modal.rb
nexmo-oas-renderer-0.3.6 lib/nexmo/oas/renderer/filters/modal.rb
nexmo-oas-renderer-0.3.5 lib/nexmo/oas/renderer/filters/modal.rb
nexmo-oas-renderer-0.3.4 lib/nexmo/oas/renderer/filters/modal.rb