Sha256: 91212b63759a5ff2a7c114c24541878e5fc5d438a4aacd5e44424162326a73af

Contents?: true

Size: 1.17 KB

Versions: 5

Compression:

Stored size: 1.17 KB

Contents

# frozen_string_literal: true

module Thinreports
  module BasicReport
    module Core
      module Shape
        module Base
          # @abstract
          class Interface
            include Utils
            extend  Forwardable

            def self.internal_delegators(*args)
              def_delegators :internal, *args
            end
            private_class_method :internal_delegators

            attr_reader :internal

            def initialize(parent, format, internal = nil)
              @internal = internal || init_internal(parent, format)
            end

            def copy(parent)
              self.class.new(parent, internal.format, internal.copy(parent))
            end

            private

            # @param [Thinreports::BasicReport::Report::Page, Thinreports::BasicReport::Core::Shape::List::SectionInterface] parent
            # @param [Thinreports::BasicReport::Core::Shape::Basic::Format] format
            # @return [Thinreports::BasicReport::Core::Shape::Basic::Internal]
            # @abstract
            def init_internal(parent, format)
              raise NotImplementedError
            end
          end
        end
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
thinreports-0.14.2 lib/thinreports/basic_report/core/shape/base/interface.rb
thinreports-0.14.1 lib/thinreports/basic_report/core/shape/base/interface.rb
thinreports-0.14.0 lib/thinreports/basic_report/core/shape/base/interface.rb
thinreports-0.13.1 lib/thinreports/basic_report/core/shape/base/interface.rb
thinreports-0.13.0 lib/thinreports/basic_report/core/shape/base/interface.rb