class Asciidoctor::PDF::IndexCatalog

Constants

LeadingAlphaRx

Attributes

start_page_number[RW]

Public Class Methods

new() click to toggle source
# File lib/asciidoctor/pdf/index_catalog.rb, line 12
def initialize
  @categories = {}
  @start_page_number = 1
  @dests = {}
  @sequence = 0
end

Public Instance Methods

categories() click to toggle source
# File lib/asciidoctor/pdf/index_catalog.rb, line 72
def categories
  @categories.empty? ? [] : @categories.values.sort
end
empty?() click to toggle source
# File lib/asciidoctor/pdf/index_catalog.rb, line 68
def empty?
  @categories.empty?
end
find_category(name) click to toggle source
# File lib/asciidoctor/pdf/index_catalog.rb, line 53
def find_category name
  @categories[name]
end
init_category(name) click to toggle source
# File lib/asciidoctor/pdf/index_catalog.rb, line 48
def init_category name
  name = '@' unless LeadingAlphaRx.match? name
  @categories[name] ||= IndexTermCategory.new name
end
next_anchor_name() click to toggle source
# File lib/asciidoctor/pdf/index_catalog.rb, line 19
def next_anchor_name
  %(__indexterm-#{@sequence += 1})
end
store_dest(dest) click to toggle source
# File lib/asciidoctor/pdf/index_catalog.rb, line 57
def store_dest dest
  @dests[dest[:anchor]] = dest
end
store_primary_term(name, dest = nil) click to toggle source
# File lib/asciidoctor/pdf/index_catalog.rb, line 33
def store_primary_term name, dest = nil
  store_dest dest if dest
  (init_category uppercase_mb name.chr).store_term name, dest
end
store_secondary_term(primary_name, secondary_name, dest = nil) click to toggle source
# File lib/asciidoctor/pdf/index_catalog.rb, line 38
def store_secondary_term primary_name, secondary_name, dest = nil
  store_dest dest if dest
  (store_primary_term primary_name).store_term secondary_name, dest
end
store_term(names, dest = nil) click to toggle source
# File lib/asciidoctor/pdf/index_catalog.rb, line 23
def store_term names, dest = nil
  if (num_terms = names.size) > 2
    store_tertiary_term names[0], names[1], names[2], dest
  elsif num_terms == 2
    store_secondary_term names[0], names[1], dest
  elsif num_terms == 1
    store_primary_term names[0], dest
  end
end
store_tertiary_term(primary_name, secondary_name, tertiary_name, dest = nil) click to toggle source
# File lib/asciidoctor/pdf/index_catalog.rb, line 43
def store_tertiary_term primary_name, secondary_name, tertiary_name, dest = nil
  store_dest dest if dest
  (store_secondary_term primary_name, secondary_name).store_term tertiary_name, dest
end