Sha256: 1aacb27cc6505d1eaaa3c13eed70b4314ad937de77262c4a40ca2011f9e05e87

Contents?: true

Size: 844 Bytes

Versions: 29

Compression:

Stored size: 844 Bytes

Contents

module Gherkin
  module Formatter
    class Hashable
      def to_hash
        ivars = instance_variables
        # When tests are runn with therubyracer (JavaScript), an extra field might
        # exist - added by Ref::WeakReference
        # https://github.com/bdurand/ref/blob/master/lib/ref/weak_reference/pure_ruby.rb
        # Remove it - we don't want it in the JSON.
        ivars.delete(:@__weak_backreferences__)
        ivars.inject({}) do |hash, ivar|
          value = instance_variable_get(ivar)
          value = value.to_hash if value.respond_to?(:to_hash)
          if Array === value
            value = value.map do |e|
              e.respond_to?(:to_hash) ? e.to_hash : e
            end
          end
          hash[ivar[1..-1]] = value unless [[], nil].index(value)
          hash
        end
      end
    end
  end
end

Version data entries

29 entries across 27 versions & 3 rubygems

Version Path
gherkin-2.11.7 lib/gherkin/formatter/hashable.rb
gherkin-2.11.7-x86-mswin32 lib/gherkin/formatter/hashable.rb
gherkin-2.11.7-x86-mingw32 lib/gherkin/formatter/hashable.rb
gherkin-2.11.7-java lib/gherkin/formatter/hashable.rb
librarian-puppet-0.9.8 vendor/gems/ruby/1.9.1/gems/gherkin-2.11.6/lib/gherkin/formatter/hashable.rb
gherkin-2.11.6 lib/gherkin/formatter/hashable.rb
gherkin-2.11.6-x86-mswin32 lib/gherkin/formatter/hashable.rb
gherkin-2.11.6-x86-mingw32 lib/gherkin/formatter/hashable.rb
gherkin-2.11.6-java lib/gherkin/formatter/hashable.rb