Module: SuperDiff

Defined in:
lib/super_diff/csi.rb,
lib/super_diff.rb,
lib/super_diff/line.rb,
lib/super_diff/rspec.rb,
lib/super_diff/errors.rb,
lib/super_diff/differs.rb,
lib/super_diff/helpers.rb,
lib/super_diff/version.rb,
lib/super_diff/csi/color.rb,
lib/super_diff/operations.rb,
lib/super_diff/gem_version.rb,
lib/super_diff/csi/document.rb,
lib/super_diff/differs/base.rb,
lib/super_diff/differs/hash.rb,
lib/super_diff/differs/main.rb,
lib/super_diff/rspec/differ.rb,
lib/super_diff/tiered_lines.rb,
lib/super_diff/active_record.rb,
lib/super_diff/configuration.rb,
lib/super_diff/differs/array.rb,
lib/super_diff/differs/empty.rb,
lib/super_diff/rspec/differs.rb,
lib/super_diff/active_support.rb,
lib/super_diff/operation_trees.rb,
lib/super_diff/recursion_guard.rb,
lib/super_diff/differs/defaults.rb,
lib/super_diff/csi/bold_sequence.rb,
lib/super_diff/differs/time_like.rb,
lib/super_diff/equality_matchers.rb,
lib/super_diff/object_inspection.rb,
lib/super_diff/csi/four_bit_color.rb,
lib/super_diff/csi/reset_sequence.rb,
lib/super_diff/csi/eight_bit_color.rb,
lib/super_diff/tiered_lines_elider.rb,
lib/super_diff/operation_trees/base.rb,
lib/super_diff/operation_trees/hash.rb,
lib/super_diff/operation_trees/main.rb,
lib/super_diff/active_record/differs.rb,
lib/super_diff/differs/custom_object.rb,
lib/super_diff/implementation_checks.rb,
lib/super_diff/operation_trees/array.rb,
lib/super_diff/active_support/differs.rb,
lib/super_diff/csi/colorized_document.rb,
lib/super_diff/differs/default_object.rb,
lib/super_diff/equality_matchers/base.rb,
lib/super_diff/equality_matchers/hash.rb,
lib/super_diff/equality_matchers/main.rb,
lib/super_diff/tiered_lines_formatter.rb,
lib/super_diff/equality_matchers/array.rb,
lib/super_diff/object_inspection/nodes.rb,
lib/super_diff/operation_tree_builders.rb,
lib/super_diff/rspec/augmented_matcher.rb,
lib/super_diff/rspec/object_inspection.rb,
lib/super_diff/csi/color_sequence_block.rb,
lib/super_diff/csi/uncolorized_document.rb,
lib/super_diff/differs/multiline_string.rb,
lib/super_diff/operation_trees/defaults.rb,
lib/super_diff/csi/twenty_four_bit_color.rb,
lib/super_diff/equality_matchers/default.rb,
lib/super_diff/operation_tree_flatteners.rb,
lib/super_diff/diff_formatters/collection.rb,
lib/super_diff/equality_matchers/defaults.rb,
lib/super_diff/operations/unary_operation.rb,
lib/super_diff/equality_matchers/primitive.rb,
lib/super_diff/operations/binary_operation.rb,
lib/super_diff/rspec/matcher_text_builders.rb,
lib/super_diff/rspec/matcher_text_template.rb,
lib/super_diff/object_inspection/nodes/base.rb,
lib/super_diff/object_inspection/nodes/text.rb,
lib/super_diff/operation_tree_builders/base.rb,
lib/super_diff/operation_tree_builders/hash.rb,
lib/super_diff/operation_tree_builders/main.rb,
lib/super_diff/rspec/differs/hash_including.rb,
lib/super_diff/active_record/operation_trees.rb,
lib/super_diff/colorized_document_extensions.rb,
lib/super_diff/operation_tree_builders/array.rb,
lib/super_diff/operation_trees/custom_object.rb,
lib/super_diff/rspec/operation_tree_builders.rb,
lib/super_diff/active_support/operation_trees.rb,
lib/super_diff/operation_tree_flatteners/base.rb,
lib/super_diff/operation_tree_flatteners/hash.rb,
lib/super_diff/operation_trees/default_object.rb,
lib/super_diff/active_record/object_inspection.rb,
lib/super_diff/object_inspection/nodes/nesting.rb,
lib/super_diff/operation_tree_flatteners/array.rb,
lib/super_diff/active_support/object_inspection.rb,
lib/super_diff/diff_formatters/multiline_string.rb,
lib/super_diff/errors/no_differ_available_error.rb,
lib/super_diff/operation_tree_builders/defaults.rb,
lib/super_diff/operation_trees/multiline_string.rb,
lib/super_diff/rspec/matcher_text_builders/base.rb,
lib/super_diff/object_inspection/inspection_tree.rb,
lib/super_diff/object_inspection/nodes/only_when.rb,
lib/super_diff/operation_tree_builders/time_like.rb,
lib/super_diff/rspec/matcher_text_builders/match.rb,
lib/super_diff/equality_matchers/multiline_string.rb,
lib/super_diff/object_inspection/nodes/inspection.rb,
lib/super_diff/object_inspection/nodes/when_empty.rb,
lib/super_diff/rspec/differs/collection_including.rb,
lib/super_diff/equality_matchers/singleline_string.rb,
lib/super_diff/operation_tree_flatteners/collection.rb,
lib/super_diff/active_record/operation_tree_builders.rb,
lib/super_diff/operation_tree_builders/custom_object.rb,
lib/super_diff/active_support/operation_tree_builders.rb,
lib/super_diff/object_inspection/nodes/as_single_line.rb,
lib/super_diff/object_inspection/nodes/when_non_empty.rb,
lib/super_diff/object_inspection/prefix_for_next_node.rb,
lib/super_diff/operation_tree_builders/default_object.rb,
lib/super_diff/rspec/differs/object_having_attributes.rb,
lib/super_diff/rspec/matcher_text_builders/respond_to.rb,
lib/super_diff/active_record/operation_tree_flatteners.rb,
lib/super_diff/object_inspection/prelude_for_next_node.rb,
lib/super_diff/operation_tree_flatteners/custom_object.rb,
lib/super_diff/rspec/matcher_text_builders/raise_error.rb,
lib/super_diff/active_support/operation_tree_flatteners.rb,
lib/super_diff/errors/no_diff_formatter_available_error.rb,
lib/super_diff/operation_tree_builders/multiline_string.rb,
lib/super_diff/operation_tree_flatteners/default_object.rb,
lib/super_diff/rspec/matcher_text_builders/be_predicate.rb,
lib/super_diff/object_inspection/inspection_tree_builders.rb,
lib/super_diff/operation_tree_flatteners/multiline_string.rb,
lib/super_diff/rspec/matcher_text_builders/have_predicate.rb,
lib/super_diff/rspec/differs/collection_containing_exactly.rb,
lib/super_diff/rspec/matcher_text_builders/contain_exactly.rb,
lib/super_diff/active_record/differs/active_record_relation.rb,
lib/super_diff/rspec/operation_tree_builders/hash_including.rb,
lib/super_diff/errors/no_operational_sequencer_available_error.rb,
lib/super_diff/object_inspection/inspection_tree_builders/base.rb,
lib/super_diff/object_inspection/inspection_tree_builders/hash.rb,
lib/super_diff/object_inspection/inspection_tree_builders/main.rb,
lib/super_diff/object_inspection/nodes/when_rendering_to_lines.rb,
lib/super_diff/object_inspection/inspection_tree_builders/array.rb,
lib/super_diff/object_inspection/nodes/when_rendering_to_string.rb,
lib/super_diff/rspec/object_inspection/inspection_tree_builders.rb,
lib/super_diff/rspec/operation_tree_builders/collection_including.rb,
lib/super_diff/active_support/differs/hash_with_indifferent_access.rb,
lib/super_diff/object_inspection/inspection_tree_builders/defaults.rb,
lib/super_diff/active_record/operation_trees/active_record_relation.rb,
lib/super_diff/object_inspection/inspection_tree_builders/primitive.rb,
lib/super_diff/object_inspection/inspection_tree_builders/time_like.rb,
lib/super_diff/rspec/operation_tree_builders/object_having_attributes.rb,
lib/super_diff/rspec/object_inspection/inspection_tree_builders/double.rb,
lib/super_diff/active_record/object_inspection/inspection_tree_builders.rb,
lib/super_diff/object_inspection/inspection_tree_builders/custom_object.rb,
lib/super_diff/object_inspection/nodes/as_lines_when_rendering_to_lines.rb,
lib/super_diff/rspec/object_inspection/inspection_tree_builders/kind_of.rb,
lib/super_diff/active_record/operation_tree_builders/active_record_model.rb,
lib/super_diff/active_support/object_inspection/inspection_tree_builders.rb,
lib/super_diff/object_inspection/inspection_tree_builders/default_object.rb,
lib/super_diff/object_inspection/nodes/as_prefix_when_rendering_to_lines.rb,
lib/super_diff/object_inspection/nodes/as_prelude_when_rendering_to_lines.rb,
lib/super_diff/rspec/object_inspection/inspection_tree_builders/primitive.rb,
lib/super_diff/active_support/operation_trees/hash_with_indifferent_access.rb,
lib/super_diff/rspec/operation_tree_builders/collection_containing_exactly.rb,
lib/super_diff/active_record/operation_tree_builders/active_record_relation.rb,
lib/super_diff/rspec/object_inspection/inspection_tree_builders/instance_of.rb,
lib/super_diff/rspec/object_inspection/inspection_tree_builders/value_within.rb,
lib/super_diff/active_record/operation_tree_flatteners/active_record_relation.rb,
lib/super_diff/rspec/object_inspection/inspection_tree_builders/hash_including.rb,
lib/super_diff/active_support/operation_tree_builders/hash_with_indifferent_access.rb,
lib/super_diff/active_support/operation_tree_flatteners/hash_with_indifferent_access.rb,
lib/super_diff/rspec/object_inspection/inspection_tree_builders/collection_including.rb,
lib/super_diff/rspec/object_inspection/inspection_tree_builders/object_having_attributes.rb,
lib/super_diff/active_record/object_inspection/inspection_tree_builders/active_record_model.rb,
lib/super_diff/rspec/object_inspection/inspection_tree_builders/collection_containing_exactly.rb,
lib/super_diff/active_record/object_inspection/inspection_tree_builders/active_record_relation.rb,
lib/super_diff/active_support/object_inspection/inspection_tree_builders/hash_with_indifferent_access.rb

