class Kitchen::Directions::BakeIndex::V1
Bake directions for eob index
Public Instance Methods
add_term_to_index(term_element, page_title)
click to toggle source
# File lib/kitchen/directions/bake_index/v1.rb, line 153 def add_term_to_index(term_element, page_title) type = if !term_element.key?('index') 'term' elsif term_element['cxlxt:index'] == 'name' 'name' elsif term_element['cxlxt:index'] == 'foreign' 'foreign' end if term_element.key?('reference') term_reference = term_element['cmlnle:reference'] group_by = term_reference[0] content = term_reference else group_by = I18n.transliterate(term_element.text.strip[0]) content = term_element.text end group_by = I18n.t(:eob_index_symbols_group) unless group_by.match?(/[[:alpha:]]/) term_element['group-by'] = group_by # Add it to our index object @indexes[type].add_term( Term.new( text: content, id: term_element.id, group_by: group_by, page_title: page_title.gsub(/\n/, '') ) ) end
bake(book:, types: %w[main], uuid_prefix: '')
click to toggle source
# File lib/kitchen/directions/bake_index/v1.rb, line 115 def bake(book:, types: %w[main], uuid_prefix: '') @metadata_elements = book.metadata.children_to_keep.copy @uuid_prefix = uuid_prefix @indexes = types.each.with_object({}) do |type, hash| index_name = type == 'main' ? 'term' : type hash[index_name] = Index.new end # Numbering of IDs doesn't depend on term type book.pages.terms.each do |term_element| page = term_element.ancestor(:page) term_element.id = "auto_#{page.id}_term#{term_element.count_in(:book)}" page_title = page.title.text add_term_to_index(term_element, page_title) end book.chapters.composite_pages.terms.each do |term_element| page = term_element.ancestor(:composite_page) chapter = term_element.ancestor(:chapter) term_element.id = "auto_composite_page_term#{term_element.count_in(:book)}" chapter_number = chapter.count_in(:book) page_title = "#{chapter_number} #{page.title.text.strip}".strip add_term_to_index(term_element, page_title) end types.each do |type| @container_class = "os-index#{"-#{type}" unless type == 'main'}-container" @uuid_key = "#{uuid_prefix}index#{"-#{type}" unless type == 'main'}" @title = I18n.t("index.#{type}") index_name = type == 'main' ? 'term' : type @index = @indexes[index_name] book.first('body').append(child: render(file: 'v1.xhtml.erb')) end end