Sha256: 20fb4db284c58bfc4d9b5f238a0c3c3e95174f51b5c0a339b4571203dd629e4a

Contents?: true

Size: 883 Bytes

Versions: 1

Compression:

Stored size: 883 Bytes

Contents

# frozen_string_literal: true

module Lug
  module Extend
    module Object
      def logger
        defined?(LUG) && LUG
      end
    end

    module Class
      def logger_on(namespace)
        cap_ns = namespace.to_s.split(':').map(&:capitalize).join
        mod_name = :"LoggerOn#{cap_ns}"

        return const_get(mod_name) if const_defined?(mod_name)
        return unless LUG

        mod = Module.new
        mod.module_eval(%(
          module ClassMethods
            def logger
              LUG.on(#{namespace.inspect})
            end
          end

          def self.included(receiver)
            receiver.extend(ClassMethods)
          end

          def logger
            self.class.logger
          end
        ))
        const_set(mod_name, mod)

        include mod
      end
    end
  end

  Object.include Extend::Object
  Class.include  Extend::Class
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
lug-0.1.0 lib/lug/extend.rb