Overview

Defined Under Namespace

Modules: ActiveRecord, ActiveSupport, ColorizedDocumentExtensions, Csi, DiffFormatters, Differs, EqualityMatchers, Errors, Helpers, ImplementationChecks, ObjectInspection, OperationTreeBuilders, OperationTreeFlatteners, OperationTrees, Operations, RSpec, RecursionGuard Classes: Configuration, GemVersion, Line, TieredLines, TieredLinesElider, TieredLinesFormatter

Constant Summary collapse

VERSION =
"0.8.0".freeze

Class Method Summary collapse

Class Method Details

.configurationObject



35
36
37
# File 'lib/super_diff.rb', line 35

def self.configuration
  @_configuration ||= Configuration.new
end

.configure {|configuration| ... } ⇒ Object

Yields:



30
31
32
33
# File 'lib/super_diff.rb', line 30

def self.configure
  yield configuration
  configuration.updated
end

.insert_overrides(target_module, mod = nil, &block) ⇒ Object



69
70
71
72
73
74
75
# File 'lib/super_diff.rb', line 69

def self.insert_overrides(target_module, mod = nil, &block)
  if mod
    target_module.prepend(mod)
  else
    target_module.prepend(Module.new(&block))
  end
end

.insert_singleton_overrides(target_module, mod = nil, &block) ⇒ Object



