Sha256: 5a281fd6e70190a697e315d58132b8e9223b95b9ed60e292184023b40a276176

Contents?: true

Size: 1.29 KB

Versions: 5

Compression:

Stored size: 1.29 KB

Contents

# frozen_string_literal: true

module Thinreports
  module Core
    module Shape
      module PageNumber
        class Internal < Basic::Internal
          format_delegators :box, :for_report?

          def read_format
            states.key?(:format) ? states[:format] : format.default_format.dup
          end

          def reset_format
            states.delete(:format)
          end

          def write_format(format)
            states[:format] = format.to_s
          end

          def build_format(page_no, page_count)
            return '' if blank_value?(read_format)

            if start_page_number > 1
              page_no += start_page_number - 1
              page_count += start_page_number - 1
            end

            read_format.dup.tap do |f|
              f.gsub! '{page}', page_no.to_s
              f.gsub! '{total}', page_count.to_s
            end
          end

          def style
            @style ||= PageNumber::Style.new(format)
          end

          def type_of?(type_name)
            type_name == PageNumber::TYPE_NAME
          end

          def start_page_number
            for_report? ? parent.report.start_page_number : 1
          end
        end

        class Style < Style::Text
          accessible_styles.delete :valign
        end
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
thinreports-0.12.1 lib/thinreports/core/shape/page_number/internal.rb
thinreports-0.12.0 lib/thinreports/core/shape/page_number/internal.rb
thinreports-0.11.0 lib/thinreports/core/shape/page_number/internal.rb
thinreports-0.10.3 lib/thinreports/core/shape/page_number/internal.rb
thinreports-0.10.2 lib/thinreports/core/shape/page_number/internal.rb