Sha256: dfdbd854a08585389e5a5db5372491d8fd383ff1b2ee0fafd43812896170bb5e

Contents?: true

Size: 985 Bytes

Versions: 8

Compression:

Stored size: 985 Bytes

Contents

module ExpressTemplates
  module Components
    class Container < Base
      include Capabilities::Configurable
      include Capabilities::Hideable

      abstract_component

      class_attribute :prepended_blocks
      self.prepended_blocks = []

      class_attribute :appended_blocks
      self.appended_blocks = []

      contains -> (&block) {
        prepended
        block.call(self) if block
        appended
      }

      def prepended
        prepended_blocks.each do |block_to_prepend|
          call_block(block_to_prepend)
        end
      end

      def appended
        appended_blocks.each do |block_to_append|
          call_block(block_to_append)
        end
      end

      def call_block(block)
        instance_exec &block
      end

      def self.prepends(proc = nil, &block)
        self.prepended_blocks += [proc || block]
      end

      def self.appends(proc = nil, &block)
        self.appended_blocks += [proc || block]
      end

    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
express_templates-0.11.19 lib/express_templates/components/container.rb
express_templates-0.11.18 lib/express_templates/components/container.rb
express_templates-0.11.17 lib/express_templates/components/container.rb
express_templates-0.11.16 lib/express_templates/components/container.rb
express_templates-0.11.16.rc1 lib/express_templates/components/container.rb
express_templates-0.11.15 lib/express_templates/components/container.rb
express_templates-0.11.14 lib/express_templates/components/container.rb
express_templates-0.11.13 lib/express_templates/components/container.rb