Module: Portrayal

Defined in:
lib/portrayal.rb,
lib/portrayal/schema.rb,
lib/portrayal/default.rb,
lib/portrayal/version.rb

Defined Under Namespace

Classes: Default, Schema

Constant Summary collapse

NULL =
:_portrayal_value_not_set
VERSION =
'0.8.0'

Instance Method Summary collapse

Instance Method Details

#keyword(name, default: NULL, define: nil, &block) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# 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