Sha256: 68bd44902ae549a477561ef0cb36b90b3ab0e903da506f615b87629b320efac5

Contents?: true

Size: 652 Bytes

Versions: 2

Compression:

Stored size: 652 Bytes

Contents

require "declarative/version"
require "declarative/definitions"
require "declarative/defaults"
require "declarative/schema"

module Declarative
  module DSL
    def heritage
      @heritage ||= Heritage.new
    end
  end

  module Inheritance
    def included(includer)
      heritage.(includer)
    end
  end


  class Heritage < Array
    def record(method, name, options=nil, &block)
      self << {method: method, args: [name, options ? options.dup : nil].compact, block: block} # DISCUSS: options.dup.
    end

    def call(inheritor)
      each do |cfg|
        inheritor.send(cfg[:method], *cfg[:args], &cfg[:block])
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
declarative-0.0.3 lib/declarative.rb
declarative-0.0.2 lib/declarative.rb