class SuperDiff::ObjectInspection::InspectionTreeBuilders::TimeLike

Public Class Methods

applies_to?(value) click to toggle source
# File lib/super_diff/object_inspection/inspection_tree_builders/time_like.rb, line 5
def self.applies_to?(value)
  SuperDiff.time_like?(value)
end

Public Instance Methods

call() click to toggle source
# File lib/super_diff/object_inspection/inspection_tree_builders/time_like.rb, line 9
def call
  InspectionTree.new do
    as_lines_when_rendering_to_lines(collection_bookend: :open) do
      add_text do |time|
        "#<#{time.class} "
      end

      when_rendering_to_lines do
        add_text "{"
      end
    end

    when_rendering_to_string do
      add_text do |time|
        time.strftime("%Y-%m-%d %H:%M:%S") +
          (time.subsec == 0 ? "" : "+#{time.subsec.inspect}") +
          " " + time.strftime("%:z") +
          (time.zone ? " (#{time.zone})" : "")
      end
    end

    when_rendering_to_lines do
      nested do |time|
        insert_separated_list(
          [
            :year,
            :month,
            :day,
            :hour,
            :min,
            :sec,
            :subsec,
            :zone,
            :utc_offset
          ]
        ) do |name|
          add_text name.to_s
          add_text ": "
          add_inspection_of time.public_send(name)
        end
      end
    end

    as_lines_when_rendering_to_lines(collection_bookend: :close) do
      when_rendering_to_lines do
        add_text "}"
      end

      add_text ">"
    end
  end
end