Skip to content
  • nick evans's avatar
    136dc526
    Add support for Data objects with ivars · 136dc526
    nick evans authored
    This sets the ivars _before_ calling initialize, which feels wrong.  But
    Data doesn't give us any mechanism for setting the members other than 1)
    initialize, or 2) drop down into the C API.  Since initialize freezes
    the object, we need to set the ivars before that.  I think this is a
    reasonable compromise—if users need better handling, they can implement
    their own `encode_with` and `init_with`.  But it will lead to unhappy
    surprises for some users.
    
    Alternatively, we could use the C API, similarly to Marshal.  Psych _is_
    already using the C API for path2class and build_exception.  This would
    be the least surprising behavior for users, I think.
    136dc526
    Add support for Data objects with ivars
    nick evans authored
    This sets the ivars _before_ calling initialize, which feels wrong.  But
    Data doesn't give us any mechanism for setting the members other than 1)
    initialize, or 2) drop down into the C API.  Since initialize freezes
    the object, we need to set the ivars before that.  I think this is a
    reasonable compromise—if users need better handling, they can implement
    their own `encode_with` and `init_with`.  But it will lead to unhappy
    surprises for some users.
    
    Alternatively, we could use the C API, similarly to Marshal.  Psych _is_
    already using the C API for path2class and build_exception.  This would
    be the least surprising behavior for users, I think.
Loading