77
78
79
80
81
82
83
# File 'lib/super_diff.rb', line 77

def self.insert_singleton_overrides(target_module, mod = nil, &block)
  if mod
    target_module.singleton_class.prepend(mod)
  else
    target_module.singleton_class.prepend(Module.new(&block))
  end
end

.inspect_object(object, as_lines:, **rest) ⇒ Object



39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/super_diff.rb', line 39

def self.inspect_object(object, as_lines:, **rest)
  SuperDiff::RecursionGuard.guarding_recursion_of(object) do
    inspection_tree = ObjectInspection::InspectionTreeBuilders::Main.call(
      object
    )

    if as_lines
      inspection_tree.render_to_lines(object, **rest)
    else
      inspection_tree.render_to_string(object)
    end
  end
end

.primitive?(value) ⇒ Boolean

Returns:

  • (Boolean)


60
61
62
63
64
65
66
67
# File 'lib/super_diff.rb', line 60

def self.primitive?(value)
  case value
  when true, false, nil, Symbol, Numeric, Regexp, Class
    true
  else
    false
  end
end

.time_like?(value) ⇒ Boolean

Returns:

  • (Boolean)


53
54
55
56
57
58
# File 'lib/super_diff.rb', line 53

def self.time_like?(value)
  # Check for ActiveSupport's #acts_like_time? for their time-like objects
  # (like ActiveSupport::TimeWithZone).
  (value.respond_to?(:acts_like_time?) && value.acts_like_time?) ||
    value.is_a?(Time)
end