Sha256: 0e2adb6cfd55a71c1d62284bbfab0e6bb14d1bc4eff8bd353e5471a461005cca

Contents?: true

Size: 1.08 KB

Versions: 2

Compression:

Stored size: 1.08 KB

Contents

# frozen_string_literal: true

module Thinreports
  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::Report::Page, Thinreports::Core::Shape::List::SectionInterface] parent
          # @param [Thinreports::Core::Shape::Basic::Format] format
          # @return [Thinreports::Core::Shape::Basic::Internal]
          # @abstract
          # rubocop:disable Lint/UnusedMethodArgument
          def init_internal(parent, format)
            raise NotImplementedError
          end
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
thinreports-0.10.1 lib/thinreports/core/shape/base/interface.rb
thinreports-0.10.0 lib/thinreports/core/shape/base/interface.rb