Sha256: c8789d6da181456fb3f83f1991b3e0c914d2d7fb422d898d8b0a1cd673841813

Contents?: true

Size: 898 Bytes

Versions: 1

Compression:

Stored size: 898 Bytes

Contents

require 'singleton'
module Sym
  module Configurable
    def self.included(base)
      base.instance_eval do
        include Singleton
        class << self
          include Sym::Configurable::ClassMethods
        end
      end
    end

    module ClassMethods
      def config
        instance
      end

      def configure
        yield config if block_given?
        config
      end

      def defaults!
        [ self, *self.ancestors ].each do |klazz|
          next unless klazz.is_a?(Class)
          if klazz.const_defined?(:DEFAULTS)
            default_proc = self.const_get(:DEFAULTS)
            if default_proc.respond_to?(:call)
              configure(&default_proc)
            end
          end
        end
      end

      def property(prop_name)
        config.send(prop_name)
      end

      alias_method :prop, :property
      alias_method :[], :property
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
sym-crypt-1.1.1 lib/sym/configurable.rb