Sha256: 128d942bf21c9db451d2299c2bfba3d1f9843acbce66d572cbbe4b479754cead

Contents?: true

Size: 1.5 KB

Versions: 51

Compression:

Stored size: 1.5 KB

Contents

require 'active_support'

module LHS
  module Inspect
    extend ActiveSupport::Concern

    def inspect
      [
        [
          [
            [
              to_s.match('LHS::Data') ? 'Data of ' : nil,
              self.class
            ].join,
            _inspect_id
          ].join(' '),
          _inspect_path
        ].compact.join("\n"),
        pretty_raw
      ].compact.join("\n")
    end

    private

    def _inspect_id
      _root.href || (_root.item? ? _root.id : nil) || object_id
    end

    def _inspect_path
      current = self
      path = []
      _collect_parents_for_inspect!(path, current)
      return unless path.present?
      "> #{path.reverse.join(' > ')}"
    end

    def _collect_parents_for_inspect!(path, current)
      return unless current.parent
      parent_raw = current.parent._raw
      if parent_raw.is_a?(Array)
        parent_raw.each_with_index do |element, index|
          path.push(index) if element == current._raw
        end
      elsif parent_raw.is_a?(Hash)
        parent_raw.each do |key, value|
          path.push(key) if value == current._raw
        end
      end
      _collect_parents_for_inspect!(path, current.parent)
    end

    def pretty_raw
      return if _raw.blank?
      if _raw.is_a?(Array)
        _raw
      else
        _raw.to_a.map do |key, value|
          ":#{key} => " +
            if value.is_a? String
              "\"#{value}\""
            else
              value.to_s
            end
        end
      end.join("\n")
    end
  end
end

Version data entries

51 entries across 51 versions & 1 rubygems

Version Path
lhs-15.3.1 lib/lhs/concerns/inspect.rb
lhs-15.3.1.pre.fixlhc.1 lib/lhs/concerns/inspect.rb
lhs-15.3.0 lib/lhs/concerns/inspect.rb
lhs-15.2.5 lib/lhs/concerns/inspect.rb
lhs-15.2.4 lib/lhs/concerns/inspect.rb
lhs-15.2.3 lib/lhs/concerns/inspect.rb
lhs-15.2.3.pre.favorites.1 lib/lhs/concerns/inspect.rb
lhs-15.2.2.pre.favorites.1 lib/lhs/concerns/inspect.rb
lhs-15.2.2 lib/lhs/concerns/inspect.rb
lhs-15.2.1 lib/lhs/concerns/inspect.rb
lhs-15.2.0 lib/lhs/concerns/inspect.rb
lhs-15.1.1 lib/lhs/concerns/inspect.rb
lhs-15.1.0 lib/lhs/concerns/inspect.rb
lhs-15.0.2 lib/lhs/concerns/inspect.rb
lhs-15.0.1 lib/lhs/concerns/inspect.rb
lhs-15.0.0 lib/lhs/concerns/inspect.rb
lhs-14.6.5 lib/lhs/concerns/inspect.rb
lhs-14.6.4 lib/lhs/concerns/inspect.rb
lhs-14.6.3 lib/lhs/concerns/inspect.rb
lhs-14.6.2 lib/lhs/concerns/inspect.rb