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 9 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 68 def categories @categories.empty? ? [] : @categories.values.sort end
empty?()
click to toggle source
# File lib/asciidoctor/pdf/index_catalog.rb, line 64 def empty? @categories.empty? end
find_category(name)
click to toggle source
# File lib/asciidoctor/pdf/index_catalog.rb, line 50 def find_category name @categories[name] end
init_category(name)
click to toggle source
# File lib/asciidoctor/pdf/index_catalog.rb, line 45 def init_category name name = '@' unless LeadingAlphaRx.match? name @categories[name] ||= IndexTermCategory.new name end
link_dest_to_page(anchor, physical_page_number)
click to toggle source
# File lib/asciidoctor/pdf/index_catalog.rb, line 58 def link_dest_to_page anchor, physical_page_number if (dest = @dests[anchor]) dest[:page] = physical_page_number - (@start_page_number - 1) end end
next_anchor_name()
click to toggle source
# File lib/asciidoctor/pdf/index_catalog.rb, line 16 def next_anchor_name %(__indexterm-#{@sequence += 1}) end
store_dest(dest)
click to toggle source
# File lib/asciidoctor/pdf/index_catalog.rb, line 54 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 30 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 35 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 20 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 40 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