Sha256: 038f4b08fa979880fd513896e92bb871ce2a15b905ecde124ec3eae4ddb16ed5

Contents?: true

Size: 1.17 KB

Versions: 11

Compression:

Stored size: 1.17 KB

Contents

module Startback
  class Context
    module HFactory

      def inherited(subclass)
        subclass.h_factories = h_factories.dup if h_factories?
        subclass.h_dumpers = h_dumpers.dup if h_dumpers?
      end

      def h(hash)
        h_factor!(self.new, hash)
      end

      def h_factor!(context, hash)
        h_factories.each do |f|
          f.call(context, hash)
        end
        context
      end

      def h_factories?
        !!@h_factories && @h_factories.any?
      end

      def h_factories=(factories)
        @h_factories = factories
      end

      def h_factories
        @h_factories ||= []
      end

      def h_factory(&factory)
        h_factories << factory
      end

      ###

      def h_dump!(context, hash = {})
        h_dumpers.each do |d|
          context.instance_exec(hash, &d)
        end
        hash
      end

      def h_dumpers?
        !!@h_dumpers && @h_dumpers.any?
      end

      def h_dumpers
        @h_dumpers ||= []
      end

      def h_dumpers=(dumpers)
        @h_dumpers = dumpers
      end

      def h_dump(&dumper)
        h_dumpers << dumper
      end

    end # module HFactory
  end # class Context
end # module Startback

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
startback-1.0.3 lib/startback/context/h_factory.rb
startback-1.0.2 lib/startback/context/h_factory.rb
startback-1.0.1 lib/startback/context/h_factory.rb
startback-1.0.0 lib/startback/context/h_factory.rb
startback-0.19.4 lib/startback/context/h_factory.rb
startback-0.19.3 lib/startback/context/h_factory.rb
startback-0.19.1 lib/startback/context/h_factory.rb
startback-0.19.0 lib/startback/context/h_factory.rb
startback-0.18.2 lib/startback/context/h_factory.rb
startback-0.18.1 lib/startback/context/h_factory.rb
startback-0.18.0 lib/startback/context/h_factory.rb