Sha256: de73480fea65203d37fb7a31ac057294a10173b21ed2e41e56b4c8cc1b989ed9

Contents?: true

Size: 1.03 KB

Versions: 5

Compression:

Stored size: 1.03 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
          def init_internal(parent, format)
            raise NotImplementedError
          end
        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/base/interface.rb
thinreports-0.12.0 lib/thinreports/core/shape/base/interface.rb
thinreports-0.11.0 lib/thinreports/core/shape/base/interface.rb
thinreports-0.10.3 lib/thinreports/core/shape/base/interface.rb
thinreports-0.10.2 lib/thinreports/core/shape/base/interface.rb