class Kitchen::Directions::BakeIndex::V1::IndexSection

Attributes

force_first[R]
items[R]
name[R]

Public Class Methods

new(name:) click to toggle source
# File lib/kitchen/directions/bake_index/v1.rb, line 53
def initialize(name:)
  @force_first = name == I18n.t(:eob_index_symbols_group)
  @name = name
  @items = SortedSet.new
  @items_by_term_text = {}
end

Public Instance Methods

<=>(other) click to toggle source
# File lib/kitchen/directions/bake_index/v1.rb, line 64
def <=>(other)
  return -1 if force_first
  return 1 if other.force_first

  I18n.sort_strings(name, other.name)
end
add_term(term) click to toggle source
# File lib/kitchen/directions/bake_index/v1.rb, line 60
def add_term(term)
  item_for(term).add_term(term)
end

Protected Instance Methods

item_for(term) click to toggle source
# File lib/kitchen/directions/bake_index/v1.rb, line 75
def item_for(term)
  @items_by_term_text[term.text] ||= begin
    different_caps_item = @items_by_term_text[term.text.uncapitalize]
    different_caps_item&.uncapitalize_term_text!

    unless different_caps_item
      different_caps_item = @items_by_term_text[term.text.capitalize]
      different_caps_item&.capitalize_term_text!
    end

    (different_caps_item || IndexItem.new(term_text: term.text)).tap do |item|
      @items.add(item)
    end
  end
end