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)