Sha256: 17b9b5448c45f1e46fe098e9d0d7facf06d85f6f3ee032315f053d50e0a4cbd6

Contents?: true

Size: 785 Bytes

Versions: 8

Compression:

Stored size: 785 Bytes

Contents

# frozen_string_literal: true

class Lux::Response::Flash

  # flash.info 'messsage ...'
  # flash.info = 'messsage ...'
  def self.add_type name
    define_method(name) { |message| add name, message }
    eval "alias #{name}= #{name}"
  end

  add_type :info
  add_type :error
  add_type :warning

  ###

  def initialize h=nil
    @msg = h || {}
  end

  def clear
    to_h.tap { @msg = {} }
  end

  def to_h
    @msg
  end

  # clears white space, replaces quotes
  def clear_for_js
    {}.tap do |msg|
      clear.each do |k, v|
        msg[k] = v.join(', ').gsub(/\s+/, ' ')
      end
    end
  end

  private

  def add name, message
    @msg[name] ||= []

    return if @msg[name].last == message
    return if @msg[name].length > 4

    @msg[name].push message.to_s
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
lux-fw-0.5.37 ./lib/lux/response/lib/flash.rb
lux-fw-0.5.36 ./lib/lux/response/lib/flash.rb
lux-fw-0.5.35 ./lib/lux/response/lib/flash.rb
lux-fw-0.5.34 ./lib/lux/response/lib/flash.rb
lux-fw-0.5.33 ./lib/lux/response/lib/flash.rb
lux-fw-0.5.32 ./lib/lux/response/lib/flash.rb
lux-fw-0.2.3 ./lib/lux/response/lib/flash.rb
lux-fw-0.2.1 ./lib/lux/response/lib/flash.rb