99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
|
# File 'lib/arpie/binary.rb', line 99
def method_missing m, *a
m.to_s =~ /^(.+?)(=?)$/ or super
at = $1.to_sym
if self.class.field?(at)
if $2 == "="
a.size == 1 or raise ArgumentError
if !a[0].is_a?(Class) && inline = self.class.get_field(at)[3]
a[0], __nil = inline.from(a[0], {})
end
@fields[at] = a[0]
else
@fields[at]
end
elsif self.class.virtual?(at)
if $2 == "="
raise ArgumentError
else
Binary.call_virtual(self, at)
end
else
super
end
end
|