Sha256: 2adaaf89706bb75c4289479b1d7ac9620b136531ec4e67d0d17dbd483c08362d

Contents?: true

Size: 1.18 KB

Versions: 23

Compression:

Stored size: 1.18 KB

Contents

module EPUB
  module Inspector
    INSTANCE_VARIABLES_OPTION = {:exclude => []}
    SIMPLE_TEMPLATE = "#<%{class}:%{object_id}>"

    def inspect_simply
      SIMPLE_TEMPLATE % {
        :class => self.class,
        :object_id => inspect_object_id
      }
    end

    def inspect_object_id
      (__id__ << 1).to_s(16)
    end

    def inspect_instance_variables(options={})
      options = INSTANCE_VARIABLES_OPTION.merge(options)
      exclude = options[:exclude]

      (instance_variables - exclude).map {|name|
        value = instance_variable_get(name)
        "#{name}=#{value.inspect}"
      }.join(' ')
    end

    module PublicationModel
      class << self
        def included(mod)
          mod.__send__ :include, Inspector
        end
      end

      def inspect
        template % {
          :class      => self.class,
          :package    => (package && package.inspect_simply),
          :object_id  => inspect_object_id,
          :attributes => inspect_instance_variables(exclude: [:@package])
        }
      end

      def template
        t = "#<%{class}:%{object_id}"
        t << " @package=%{package}" if package
        t << " %{attributes}>"
      end
    end
  end
end

Version data entries

23 entries across 23 versions & 1 rubygems

Version Path
epub-parser-0.4.8 lib/epub/inspector.rb
epub-parser-0.4.7 lib/epub/inspector.rb
epub-parser-0.4.6 lib/epub/inspector.rb
epub-parser-0.4.5 lib/epub/inspector.rb
epub-parser-0.4.4 lib/epub/inspector.rb
epub-parser-0.4.3 lib/epub/inspector.rb
epub-parser-0.4.2 lib/epub/inspector.rb
epub-parser-0.4.1 lib/epub/inspector.rb
epub-parser-0.4.0 lib/epub/inspector.rb
epub-parser-0.3.9 lib/epub/inspector.rb
epub-parser-0.3.8 lib/epub/inspector.rb
epub-parser-0.3.7 lib/epub/inspector.rb
epub-parser-0.3.6 lib/epub/inspector.rb
epub-parser-0.3.5 lib/epub/inspector.rb
epub-parser-0.3.4 lib/epub/inspector.rb
epub-parser-0.3.3 lib/epub/inspector.rb
epub-parser-0.3.2 lib/epub/inspector.rb
epub-parser-0.3.1 lib/epub/inspector.rb
epub-parser-0.3.0 lib/epub/inspector.rb
epub-parser-0.2.9 lib/epub/inspector.rb