lib/yasl/dumper.rb in yasl-0.1.0 vs lib/yasl/dumper.rb in yasl-0.2.0

- old
+ new

@@ -73,23 +73,23 @@ dump_structure(klass, for_classes: true) unless klass.class_variables.empty? && klass.instance_variables.empty? end def dump_ruby_basic_data_type_data(object) case object - when Time + when class_ancestor_names_include?('Time') object.to_datetime.marshal_dump - when Date + when class_ancestor_names_include?('Date') object.marshal_dump - when Complex, Rational, Regexp, Symbol + when class_ancestor_names_include?('Complex', 'Rational', 'Regexp', 'Symbol', 'BigDecimal') object.to_s - when Set + when class_ancestor_names_include?('Set') object.to_a.uniq.map {|element| dump_structure(element) unless unserializable?(element)} - when Range + when class_ancestor_names_include?('Range') [object.begin, object.end, object.exclude_end?] - when Array + when class_ancestor_names_include?('Array') object.map {|element| dump_structure(element) unless unserializable?(element)} - when Hash + when class_ancestor_names_include?('Hash') object.reject do |key, value| [key, value].detect {|element| unserializable?(element)} end.map do |pair| pair.map {|element| dump_structure(element)} end @@ -186,8 +186,16 @@ class_objects[object_class] ||= [] class_objects[object_class] << object unless class_objects[object_class].include?(object) class_objects[object_class].index(object) + 1 end + def class_ancestor_names_include?(*class_names) + lambda do |object| + class_names.reduce(false) do |result, class_name| + result || object.class.ancestors.map(&:name).include?(class_name) + end + end + end + end end