Sha256: 47627157a4c82f4479114365d993fa23197676f1cc7032aac4f94e7e29502bcd

Contents?: true

Size: 1.2 KB

Versions: 5

Compression:

Stored size: 1.2 KB

Contents

# frozen_string_literal: true

require "delegate"

require "pakyow/support/hookable"

module Pakyow
  class App
    class Connection < SimpleDelegator
      attr_reader :app

      include Support::Hookable
      events :initialize, :dup

      require "pakyow/app/connection/behavior/session"
      require "pakyow/app/connection/behavior/verifier"
      require "pakyow/app/connection/behavior/values"

      include Behavior::Session
      include Behavior::Verifier
      include Behavior::Values

      def initialize(app, connection)
        performing :initialize do
          @app = app; __setobj__(connection)
        end
      end

      def initialize_dup(_)
        performing :dup do
          super
        end
      end

      def method
        __getobj__.method
      end

      # Fixes an issue using pp inside a delegator.
      #
      def pp(*args)
        Kernel.pp(*args)
      end

      # @api private
      def self.from_connection(connection, **overrides)
        instance = allocate

        connection.instance_variables.each do |ivar|
          instance.instance_variable_set(ivar, overrides[ivar] || connection.instance_variable_get(ivar))
        end

        instance
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
pakyow-core-1.0.0.rc5 lib/pakyow/app/connection.rb
pakyow-core-1.0.0.rc4 lib/pakyow/app/connection.rb
pakyow-core-1.0.0.rc3 lib/pakyow/app/connection.rb
pakyow-core-1.0.0.rc2 lib/pakyow/app/connection.rb
pakyow-core-1.0.0.rc1 lib/pakyow/app/connection.rb