From: kadu Date: 2000-08-05T22:30:16+09:00 Subject: [ruby-list:24109] gtk+ なクラスブラウザ This is a multi-part message in MIME format. --Multipart_Sat__5_Aug_2000_22:28:43_+0900_081bf658 Content-Type: text/plain; charset=ISO-2022-JP みなさんはじめまして、kaduというものです。 Ruby/Gtkでクラスブラウザを作ってみました。 ObjectSpaceを一気にスキャンしないので起動が速いのが特徴です。 意見や感想お待ちしています。 --Multipart_Sat__5_Aug_2000_22:28:43_+0900_081bf658 Content-Type: application/octet-stream; name="ClassBrowser.rb" Content-Disposition: attachment; filename="ClassBrowser.rb" Content-Transfer-Encoding: base64 IyEvdXNyL2xvY2FsL2Jpbi9ydWJ5CnJlcXVpcmUgJ2d0aycKcmVxdWlyZSAnb2JzZXJ2ZXInCgpt b2R1bGUgR3RrCiAgY2xhc3MgVHJlZUl0ZW0KICAgIGFsaWFzIF9zZXRfc3VidHJlZSBzZXRfc3Vi dHJlZQoKICAgIGRlZiBzZXRfc3VidHJlZSh0cmVlKQogICAgICBfc2V0X3N1YnRyZWUodHJlZSkK ICAgICAgQHN1YnRyZWUgPSB0cmVlCiAgICBlbmQKICAgIAogICAgYXR0cl9yZWFkZXIgOnN1YnRy ZWUKICBlbmQKZW5kCgojIKWvpemluaXEpeqhvApjbGFzcyBDbGFzc1RyZWUgPCBHdGs6OlRyZWUK ICBpbmNsdWRlIE9ic2VydmFibGUKICBkZWYgaW5pdGlhbGl6ZShrbGFzcykKICAgIHN1cGVyKCkK ICAgIGJ1aWxkVHJlZShrbGFzcykKICBlbmQKICAKICBwcml2YXRlCiAgZGVmIGJ1aWxkVHJlZShr bGFzcykKICAgIEByb290ID0gbmV3SXRlbShrbGFzcykKICAgIGFwcGVuZChAcm9vdCkKICAgIEBy b290LnNldF9zdWJ0cmVlKEd0azo6VHJlZS5uZXcpIGlmIGhhdmVTdWJjbGFzcz8oa2xhc3MpCiAg ZW5kCgogIGRlZiBhZGRTdWJjbGFzcyhrbGFzcywgdHJlZSkKICAgIHN1YiA9IFtdCiAgICBPYmpl Y3RTcGFjZS5lYWNoX29iamVjdChDbGFzcykgZG8gfGN8CiAgICAgIG5leHQgaWYgYy5zdXBlcmNs YXNzICE9IGtsYXNzCiAgICAgIHN1Yi5wdXNoKGMpCiAgICBlbmQKICAgIHN1Yi5zb3J0IXt8YSwg YnwgYS50b19zIDw9PiBiLnRvX3N9CiAgICBzdWIuZWFjaCBkbyB8Y3wKICAgICAgaXRlbSA9IG5l d0l0ZW0oYykKICAgICAgdHJlZS5hcHBlbmQoaXRlbSkKICAgICAgaXRlbS5zZXRfc3VidHJlZShH dGs6OlRyZWUubmV3KSBpZiBoYXZlU3ViY2xhc3M/KGMpCiAgICBlbmQKICBlbmQKCiAgZGVmIGhh dmVTdWJjbGFzcz8oa2xhc3MpCiAgICBPYmplY3RTcGFjZS5lYWNoX29iamVjdChDbGFzcykgZG8g fGN8CiAgICAgIHJldHVybiB0cnVlIGlmKGMuc3VwZXJjbGFzcyA9PSBrbGFzcykKICAgIGVuZAog ICAgcmV0dXJuIGZhbHNlCiAgZW5kCiAgCiAgZGVmIG5ld0l0ZW0oa2xhc3MpCiAgICBpdGVtID0g R3RrOjpUcmVlSXRlbS5uZXcoa2xhc3MudG9fcykKICAgIGl0ZW0uc2hvdwogICAgaXRlbS5zaWdu YWxfY29ubmVjdCgnc2VsZWN0Jyl7CiAgICAgIGNoYW5nZWQKICAgICAgbm90aWZ5X29ic2VydmVy cyhrbGFzcykKICAgIH0KICAgIGl0ZW0uc2lnbmFsX2Nvbm5lY3QoJ2V4cGFuZCcpe3x3fAogICAg ICBpZih3LnN1YnRyZWUuY2hpbGRyZW4uZW1wdHk/KQoJYWRkU3ViY2xhc3Moa2xhc3MsIHcuc3Vi dHJlZSkKCXcuZXhwYW5kCiAgICAgIGVuZAogICAgfQogICAgcmV0dXJuIGl0ZW0KICBlbmQKZW5k CgojIKXhpb2lw6XJpPLJvbyopLmk66XqpbmlyApjbGFzcyBNZXRob2RMaXN0IDwgR3RrOjpDTGlz dAogIGRlZiBpbml0aWFsaXplCiAgICBzdXBlcihbJ01ldGhvZHMnXSkKICAgIHNpZ25hbF9jb25u ZWN0KCJjbGlja19jb2x1bW4iKXt8eCx5fAogICAgICBzZXRfc29ydF9jb2x1bW4oeSkKICAgICAg c29ydAogICAgfQogIGVuZAogIAogIGRlZiB1cGRhdGUoa2xhc3MpCiAgICBmcmVlemUKICAgIGNs ZWFyCiAgICAKICAgIGdldFNpbmdsZXRvbk1ldGhvZChrbGFzcykKICAgIGdldE1ldGhvZChrbGFz cykKICAgIGdldEluc3RhbmNlTWV0aG9kKGtsYXNzKQoKICAgIHRoYXcKICBlbmQKICAKICBkZWYg Z2V0TWV0aG9kKGtsYXNzKQogICAgbWV0aG9kcyA9IGtsYXNzLm1ldGhvZHMKICAgIHNjbGFzcyA9 IGtsYXNzLnN1cGVyY2xhc3MKICAgIGlmKHNjbGFzcykKICAgICAgIyC/xqTiu/2kw6TGpKSk66Ti pM6kz7zopOq9/KSvCiAgICAgIG1ldGhvZHMgLT0gc2NsYXNzLm1ldGhvZHMKICAgIGVuZAogICAg bWV0aG9kcy5zb3J0IQogICAgCiAgICBtZXRob2RzLmVhY2ggZG8gfG1lfAogICAgICBhcHBlbmQo W21lXSkKICAgIGVuZAogIGVuZAogIAogIGRlZiBnZXRJbnN0YW5jZU1ldGhvZChrbGFzcykKICAg IG1ldGhvZHMgPSBrbGFzcy5pbnN0YW5jZV9tZXRob2RzCiAgICBzY2xhc3MgPSBrbGFzcy5zdXBl cmNsYXNzCiAgICBpZihzY2xhc3MpCiAgICAgICMgv8ak4rv9pMOkxqSkpOuk4qTOpM+86KTqvfyk rwogICAgICBtZXRob2RzIC09IHNjbGFzcy5pbnN0YW5jZV9tZXRob2RzCiAgICBlbmQKICAgIG1l dGhvZHMuc29ydCEKICAgIAogICAgbWV0aG9kcy5lYWNoIGRvIHxtZXwKICAgICAgYXBwZW5kKFtt ZV0pCiAgICBlbmQKICBlbmQKICAKICBkZWYgZ2V0U2luZ2xldG9uTWV0aG9kKGtsYXNzKQogICAg bWV0aG9kcyA9IGtsYXNzLnNpbmdsZXRvbl9tZXRob2RzCiAgICBzY2xhc3MgPSBrbGFzcy5zdXBl cmNsYXNzCiAgICBpZihzY2xhc3MpCiAgICAgICMgv8ak4rv9pMOkxqSkpOuk4qTOpM+86KTqvfyk rwogICAgICBtZXRob2RzIC09IHNjbGFzcy5zaW5nbGV0b25fbWV0aG9kcwogICAgZW5kCiAgICBt ZXRob2RzLnNvcnQhCiAgICAKICAgIG1ldGhvZHMuZWFjaCBkbyB8bWV8CiAgICAgIGFwcGVuZChb a2xhc3MubmFtZSArICcuJyArIG1lXSkKICAgIGVuZAogIGVuZAogIAplbmQKCmNsYXNzIENvbnN0 TGlzdCA8IEd0azo6Q0xpc3QKICBkZWYgaW5pdGlhbGl6ZQogICAgc3VwZXIoWydDb25zdGFudHMn XSkKICAgIHNpZ25hbF9jb25uZWN0KCJjbGlja19jb2x1bW4iKXt8eCx5fAogICAgICBzZXRfc29y dF9jb2x1bW4oeSkKICAgICAgc29ydAogICAgfQogIGVuZAogIAogIGRlZiB1cGRhdGUoa2xhc3Mp CiAgICBmcmVlemUKICAgIGNsZWFyCiAgICAKICAgIGNvbnN0YW50cyA9IGtsYXNzLmNvbnN0YW50 cwogICAgc2NsYXNzID0ga2xhc3Muc3VwZXJjbGFzcwogICAgaWYoc2NsYXNzKQogICAgICBjb25z dGFudHMgLT0gc2NsYXNzLmNvbnN0YW50cwogICAgZW5kCiAgICAKICAgIGNvbnN0YW50cy5zb3J0 LmVhY2ggZG8gfGN8CiAgICAgIGFwcGVuZChbY10pCiAgICBlbmQKCiAgICB0aGF3CiAgZW5kCmVu ZAoKY2xhc3MgQ2xhc3NCcm93c2VyIDwgR3RrOjpXaW5kb3cKICBkZWYgaW5pdGlhbGl6ZShrbGFz cykKICAgIHN1cGVyKEd0azo6V0lORE9XX1RPUExFVkVMKQogICAgc2lnbmFsX2Nvbm5lY3QoJ2Rl bGV0ZV9ldmVudCcpe2ZhbHNlfQogICAgc2lnbmFsX2Nvbm5lY3QoJ2Rlc3Ryb3knKXtxdWl0fQog ICAgcmVhbGl6ZQoKICAgIGJhc2UgPSBHdGs6OlZCb3gubmV3KGZhbHNlLCAwKQogICAgYWRkKGJh c2UpCgogICAgcGFuZWQgPSBHdGs6OkhQYW5lZC5uZXcKICAgIGJhc2UucGFja19zdGFydChwYW5l ZCwgdHJ1ZSwgdHJ1ZSwgMCkKCiAgICBzY3J3ID0gR3RrOjpTY3JvbGxlZFdpbmRvdy5uZXcKICAg IHNjcncuc2V0X3BvbGljeShHdGs6OlBPTElDWV9BVVRPTUFUSUMsIEd0azo6UE9MSUNZX0FMV0FZ UykKICAgIHBhbmVkLmFkZDEoc2NydykKCiAgICBAdHJlZSA9IENsYXNzVHJlZS5uZXcoa2xhc3Mp CiAgICBzY3J3LmFkZF93aXRoX3ZpZXdwb3J0KEB0cmVlKQoKICAgIGxpc3RzID0gR3RrOjpIQm94 Lm5ldyhmYWxzZSwgMCkKICAgIHBhbmVkLmFkZDIobGlzdHMpCiAgICAKICAgIFtNZXRob2RMaXN0 LCBDb25zdExpc3RdLmVhY2ggZG8gfGtsYXNzfAogICAgICBsaXN0ID0ga2xhc3MubmV3CiAgICAg IEB0cmVlLmFkZF9vYnNlcnZlcihsaXN0KQogICAgICBzY3J3ID0gR3RrOjpTY3JvbGxlZFdpbmRv dy5uZXcKICAgICAgc2Nydy5zZXRfcG9saWN5KEd0azo6UE9MSUNZX0FVVE9NQVRJQywgR3RrOjpQ T0xJQ1lfQUxXQVlTKQogICAgICBzY3J3LmFkZChsaXN0KQogICAgICBsaXN0cy5wYWNrX3N0YXJ0 KHNjcncsIHRydWUsIHRydWUsIDApCiAgICBlbmQKICBlbmQKICAKICBkZWYgcXVpdAogICAgR3Rr Lm1haW5fcXVpdAogIGVuZAoKZW5kCgppZihfX0ZJTEVfXyA9PSAkMCkKICAjIG1haW4KICAjILD6 v/SkrKSipMOkv6TppL2k7KTyoaLMtaSrpMOkv6TpT2JqZWN0pPKlyKXDpdekzqWvpemluaTLpLmk 6wogIGtsYXNzID0KICBpZihBUkdWLmVtcHR5PykKICAgIE9iamVjdAogIGVsc2UKICAgIGV2YWwo QVJHVi5zaGlmdCkKICBlbmQKICAKICBhID0gQ2xhc3NCcm93c2VyLm5ldyhrbGFzcykKICBhLnNl dF9kZWZhdWx0X3NpemUoNDgwLCAzMjApCiAgYS5zZXRfdGl0bGUoJ0NsYXNzIEJyb3dzZXInKQog IGEuc2hvd19hbGwgCiAgR3RrLm1haW4KICBleGl0KDApCmVuZAo= --Multipart_Sat__5_Aug_2000_22:28:43_+0900_081bf658--