Class: Gem::Comparator::Report::NestedSection

Inherits:
Object
  • Object
show all
Includes:
Signs, UserInteraction
Defined in:
lib/rubygems/comparator/report.rb

Constant Summary collapse

DEFAULT_INDENT =
'  '

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Signs

#different, #same

Constructor Details

#initialize(name, parent_section = nil) ⇒ NestedSection

Returns a new instance of NestedSection.



48
49
50
51
52
53
54
55
56
# File 'lib/rubygems/comparator/report.rb', line 48

def initialize(name, parent_section = nil)
  @name = name
  @header = Entry.new
  @messages = []
  @sections = []
  @level = 0

  set_parent parent_section if parent_section
end

Instance Attribute Details

#headerObject (readonly)

Returns the value of attribute header.



45
46
47
# File 'lib/rubygems/comparator/report.rb', line 45

def header
  @header
end

#levelObject (readonly)

Returns the value of attribute level.



45
46
47
# File 'lib/rubygems/comparator/report.rb', line 45

def level
  @level
end

#messagesObject (readonly)

Returns the value of attribute messages.



45
46
47
# File 'lib/rubygems/comparator/report.rb', line 45

def messages
  @messages
end

#nameObject

Returns the value of attribute name.



46
47
48
# File 'lib/rubygems/comparator/report.rb', line 46

def name
  @name
end

#parent_sectionObject (readonly)

Returns the value of attribute parent_section.



45
46
47
# File 'lib/rubygems/comparator/report.rb', line 45

def parent_section
  @parent_section
end

#sectionsObject

Returns the value of attribute sections.



46
47
48
# File 'lib/rubygems/comparator/report.rb', line 46

def sections
  @sections
end

Instance Method Details

#all_messagesObject



88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
# File 'lib/rubygems/comparator/report.rb', line 88

def all_messages
  indent = DEFAULT_INDENT*@level

  if @header.empty?
    @messages.map do |m|
      m.set_indent!(indent)
    end + nested_messages
  else
    nested = @messages.map do |m|
      m.set_indent!(indent * 2)
    end + nested_messages
    return [] if nested.empty?

    @header.set_indent!(indent)
    nested.unshift(@header)
  end
end

#lines(line_num) ⇒ Object



106
107
108
# File 'lib/rubygems/comparator/report.rb', line 106

def lines(line_num)
  all_messages[line_num]&.data
end

#nest(name) ⇒ Object Also known as: []



76
77
78
79
80
81
# File 'lib/rubygems/comparator/report.rb', line 76

def nest(name)
  @sections.each do |s|
    return s if s.name == name
  end
  NestedSection.new(name, self)
end

#nested_messagesObject



110
111
112
113
114
115
116
117
118
# File 'lib/rubygems/comparator/report.rb', line 110

def nested_messages
  nested_messages = []
  @sections.each do |section|
    section.all_messages.each do |m|
      nested_messages << m
    end
  end
  nested_messages
end


84
85
86
# File 'lib/rubygems/comparator/report.rb', line 84

def print
  all_messages.each { |m| m.print }
end

#puts(message) ⇒ Object Also known as: <<



66
67
68
69
70
71
72
73
# File 'lib/rubygems/comparator/report.rb', line 66

def puts(message)
  case message
  when String, Array
    @messages << Entry.new(message) unless message.empty?
  else
    @messages << Entry.new(message) unless message
  end
end

#section(&block) ⇒ Object



58
59
60
# File 'lib/rubygems/comparator/report.rb', line 58

def section(&block)
  instance_eval(&block)
end

#set_header(message) ⇒ Object



62
63
64
# File 'lib/rubygems/comparator/report.rb', line 62

def set_header(message)
  @header = Entry.new(message)
end