Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
Size: Mime:
# frozen_string_literal: true

require 'sinatra/flash'

# Top-level documentation goes here...
module Sinatra
  module Faculty
    # Module for handling flash messages
    module Flash
      # Helpers for handling multiple flash messages at once
      module Helpers
        def flash_message(message, type: :info)
          flash.next[:flash_messages] ||= []
          flash.next[:flash_messages].push({ type:, message: })
        end

        def flash_messages
          flash[:flash_messages] || []
        end
      end

      def self.registered(app) # rubocop:disable Metrics/MethodLength
        app.helpers Helpers

        app.template :flash_messages do
          %(
            <% flash_messages.each do |message| %>
              <div class="alert alert-<%= message[:type] %>">
                <% lines = Array(message[:message]) %>
                <%== lines.map { |msg| Erubi.h(msg) }.join('<br />') %>
              </div>
            <% end %>
          )
        end
      end
    end
  end

  register Sinatra::Faculty::Flash
end