[ruby-core:109403] [Ruby master Feature#18951] Object#with to set and restore attributes around a block
From:
"byroot (Jean Boussier)" <noreply@...>
Date:
2022-08-01 17:52:26 UTC
List:
ruby-core #109403
SXNzdWUgIzE4OTUxIGhhcyBiZWVuIHJlcG9ydGVkIGJ5IGJ5cm9vdCAoSmVhbiBCb3Vzc2llciku CgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkZlYXR1cmUgIzE4OTUx OiBPYmplY3Qjd2l0aCB0byBzZXQgYW5kIHJlc3RvcmUgYXR0cmlidXRlcyBhcm91bmQgYSBibG9j awpodHRwczovL2J1Z3MucnVieS1sYW5nLm9yZy9pc3N1ZXMvMTg5NTEKCiogQXV0aG9yOiBieXJv b3QgKEplYW4gQm91c3NpZXIpCiogU3RhdHVzOiBPcGVuCiogUHJpb3JpdHk6IE5vcm1hbAotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMjIyBVc2UgY2FzZQoKQSB2ZXJ5 IGNvbW1vbiBwYXR0ZXJuIGluIFJ1YnksIGVzcGVjaWFsbHkgaW4gdGVzdGluZyBpcyB0byBzYXZl IHRoZSB2YWx1ZSBvZiBhbiBhdHRyaWJ1dGUsIHNldCBhIG5ldyB2YWx1ZSwgYW5kIHRoZW4gcmVz dG9yZSB0aGUgb2xkIHZhbHVlIGluIGFuIGBlbnN1cmVgIGNsYXVzZS4KCmUuZy4gaW4gdW5pdCB0 ZXN0cwoKYGBgcnVieQpkZWYgdGVzdF9zb21ldGhpbmdfd2hlbl9lbmFibGVkCiAgZW5hYmxlZF93 YXMsIFNvbWVMaWJyYXJ5LmVuYWJsZWQgPSBTb21lTGlicmFyeS5lbmFibGVkLCB0cnVlCiAgIyB0 ZXN0IHRoaW5ncwplbnN1cmUKICBTb21lTGlicmFyeS5lbmFibGVkID0gZW5hYmxlZF93YXMKZW5k CmBgYAoKT3Igc29tZXRpbWUgaW4gYWN0dWFsIEFQSXM6CgpgYGBydWJ5CmRlZiB3aXRoX3NvbWV0 aGluZ19lbmFibGVkCiAgZW5hYmxlZF93YXMgPSBAZW5hYmxlZAogIEBlbmFibGVkID0gdHJ1ZQog IHlpZWxkCmVuc3VyZQogIEBlbmFibGVkID0gZW5hYmxlZF93YXMKZW5kCmBgYAoKVGhlcmUgaXMg bm8gaW5oZXJlbnQgcHJvYmxlbSB3aXRoIHRoaXMgcGF0dGVybiwgYnV0IGl0IGNhbiBiZSBlYXN5 IHRvIG1ha2UgYSBtaXN0YWtlLCBmb3IgaW5zdGFuY2UgdGhlIHVuaXQgdGVzdCBleGFtcGxlOgoK YGBgcnVieQpkZWYgdGVzdF9zb21ldGhpbmdfd2hlbl9lbmFibGVkCiAgc29tZV9jYWxsX3RoYXRf bWF5X3JhaXNlCiAgZW5hYmxlZF93YXMsIFNvbWVMaWJyYXJ5LmVuYWJsZWQgPSBTb21lTGlicmFy eS5lbmFibGVkLCB0cnVlCiAgIyB0ZXN0IHRoaW5ncwplbnN1cmUKICBTb21lTGlicmFyeS5lbmFi bGVkID0gZW5hYmxlZF93YXMKZW5kCmBgYAoKSW4gdGhlIGFib3ZlIGlmIGBzb21lX2NhbGxfdGhh dF9tYXlfcmFpc2VgIGFjdHVhbGx5IHJhaXNlcywgYFNvbWVMaWJyYXJ5LmVuYWJsZWRgIGlzIHNl dCBiYWNrIHRvIGBuaWxgIHJhdGhlciB0aGFuIGl0cyBvcmlnaW5hbCB2YWx1ZS4gSSd2ZSBzZWVu IHRoaXMgbWlzdGFrZSBxdWl0ZSBmcmVxdWVudGx5LgoKIyMjIFByb3Bvc2FsCgpJIHRoaW5rIGl0 IHdvdWxkIGJlIHZlcnkgdXNlZnVsIHRvIGhhdmUgYSBtZXRob2Qgb24gT2JqZWN0IHRvIGltcGxl bWVudCB0aGlzIHBhdHRlcm4gaW4gYSBjb3JyZWN0IGFuZCBlYXN5IHRvIHVzZSB3YXkuIFRoZSBu YWl2ZSBSdWJ5IGltcGxlbWVudGF0aW9uIHdvdWxkIGJlOgoKYGBgcnVieQpjbGFzcyBPYmplY3QK ICBkZWYgd2l0aCgqKmF0dHJpYnV0ZXMpCiAgICBvbGRfdmFsdWVzID0gYXR0cmlidXRlcy5kdXAK ICAgIGF0dHJpYnV0ZXMuZWFjaF9rZXkgZG8gfGtleXwKICAgICAgb2xkX3ZhbHVlc1trZXldID0g cHVibGljX3NlbmQoa2V5KQogICAgZW5kCiAgICBiZWdpbgogICAgICBhdHRyaWJ1dGVzLmVhY2gg ZG8gfGtleSwgdmFsdWV8CiAgICAgICAgcHVibGljX3NlbmQoIiN7a2V5fT0iLCB2YWx1ZSkKICAg ICAgZW5kCiAgICAgIHlpZWxkCiAgICBlbnN1cmUKICAgICAgb2xkX3ZhbHVlcy5lYWNoIGRvIHxr ZXksIG9sZF92YWx1ZXwKICAgICAgICBwdWJsaWNfc2VuZCgiI3trZXl9PSIsIG9sZF92YWx1ZSkK ICAgICAgZW5kCiAgICBlbmQKICBlbmQKZW5kCmBgYAoKTkI6IGBwdWJsaWNfc2VuZGAgaXMgdXNl ZCBiZWNhdXNlIEkgZG9uJ3QgdGhpbmsgc3VjaCBtZXRob2Qgc2hvdWxkIGJlIHVzYWJsZSBpZiB0 aGUgYWNjZXNzb3JzIGFyZSBwcml2YXRlLgoKV2l0aCB1c2FnZToKCmBgYHJ1YnkKZGVmIHRlc3Rf c29tZXRoaW5nX3doZW5fZW5hYmxlZAogIFNvbWVMaWJyYXJ5LndpdGgoZW5hYmxlZDogdHJ1ZSkg ZG8KICAgICMgdGVzdCB0aGluZ3MKICBlbmQKZW5kCmBgYAoKYGBgcnVieQpHQy53aXRoKG1lYXN1 cmVfdG90YWxfdGltZTogdHJ1ZSwgYXV0b19jb21wYWN0OiBmYWxzZSkgZG8KICAjIGRvIHNvbWV0 aGluZwplbmQKYGBgCgojIyMgQWx0ZXJuYXRlIG5hbWVzIGFuZCBzaWduYXR1cmVzCgpJZiBgI3dp dGhgIGlzbid0IGdvb2QsIEkgY2FuIGFsc28gdGhpbmsgb2Y6CgogIC0gYE9iamVjdCNzZXRgCiAg LSBgT2JqZWN0I2FwcGx5YAoKQnV0IHRoZSBgd2l0aF9gIHByZWZpeCBpcyBieSBmYXIgdGhlIG1v c3QgdXNlZCBvbmUgd2hlbiBpbXBsZW1lbnRpbmcgbWV0aG9kcyB0aGF0IGZvbGxvdyB0aGlzIHBh dHRlcm4uCgpBbHNvIGlmIGFjY2VwdGluZyBhIEhhc2ggaXMgZGltbWVkIHRvbyBtdWNoLCBhbHRl cm5hdGl2ZSBzaWduYXR1cmVzIGNvdWxkIGJlOgoKICAtIGBPYmplY3Qjc2V0KGF0dHJfbmFtZSwg dmFsdWUpYAogIC0gYE9iamVjdCNzZXQoYXR0cjEsIHZhbHVlMSwgW2F0dHIyLCB2YWx1ZTJdLCAu Li4pYAoKCgoKCi0tIApodHRwczovL2J1Z3MucnVieS1sYW5nLm9yZy8KClVuc3Vic2NyaWJlOiA8 bWFpbHRvOnJ1YnktY29yZS1yZXF1ZXN0QHJ1YnktbGFuZy5vcmc/c3ViamVjdD11bnN1YnNjcmli ZT4KPGh0dHA6Ly9saXN0cy5ydWJ5LWxhbmcub3JnL2NnaS1iaW4vbWFpbG1hbi9vcHRpb25zL3J1 YnktY29yZT4K