lib/yard/templates/section.rb in yard-0.9.16 vs lib/yard/templates/section.rb in yard-0.9.17

- old
+ new

@@ -1,105 +1,105 @@ -# frozen_string_literal: true -module YARD - module Templates - # Abstracts the structure for a section and its subsections into an ordered - # list of sections and subsections. - # @since 0.6.0 - class Section < Array - attr_accessor :name - - def initialize(name, *args) - self.name = name - replace(parse_sections(args)) - end - - def dup - obj = super - obj.name = name - obj - end - - def [](*args) - if args.first.is_a?(Range) || args.size > 1 - obj = super(*args) - obj.name = name - return obj - elsif args.first.is_a?(Integer) - return super(*args) - end - find {|o| o.name == args.first } - end - - def eql?(other) - super(other) && name == other.name - end - - def ==(other) - case other - when Section - eql?(other) - when Array - to_a == other - else - name == other - end - end - - def push(*args) - super(*parse_sections(args)) - end - alias << push - - def unshift(*args) - super(*parse_sections(args)) - end - - def inspect - n = name.respond_to?(:path) ? "T('#{name.path}')" : name.inspect - subsects = empty? ? "" : ", subsections=#{super}" - "Section(#{n}#{subsects})" - end - - def place(*args) - super(*parse_sections(args)) - end - - def to_a - list = [name] - unless empty? - subsects = [] - each {|s| subsects += s.to_a } - list << subsects - end - list - end - - def any(item) - find do |section| - return section if section == item - return section.any(item) unless section.empty? - end - nil - end - - private - - 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 - end - end -end +# frozen_string_literal: true +module YARD + module Templates + # Abstracts the structure for a section and its subsections into an ordered + # list of sections and subsections. + # @since 0.6.0 + class Section < Array + attr_accessor :name + + def initialize(name, *args) + self.name = name + replace(parse_sections(args)) + end + + def dup + obj = super + obj.name = name + obj + end + + def [](*args) + if args.first.is_a?(Range) || args.size > 1 + obj = super(*args) + obj.name = name + return obj + elsif args.first.is_a?(Integer) + return super(*args) + end + find {|o| o.name == args.first } + end + + def eql?(other) + super(other) && name == other.name + end + + def ==(other) + case other + when Section + eql?(other) + when Array + to_a == other + else + name == other + end + end + + def push(*args) + super(*parse_sections(args)) + end + alias << push + + def unshift(*args) + super(*parse_sections(args)) + end + + def inspect + n = name.respond_to?(:path) ? "T('#{name.path}')" : name.inspect + subsects = empty? ? "" : ", subsections=#{super}" + "Section(#{n}#{subsects})" + end + + def place(*args) + super(*parse_sections(args)) + end + + def to_a + list = [name] + unless empty? + subsects = [] + each {|s| subsects += s.to_a } + list << subsects + end + list + end + + def any(item) + find do |section| + return section if section == item + return section.any(item) unless section.empty? + end + nil + end + + private + + 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 + end + end +end