module Caracal::Core::PageNumbers

This module encapsulates all the functionality related to setting the document's page number behavior.

Public Class Methods

included(base) click to toggle source
# File lib/caracal/core/page_numbers.rb, line 12
def self.included(base)
  base.class_eval do

    #-------------------------------------------------------------
    # Configuration
    #-------------------------------------------------------------

    # constants
    const_set(:DEFAULT_PAGE_NUMBER_ALIGN,  :center)

    # accessors
    attr_reader :page_number_align
    attr_reader :page_number_label
    attr_reader :page_number_label_size
    attr_reader :page_number_number_size
    attr_reader :page_number_show


    #-------------------------------------------------------------
    # Public Methods
    #-------------------------------------------------------------

    # This method controls whether and how page numbers are displayed
    # on the document.
    #
    def page_numbers(*args, &block)
      options = Caracal::Utilities.extract_options!(args)
      options.merge!({ show: !!args.first }) unless args.first.nil?  # careful: just `args.first` is falsey

      model = Caracal::Core::Models::PageNumberModel.new(options, &block)
      if model.valid?
        @page_number_align        = model.page_number_align
        @page_number_label        = model.page_number_label
        @page_number_label_size   = model.page_number_label_size
        @page_number_number_size  = model.page_number_number_size
        @page_number_show         = model.page_number_show
      else
        raise Caracal::Errors::InvalidModelError, 'page_numbers :align parameter must be :left, :center, or :right'
      end
    end

  end
end

Public Instance Methods

page_numbers(*args, &block) click to toggle source

This method controls whether and how page numbers are displayed on the document.

# File lib/caracal/core/page_numbers.rb, line 37
def page_numbers(*args, &block)
  options = Caracal::Utilities.extract_options!(args)
  options.merge!({ show: !!args.first }) unless args.first.nil?  # careful: just `args.first` is falsey

  model = Caracal::Core::Models::PageNumberModel.new(options, &block)
  if model.valid?
    @page_number_align        = model.page_number_align
    @page_number_label        = model.page_number_label
    @page_number_label_size   = model.page_number_label_size
    @page_number_number_size  = model.page_number_number_size
    @page_number_show         = model.page_number_show
  else
    raise Caracal::Errors::InvalidModelError, 'page_numbers :align parameter must be :left, :center, or :right'
  end
end