Sha256: 75a28d1db24d0335aae55731ebf7b54a68ff3e7f14b34f45d5056b2d395ccec2

Contents?: true

Size: 972 Bytes

Versions: 3

Compression:

Stored size: 972 Bytes

Contents

# coding: utf-8

module Thinreports
  module Core::Shape

    # @abstract
    class Base::Internal
      include Utils
      extend  Forwardable

      def self.format_delegators(*args)
        def_delegators :format, *args
      end
      private_class_method :format_delegators

      attr_reader :parent
      attr_reader :format
      attr_writer :style
      attr_accessor :states

      def initialize(parent, format)
        @parent = parent
        @format = format
        @states = {}
        @style  = nil

        @finalized_attributes = nil
      end

      def style
        raise NotImplementedError
      end

      def copy(new_parent, &block)
        new_internal = self.class.new(new_parent, format)
        new_internal.style  = style.copy
        new_internal.states = deep_copy(states)

        block.call(new_internal) if block_given?
        new_internal
      end

      def type_of?
        raise NotImplementedError
      end
    end

  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
thinreports-0.9.1 lib/thinreports/core/shape/base/internal.rb
thinreports-0.9.0 lib/thinreports/core/shape/base/internal.rb
thinreports-0.8.2 lib/thinreports/core/shape/base/internal.rb