Sha256: 77af5a5e7849c4cc8508ec2370aaf5c5f2ab68accd172f4015860320c1af90c4

Contents?: true

Size: 759 Bytes

Versions: 1

Compression:

Stored size: 759 Bytes

Contents

require 'syro'
require 'dry/container'

require "syro/container/version"

class Syro
  module Container
    def self.included(deck)
      deck.extend ClassMethods
    end

    def initialize(before)
      code = Proc.new do
        instance_eval(&before) if before
        resolve!
      end

      super(code)
    end

    def resolve!
      return if @resolved
      @resolved = true

      segment = self.path.curr.split('/')[1]
      app = self.class.container.resolve(segment)
      self.path.consume(segment)
      run(app)
    rescue Dry::Container::Error
    end

    module ClassMethods

      def container
        @container ||= Dry::Container.new
      end

      def register(*args)
        container.register(*args)
      end

    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
syro-container-0.1.0 lib/syro/container.rb