69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
# File 'lib/schemata/common/msgtypebase.rb', line 69
def version(v, &blk)
klass = Class.new
klass.instance_eval do
def eigenclass
class << self; self; end
end
end
klass.send(:include, Schemata::MessageBase)
klass.instance_eval(&blk)
if !defined? klass::INCLUDE_PRESCHEMATA
klass.const_set(:INCLUDE_PRESCHEMATA, false)
end
klass.instance_eval do
vc_klass = self::ValidatingContainer.define(self.schema)
self.const_set(:VC_KLASS, vc_klass)
if self.aux_schema
aux_vc_klass = self::ValidatingContainer.define(self.aux_schema)
self.const_set(:AUX_VC_KLASS, aux_vc_klass)
end
end
klass.schema.schemas.each do |key, field_schema|
klass.send(:define_method, key) do
@contents.send(key)
end
klass.send(:define_method, "#{key}=") do |field_value|
@contents.send("#{key}=", field_value)
end
end
self::const_set("V#{v}", klass)
end
|