Sha256: 1501bdb115a13064c77dce169b5d1d62f031d39f4424c824fee77fdd8795de5a

Contents?: true

Size: 1.13 KB

Versions: 14

Compression:

Stored size: 1.13 KB

Contents

module Betterlog
  class Log
    class Severity
      include ::Logger::Severity
      include Comparable

      class << self
        thread_local :shared

        def new(name)
          name = name.to_sym if self.class === name
          name = name.to_s.upcase.to_sym
          self.shared ||= {}
          shared[name] ||= super(name).freeze
        end
      end

      def initialize(name)
        name = name.to_sym if self.class === name
        @name = name.to_s.downcase.to_sym
        begin
          @level = self.class.const_get(@name.to_s.upcase)
        rescue NameError
          @name  = :unknown
          @level = UNKNOWN
        end
      end

      def self.all
        @all_constants ||= constants.map { |c| new(c) }
      end

      def to_i
        @level
      end

      def to_s
        @name.to_s.upcase
      end

      def to_sym
        @name
      end

      def as_json(*)
        to_s
      end

      def <=>(other)
        to_i <=> self.class.new(other).to_i
      end

      def eql?(other)
        to_sym == other.to_sym
      end

      alias == eql?

      def hash
        @name.hash
      end
    end
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
betterlog-0.14.1 lib/betterlog/log/severity.rb
betterlog-0.14.0 lib/betterlog/log/severity.rb
betterlog-0.13.1 lib/betterlog/log/severity.rb
betterlog-0.13.0 lib/betterlog/log/severity.rb
betterlog-0.12.2 lib/betterlog/log/severity.rb
betterlog-0.12.1 lib/betterlog/log/severity.rb
betterlog-0.12.0 lib/betterlog/log/severity.rb
betterlog-0.11.0 lib/betterlog/log/severity.rb
betterlog-0.10.0 lib/betterlog/log/severity.rb
betterlog-0.9.0 lib/betterlog/log/severity.rb
betterlog-0.8.1 lib/betterlog/log/severity.rb
betterlog-0.8.0 lib/betterlog/log/severity.rb
betterlog-0.7.2 lib/betterlog/log/severity.rb
betterlog-0.7.1 lib/betterlog/log/severity.rb