module Portrayal

Constants

NULL
VERSION

Attributes

portrayal[R]

Public Class Methods

inherited(base) click to toggle source
# File lib/portrayal.rb, line 11
def inherited(base)
  base.instance_variable_set('@portrayal', portrayal.dup)
end

Public Instance Methods

keyword(name, default: NULL, define: nil, &block) click to toggle source
# File lib/portrayal.rb, line 7
def keyword(name, default: NULL, define: nil, &block)
  unless respond_to?(:portrayal)
    class << self
      attr_reader :portrayal
      def inherited(base)
        base.instance_variable_set('@portrayal', portrayal.dup)
      end
    end

    @portrayal = Schema.new
    class_eval(Schema::DEFINITION_OF_OBJECT_ENHANCEMENTS)
  end

  attr_accessor name
  protected "#{name}="

  portrayal.add_keyword(name, default)
  class_eval(portrayal.definition_of_initialize)

  if block_given?
    kw_class = Class.new(superclass) { extend Portrayal }
    const_set(define || portrayal.camelize(name), kw_class).class_eval(&block)
  end

  name
end