class SuperDiff::ObjectInspection::Nodes::AsLinesWhenRenderingToLines

Attributes

collection_bookend[R]

Public Class Methods

method_name() click to toggle source
# File lib/super_diff/object_inspection/nodes/as_lines_when_rendering_to_lines.rb, line 9
def self.method_name
  :as_lines_when_rendering_to_lines
end
new( tree, *args, add_comma: false, collection_bookend: nil, **rest ) click to toggle source
Calls superclass method
# File lib/super_diff/object_inspection/nodes/as_lines_when_rendering_to_lines.rb, line 13
def initialize(
  tree,
  *args,
  add_comma: false,
  collection_bookend: nil,
  **rest
)
  super(tree, *args, **rest)

  @add_comma = add_comma
  @collection_bookend = collection_bookend
end
node_name() click to toggle source
# File lib/super_diff/object_inspection/nodes/as_lines_when_rendering_to_lines.rb, line 5
def self.node_name
  :as_lines_when_rendering_to_lines
end

Public Instance Methods

render_to_lines(object, type:, indentation_level:) click to toggle source
# File lib/super_diff/object_inspection/nodes/as_lines_when_rendering_to_lines.rb, line 42
def render_to_lines(object, type:, indentation_level:)
  lines =
    if block
      render_to_lines_in_subtree(
        object,
        type: type,
        indentation_level: indentation_level,
        disallowed_node_names: [
          :line,
          :as_lines_when_rendering_to_lines,
        ],
      )
    else
      [
        SuperDiff::Line.new(
          type: type,
          indentation_level: indentation_level,
          value: immediate_value.to_s,
        ),
      ]
    end

  with_collection_bookend_added_to_last_line_in(
    with_add_comma_added_to_last_line_in(lines),
  )
end
render_to_string(object) click to toggle source
# File lib/super_diff/object_inspection/nodes/as_lines_when_rendering_to_lines.rb, line 26
def render_to_string(object)
  # TODO: This happens a lot, can we simplify this?
  string =
    if block
      render_to_string_in_subtree(object)
    else
      immediate_value.to_s
    end

  if add_comma?
    string + ","
  else
    string
  end
end

Private Instance Methods

add_comma?() click to toggle source
# File lib/super_diff/object_inspection/nodes/as_lines_when_rendering_to_lines.rb, line 73
def add_comma?
  @add_comma
end
with_add_comma_added_to_last_line_in(lines) click to toggle source
# File lib/super_diff/object_inspection/nodes/as_lines_when_rendering_to_lines.rb, line 87
def with_add_comma_added_to_last_line_in(lines)
  if add_comma?
    lines[0..-2] + [lines[-1].clone_with(add_comma: add_comma?)]
  else
    lines
  end
end
with_collection_bookend_added_to_last_line_in(lines) click to toggle source
# File lib/super_diff/object_inspection/nodes/as_lines_when_rendering_to_lines.rb, line 77
def with_collection_bookend_added_to_last_line_in(lines)
  if collection_bookend
    lines[0..-2] + [
      lines[-1].clone_with(collection_bookend: collection_bookend),
    ]
  else
    lines
  end
end