lib/bindata/sanitize.rb in bindata-1.4.5 vs lib/bindata/sanitize.rb in bindata-1.5.0
- old
+ new
@@ -8,11 +8,21 @@
class SanitizedPrototype < SanitizedParameter
def initialize(obj_type, obj_params, endian)
endian = endian.endian if endian.respond_to? :endian
obj_params ||= {}
- @obj_class = RegisteredClasses.lookup(obj_type, endian)
- @obj_params = SanitizedParameters.new(obj_params, @obj_class, endian)
+ if BinData::Base === obj_type
+ obj_class = obj_type
+ else
+ obj_class = RegisteredClasses.lookup(obj_type, endian)
+ end
+
+ if BinData::Base === obj_class
+ @factory = obj_class
+ else
+ @obj_class = obj_class
+ @obj_params = SanitizedParameters.new(obj_params, @obj_class, endian)
+ end
end
def instantiate(value = nil, parent = nil)
@factory ||= @obj_class.new(@obj_params)