Module: BinData::ClassParametersPlugin

Included in:
PascalString, Peek, Pointer
Defined in:
lib/binproxy/bd_util.rb

Defined Under Namespace

Modules: ClassMethods

Class Method Summary collapse

Class Method Details

.included(obj_class) ⇒ Object



73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
# File 'lib/binproxy/bd_util.rb', line 73

def self.included(obj_class)
  # Wrap the obj_class's existing arg_processor
  old_arg_processor = obj_class.arg_processor
  new_arg_processor = ArgProcessorWrapper.new(old_arg_processor) do |obj_class,params|
    class_params = obj_class.class_eval {@class_params} || []
    class_params.each do |type|
      if params.needs_sanitizing?(type)
        t,p = params[type]
        params[type] = params.create_sanitized_object_prototype(t,p)
      end
    end
  end
  obj_class.class_eval do 
    @arg_processor = new_arg_processor
  end

  # add class_parameter(:foo) to our class methods / DSL
  obj_class.extend ClassMethods
end