Sha256: a6233e32a2a9802427906139fae5149d1157983a6a72640d6d2c5064b2dcffda

Contents?: true

Size: 1.23 KB

Versions: 5

Compression:

Stored size: 1.23 KB

Contents

# frozen_string_literal: true

module Thinreports
  module BasicReport
    module Core
      module Shape
        module Base
          # @abstract
          class 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
    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/internal.rb
thinreports-0.14.1 lib/thinreports/basic_report/core/shape/base/internal.rb
thinreports-0.14.0 lib/thinreports/basic_report/core/shape/base/internal.rb
thinreports-0.13.1 lib/thinreports/basic_report/core/shape/base/internal.rb
thinreports-0.13.0 lib/thinreports/basic_report/core/shape/base/internal.rb