def Offset.append_features mod
super
attr_reader :changes, :offsets
mod.module_eval do
class << self
def offset *keys
keys.each do |key|
attr_reader key unless instance_methods.include? key.to_s
define_method "#{key}=" do |value|
@changes.store key, true
instance_variable_set "@#{key}", value
end
define_method "set_#{key}" do |value, pos, len|
instance_variable_set "@#{key}", value
@offsets.store key, [pos, len]
havename = "have_set_#{key}"
send(havename, value, pos, len) if respond_to? havename
end
end
end
end
end
end