Module: XES::AttributeAccessor

Included in:
Attribute, EventAttributeAccessor, Log, TraceAttributeAccessor
Defined in:
lib/xes/attribute-accessor.rb

Overview

AttributeAccessor provides attribute accessors of standard extensions.

Instance Method Summary collapse

Instance Method Details

#define_attribute(name, type) ⇒ void

This method returns an undefined value.

Define an attribute accessor.

Parameters:

  • name (String)

    attribute name

  • type (String)

    attribute type



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/xes/attribute-accessor.rb', line 11

def define_attribute(name, type)
  _name = name.gsub(":", "_")

  define_method(_name) do
    var = instance_variables.include?(:@meta) ? :@meta : :@attributes
    instance_variable_get(var).find do |attribute|
      attribute.key == name
    end.tap{|x| return x.value if x}
  end

  define_method("%s=" % _name) do |value|
    var = instance_variables.include?(:@meta) ? :@meta : :@attributes
    instance_variable_get(var).tap do |attributes|
      if elt = __send__(_name)
        attributes.delete(elt)
      end
      attributes << XES.send(type, name, value)
    end
  end
end