Sha256: 6e23afe44d50ff58a69c666e2d9b5ec7b577438c36565ad5dbd21899cb366b04

Contents?: true

Size: 1.42 KB

Versions: 24

Compression:

Stored size: 1.42 KB

Contents

require "cabin/namespace"

module Cabin
  module Inspectable
    # Provide a saner inspect method that's easier to configure.
    #
    # By default, will inspect all instance variables. You can tune
    # this by setting @inspectables to an array of ivar symbols, like:
    #     [ :@hello, :@world ]
    #
    #     class Foo
    #       include Cabin::Inspectable
    #
    #       def initialize
    #         @inspectables = [:@foo, :@bar]
    #         @foo = 123
    #         @bar = "hello"
    #         @baz = "ok"
    #       end
    #     end
    #
    #     foo = Foo.new
    #     foo.inspect == '<Foo(1) @foo=123 @bar="hello" >'
    def inspect
      if instance_variable_defined?(:@inspectables)
        ivars = @inspectables
      else
        ivars = instance_variables
      end
      str = "<#{self.class.name}(@#{self.object_id}) "
      ivars.each do |ivar|
        str << "#{ivar}=#{instance_variable_get(ivar).inspect} "
      end
      str << ">"
      return str
    end
  end

  def self.__Inspectable(*ivars)
    mod = Module.new
    mod.instance_eval do
      define_method(:inspect) do
        ivars = instance_variables if ivars.empty?
        str = "<#{self.class.name}(@#{self.object_id}) "
        ivars.each do |ivar|
          str << "#{ivar}=#{instance_variable_get(ivar).inspect} "
        end
        str << ">"
        return str
      end
    end
    return mod
  end # def Cabin.Inspectable
end # module Cabin


Version data entries

24 entries across 22 versions & 6 rubygems

Version Path
logstash-filter-zabbix-0.1.2 vendor/bundle/jruby/1.9/gems/cabin-0.8.1/lib/cabin/inspectable.rb
logstash-filter-zabbix-0.1.1 vendor/bundle/jruby/1.9/gems/cabin-0.8.1/lib/cabin/inspectable.rb
ivanvc-logstash-input-s3-3.1.1.4 vendor/local/gems/cabin-0.8.1/lib/cabin/inspectable.rb
ivanvc-logstash-input-s3-3.1.1.3 vendor/local/gems/cabin-0.8.1/lib/cabin/inspectable.rb
ivanvc-logstash-input-s3-3.1.1.2 vendor/local/gems/cabin-0.8.1/lib/cabin/inspectable.rb
cabin-0.9.0 lib/cabin/inspectable.rb
able-neo4j-1.0.0 vendor/bundle/jruby/1.9/gems/cabin-0.7.1/lib/cabin/inspectable.rb
cabin-0.8.1 lib/cabin/inspectable.rb
cabin-0.8.0 lib/cabin/inspectable.rb
logstash-input-beats-2.0.2 vendor/jruby/1.9/gems/logstash-codec-json-2.0.3/vendor/gems/cabin-0.7.2/lib/cabin/inspectable.rb
logstash-input-beats-2.0.2 vendor/jruby/1.9/gems/cabin-0.7.1/lib/cabin/inspectable.rb
logstash-input-beats-2.0.2 vendor/jruby/1.9/gems/cabin-0.7.2/lib/cabin/inspectable.rb
logstash-codec-json-2.0.3 vendor/gems/cabin-0.7.2/lib/cabin/inspectable.rb
cabin-0.7.2 lib/cabin/inspectable.rb
logstash-input-beats-0.9.2 vendor/jruby/1.9/gems/cabin-0.7.1/lib/cabin/inspectable.rb
logstash-input-beats-0.9.1 vendor/jruby/1.9/gems/cabin-0.7.1/lib/cabin/inspectable.rb
cabin-0.7.1 lib/cabin/inspectable.rb
cabin-0.6.1 lib/cabin/inspectable.rb
cabin-0.6.0 lib/cabin/inspectable.rb
cabin-0.5.0 lib/cabin/inspectable.rb