123456789_123456789_123456789_123456789_123456789_

Class: YARD::Templates::Section

Relationships & Source Files
Super Chains via Extension / Inclusion / Inheritance
Class Chain:
self, ::Array
Instance Chain:
self, ::Array
Inherits: Array
  • Object
Defined in: lib/yard/templates/section.rb

Overview

Abstracts the structure for a section and its subsections into an ordered list of sections and subsections.

Since:

  • 0.6.0

Class Method Summary

Instance Attribute Summary

Instance Method Summary

::Array - Inherited

#place

Places values before or after another object (by value) in an array.

Constructor Details

.new(name, *args) ⇒ Section

Since:

  • 0.6.0

[ GitHub ]

  
# File 'lib/yard/templates/section.rb', line 10

def initialize(name, *args)
  self.name = name
  replace(parse_sections(args))
end

Instance Attribute Details

#name (rw)

Since:

  • 0.6.0

[ GitHub ]

  
# File 'lib/yard/templates/section.rb', line 8

attr_accessor :name

Instance Method Details

#<<(*args)

Alias for #push.

[ GitHub ]

  
# File 'lib/yard/templates/section.rb', line 48

alias << push

#==(other)

Since:

  • 0.6.0

[ GitHub ]

  
# File 'lib/yard/templates/section.rb', line 34

def ==(other)
  case other
  when Section
    eql?(other)
  when Array
    to_a == other
  else
    name == other
  end
end

#[](*args)

Since:

  • 0.6.0

[ GitHub ]

  
# File 'lib/yard/templates/section.rb', line 21

def [](*args)
  if args.first.is_a?(Range) || args.size > 1
    return self.class.new(name, *super(*args))
  elsif args.first.is_a?(Integer)
    return super(*args)
  end
  find {|o| o.name == args.first }
end

#any(item)

Since:

  • 0.6.0

[ GitHub ]

  
# File 'lib/yard/templates/section.rb', line 74

def any(item)
  find do |section|
    return section if section == item
    return section.any(item) unless section.empty?
  end
  nil
end

#dup

Since:

  • 0.6.0

[ GitHub ]

  
# File 'lib/yard/templates/section.rb', line 15

def dup
  obj = super
  obj.name = name
  obj
end

#eql?(other) ⇒ Boolean

Since:

  • 0.6.0

[ GitHub ]

  
# File 'lib/yard/templates/section.rb', line 30

def eql?(other)
  super(other) && name == other.name
end

#inspect

Since:

  • 0.6.0

[ GitHub ]

  
# File 'lib/yard/templates/section.rb', line 54

def inspect
  n = name.respond_to?(:path) ? "T('#{name.path}')" : name.inspect
  subsects = empty? ? "" : ", subsections=#{super}"
  "Section(#{n}#{subsects})"
end

#parse_sections(args) (private)

Since:

  • 0.6.0

[ GitHub ]

  
# File 'lib/yard/templates/section.rb', line 84

def parse_sections(args)
  if args.size == 1 && args.first.is_a?(Array) && !args.first.is_a?(Section)
    args = args.first
  end
  sections = []
  args.each_with_index do |name, index|
    case name
    when Section; sections << name
    when Array;   next
    else
      subsections = args[index + 1].is_a?(Array) ? args[index + 1] : []
      subsections = [] if subsections.is_a?(Section)
      sections << Section.new(name, subsections)
    end
  end
  sections
end

#place(*args)

Since:

  • 0.6.0

[ GitHub ]

  
# File 'lib/yard/templates/section.rb', line 60

def place(*args)
  super(*parse_sections(args))
end

#push(*args) Also known as: #<<

Since:

  • 0.6.0

[ GitHub ]

  
# File 'lib/yard/templates/section.rb', line 45

def push(*args)
  super(*parse_sections(args))
end

#to_a

Since:

  • 0.6.0

[ GitHub ]

  
# File 'lib/yard/templates/section.rb', line 64

def to_a
  list = [name]
  unless empty?
    subsects = []
    each {|s| subsects += s.to_a }
    list << subsects
  end
  list
end

#unshift(*args)

Since:

  • 0.6.0

[ GitHub ]

  
# File 'lib/yard/templates/section.rb', line 50

def unshift(*args)
  super(*parse_sections(args))
end