From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: AS4713 221.184.0.0/13 X-Spam-Status: No, score=-1.9 required=3.0 tests=AWL,BAYES_00, DKIM_ADSP_CUSTOM_MED,FORGED_GMAIL_RCVD,FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, RCVD_IN_BL_SPAMCOP_NET,RCVD_IN_DNSWL_HI,SPF_HELO_NONE,SPF_PASS, UNPARSEABLE_RELAY shortcircuit=no autolearn=no autolearn_force=no version=3.4.2 Received: from neon.ruby-lang.org (neon.ruby-lang.org [221.186.184.75]) by dcvr.yhbt.net (Postfix) with ESMTP id 1054F1F4B4 for ; Thu, 8 Apr 2021 20:09:15 +0000 (UTC) Received: from neon.ruby-lang.org (localhost [IPv6:::1]) by neon.ruby-lang.org (Postfix) with ESMTP id 1CC3212125D; Fri, 9 Apr 2021 05:08:13 +0900 (JST) Received: from xtrwkhkc.outbound-mail.sendgrid.net (xtrwkhkc.outbound-mail.sendgrid.net [167.89.16.28]) by neon.ruby-lang.org (Postfix) with ESMTPS id 25ED3121250 for ; Fri, 9 Apr 2021 05:08:10 +0900 (JST) Received: by filterdrecv-c5749c756-fjbdh with SMTP id filterdrecv-c5749c756-fjbdh-14-606F62E4-9 2021-04-08 20:09:08.076924762 +0000 UTC m=+1220708.410223311 Received: from herokuapp.com (unknown) by geopod-ismtpd-5-1 (SG) with ESMTP id xfDywVGrReiu2EA6f4V_5A for ; Thu, 08 Apr 2021 20:09:07.978 +0000 (UTC) Date: Thu, 08 Apr 2021 20:09:08 +0000 (UTC) From: jzakiya@gmail.com Message-ID: References: Mime-Version: 1.0 X-Redmine-MailingListIntegration-Message-Ids: 79361 X-Redmine-Project: ruby-master X-Redmine-Issue-Tracker: Feature X-Redmine-Issue-Id: 17786 X-Redmine-Issue-Author: jzakiya X-Redmine-Sender: jzakiya X-Mailer: Redmine X-Redmine-Host: bugs.ruby-lang.org X-Redmine-Site: Ruby Issue Tracking System X-Auto-Response-Suppress: All Auto-Submitted: auto-generated X-SG-EID: =?us-ascii?Q?hWLGb9ELvYJG7iiFsV=2F8yBal=2FMQN45lVm+8if9KQMe4Tt+Zy0BKGeqjzGmDRhI?= =?us-ascii?Q?qsNRjs419DStdSCylalc3WpPAKpYz2UywOW7ECQ?= =?us-ascii?Q?7pBlEMK34mOc3re65ve8HSh4ZARCdKEEGFXHtF0?= =?us-ascii?Q?EhxtwmPysxCLktN57ZOSH2S8CdfeK3D85v6Avll?= =?us-ascii?Q?Yidu0V5hJpFLwqoCUHIO6iWMtlWtvFQNzqA=3D=3D?= To: ruby-core@ruby-lang.org X-Entity-ID: b/2+PoftWZ6GuOu3b0IycA== X-ML-Name: ruby-core X-Mail-Count: 103315 Subject: [ruby-core:103315] [Ruby master Feature#17786] Proposal: new "ends" keyword X-BeenThere: ruby-core@ruby-lang.org X-Mailman-Version: 2.1.15 Precedence: list Reply-To: Ruby developers List-Id: Ruby developers List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: ruby-core-bounces@ruby-lang.org Sender: "ruby-core" SXNzdWUgIzE3Nzg2IGhhcyBiZWVuIHVwZGF0ZWQgYnkganpha2l5YSAoSmFiYXJpIFpha2l5YSku DQoNCg0KVGhlIHByb2Nlc3MgdG8gaW1wbGVtZW50IHRoaXMgcHJvcG9zYWwgYXJlIGFjdHVhbGx5 IG11Y2ggc2ltcGxlciB0aGFuIHlvdSBtYWtlIGl0IG91dCB0byBiZS4NCg0KVGhpcyB3b3VsZCBi ZSBwZXJmZWN0bHkgc3ludGFjdGljYWxseSBsZWdhbCBjb2RlLg0KDQpgYGANCkEuY2xhc3NfZXZh bCBkbw0KICBkZWZpbmVfbWV0aG9kIDpiIGRvDQogICAgYyBkbw0KICAgICAgZCBkbw0KICAgICAg ICBlDQogIGVuZHMNCg0KICBkZWYgYw0KICBlbmQNCmVuZA0KYGBgDQpJdCB3b3VsZCBiZSBleHBh bmRlZCB0bw0KDQpgYGANCkEuY2xhc3NfZXZhbCBkbw0KICBkZWZpbmVfbWV0aG9kIDpiIGRvDQog ICAgYyBkbw0KICAgICAgZCBkbw0KICAgICAgICBlDQogICAgICBlbmQNCiAgICBlbmQNCiAgZW5k DQoNCiAgZGVmIGMNCiAgZW5kDQplbmQNCmBgYA0KDQpTbyBpbiB5b3VyIGNvZGUgZXhhbXBsZSwg c3RhcnRpbmcgYXQgdGhlIGJlZ2lubmluZyAob3V0ZXIgbW9zdCBsYXllcikgdGhlIHBhcnNlciBz dGFydHMgY291bnRpbmcgaG93IG1hbnkgYGB0aGluZ3NgYCAobW9kdWxlfGNsYXNzfG1ldGhvZCBu YW1lcywgbG9vcHMsIGNvbmRpdGlvbmFscywgZXRjKSBhcmUgY3VycmVudGx5IG9wZW4gKGhhdmVu 4oCZdCBiZWVuIHJlc29sdmVkIGFzIHRlcm1pbmF0ZWQpLiBBdCBzb21lIHBvaW50LCBpdCBjb3Vu dHMgdGhlIGxhc3QgdGhpbmcgdGhhdCBuZWVkcyB0byBiZSByZXNvbHZlZC4gV2hlbiBpdCBlbmNv dW50ZXJzIHRoZSBmaXJzdCBgYGVuZGBgIGl0IHRyaWVzIHRvIHJlc29sdmUgaXQgd2l0aCB0aGUg bGFzdCAoaGlnaGVzdCBjb3VudCkgYGB0aGluZ2BgIHRoYXTigJlzIHN0aWxsIG9wZW4uIEl0IHRo ZW4gY29udGludWVzIGJhY2tpbmcgdXAgdGhlIHRyZWUgY291bnQsIHVudGlsIGFsbCB0aGUgdW5y ZXNvbHZlZCBgYHRoaW5nc2BgIGNvdW50IGlzIHplcm8uDQoNClNvIG5vdyB0aGUgc291cmNlIGNv ZGUgQVNUIGlzIGZ1bGx5IHJlc29sdmVkLCBhbmQgd3xzaG91bGQgbG9vayBqdXN0IGxpa2Ugbm9y bWFsLiBUaGlzIGlzIHdoYXQgaXMgdGhlbiBmZWVkIHRvIHRoZSBjb21waWxlci4gQnV0IHRoZXJl IGhhcyB0byBiZSBhIHdheSB0byBrbm93IGhvdyBtYW55IHRoaW5ncyBuZWVkIHRvIGJlIHRlcm1p bmF0ZWQgYW5kIGhvdyBtYW55IGFyZSBzdGlsbCBvcGVuLg0KDQpJIHdvdWxkIGFzc3VtZSBmb3Ig UnVieSwgdGhlIHBhcnNpbmcgc3RhZ2UgaXMgc2VwYXJhdGUgZnJvbSBjb21waWxhdGlvbi4gWW91 IGhhdmUgdG8gZ28gdGhyb3VnaCBzb21lIHByb2Nlc3MgdG8gdHVybiByYXcgc291cmNlIGNvZGUs IHRocm91Z2ggd2hhdGV2ZXIgbnVtYmVyIG9mIHN0YWdlcyBvZiBwcm9jZXNzaW5nLCB0byBmb3Jt YXQgaXQgaW50byBydW50aW1lIGNvZGUuDQoNClNvIGluIG15IG1pbmQsIGFsbCB0aGUgcGFyc2Vy IGhhcyB0byBkbyBpcyBhY2NvdW50IGZvciBhbGwgb3BlbiBgYHRoaW5nc2BgLCBhbmQgc3RhcnQg cmVzb2x2aW5nIHRoZW0gZnJvbSB0aGUgbW9zdCBpbm5lciBsYXllciBgYHRoaW5nc2BgIGJhY2sg b3V0IHRvIHRoZSBvdXRlciBsYXllcnMsIHVudGlsIGV2ZXJ5IGBgdGhpbmdgYCBpcyByZXNvbHZl ZC4NCg0KVGhpcyBzaG91bGQgYmUgYSBtdWNoIHNpbXBsZXJ8ZWFzaWVyIHByb2Nlc3MgdG8gZG8g dGhhbiB3aGF0IFB5dGhvbiBkb2VzLCBiZWNhdXNlIGl0IGhhcyB3aGl0ZXNwYWNlIGRlcGVuZGVu Y2llcywgd2hlcmVhcyBSdWJ5IGRvZXNuJ3QgY2FyZS4gQWxsIFJ1Ynkgd291bGQgaGF2ZSB0byBk byBpcyBnbyBkb3duLCBhbmQgYmFjayB1cCwgdGhlIHBhcnNpbmcgdHJlZS4NCg0KU28gaW4gdGhl IGJpZyBwaWN0dXJlLCB5b3UgZG9uJ3QgaGF2ZSB0byBjYXJlIG11Y2ggYWJvdXQgd2hhdCB0aGUg YGB0aGluZ2BgIGlzLCB5b3UganVzdCBoYXZlIHRvIGtlZXAgdHJhY2sgb2YgaG93IG1hbnkgdGhl cmUgYXJlLCBiZWNhdXNlIGFsbCB5b3UncmUgZ29pbmcgdG8gZmlyc3QgZG8gaXMgcHV0IHRoZSBz b3VyY2UgY29kZSBpbiBlcXVpdmFsZW50IHN0YW5kYXJkIGZvcm1hdCB3aXRoIGV4cGFuZGVkIG91 dCBgYGVuZGBgIHN0YXRlbWVudHMsIHdoaWNoIGNhbiB0aGVuIGJlIHByb2Nlc3NlZCBhcyB1c3Vh bC4NCg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KRmVhdHVyZSAj MTc3ODY6IFByb3Bvc2FsOiBuZXcgICJlbmRzIiBrZXl3b3JkDQpodHRwczovL2J1Z3MucnVieS1s YW5nLm9yZy9pc3N1ZXMvMTc3ODYjY2hhbmdlLTkxNDA0DQoNCiogQXV0aG9yOiBqemFraXlhIChK YWJhcmkgWmFraXlhKQ0KKiBTdGF0dXM6IE9wZW4NCiogUHJpb3JpdHk6IE5vcm1hbA0KLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KSSdtIHN1Ym1pdHRpbmcgdGhpcyBp biB0aGUgc2FtZSBzcGlyaXQgdGhhdCBgYGVuZGxlc3MgbWV0aG9kc2BgIHdhcywgdG8gcHJvbW90 ZSBhbmQgcHJvZHVjZSBtb3JlIGNvbmNpc2UgYW5kIGVhc2llciB0byB3cml0ZXxyZWFkIGNvZGUu DQoNCioqUHJvcG9zYWwqKg0KVGhpcyBpcyBhIHByb3Bvc2FsIHRvIGludHJvZHVjZSBhIG5ldyBr ZXl3b3JkIGBgZW5kc2BgIChvciBgYGVuZGFsbGBgKSBhcyBhIHRlcm1pbmFsIHBvaW50IHRvIHJl c29sdmUgdGhlIGVuZCBvZiBuZXN0ZWQgYGBsb29wc3xjb25kaXRpb25hbHNgYC4NCg0KKipXaHkq Kg0KSXQncyBhIGNvbW1vbiBjb2RlIG9jY3VycmVuY2UgdG8gaGF2ZSBtdWx0aXBsZSBsZXZlbHMg b2YgbG9vcHMgYW5kL29yIGNvbmRpdGlvbmFscywgd2hpY2ggcmVxdWlyZSBzZXBhcmF0ZSBgYGVu ZGBgIGtleXdvcmRzIHRvIGRlc2lnbmF0ZSB0aGVpcg0KdGVybWluYXRpb24gcG9pbnRzLiBUaGUg YGBlbmRgYCBzdGF0ZW1lbnRzIHRoZW1zZWx2ZXMgYXJlIG1lcmVseSBmb3Igc3ludGFjdGljIHB1 cnBvc2VzLg0KDQpJdCB3b3VsZCBiZSBhIGJlbmVmaXQgdG8gcHJvZ3JhbW1lcnMsIGFuZCBjb2Rl IHJlYWRlcnMsIHRvIGJlIGFibGUgdG8gcHJvZHVjZXxyZWFkIG1vcmUgY29uY2lzZSBjb2RlLCBi eSByZWR1Y2luZyB0aGUgYGBjb2RlIG5vaXNlYGAgb2YgdGhlc2UNCm5lc3RlZCBtdWx0aXBsZSBg YGVuZGBgIGtleXdvcmRzIHdpdGggYSBzaG9ydGVyfGNsZWFuZXIgc3ludGF4Lg0KDQpUaHVzLCBJ IHByb3Bvc2UgY3JlYXRpbmcgdGhlIGtleXdvcmQgYGBlbmRzYGAgYXMgYSBzaG9ydGVyfGNsZWFu ZXIgc3ludGF4IHRvIHJlcGxhY2UgaGF2aW5nIHRvIHdyaXRlIG11bHRpcGxlIGBgZW5kYGAga2V5 d29yZHMuDQoNCioqRXhhbXBsZSoqDQoNCkJlbG93IGlzIGFuIGV4YW1wbGUgb2YgcmVhbCBjb2Rl IHdoaWNoIHBlcmZvcm1zIG5lc3RlZCBsb29wcy4gV2l0aCAic3RhbmRhcmRgYCBmb3JtYXQgaXQg bG9va3MgbGlrZSB0aGlzLg0KDQpgYGANCmRlZiByZW5kZXIoc2NlbmUsIGltYWdlLCBzY3JlZW5X aWR0aCwgc2NyZWVuSGVpZ2h0KQ0KICBzY3JlZW5IZWlnaHQudGltZXMgZG8gfHl8DQogICAgc2Ny ZWVuV2lkdGgudGltZXMgZG8gfHh8DQogICAgICBjb2xvciA9IHNlbGYudHJhY2VSYXkoLi4uLikN CiAgICAgIHIsIGcsIGIgPSBDb2xvci50b0RyYXdpbmdDb2xvcihjb2xvcikNCiAgICAgIGltYWdl LnNldCh4LCB5LCBTdHVtcHlDb3JlOjpSR0JBLmZyb21fcmdiKHIsIGcsIGIpKQ0KICAgIGVuZCAN CiAgZW5kIA0KZW5kDQpgYGANCg0KSG93ZXZlciwgZnJvbSB0aGUgcG9pbnQgb2YgdmlldyBvZiB0 aGUgcGFyc2VyLCB0aGVzZSBhcmUgYWxsIGxlZ2FsfGVxdWl2YWxlbnQuDQoNCmBgYA0KZGVmIHJl bmRlcihzY2VuZSwgaW1hZ2UsIHNjcmVlbldpZHRoLCBzY3JlZW5IZWlnaHQpDQogIHNjcmVlbkhl aWdodC50aW1lcyBkbyB8eXwNCiAgICBzY3JlZW5XaWR0aC50aW1lcyBkbyB8eHwNCiAgICAgIGNv bG9yID0gc2VsZi50cmFjZVJheSguLi4uKQ0KICAgICAgciwgZywgYiA9IENvbG9yLnRvRHJhd2lu Z0NvbG9yKGNvbG9yKQ0KICAgICAgaW1hZ2Uuc2V0KHgsIHksIFN0dW1weUNvcmU6OlJHQkEuZnJv bV9yZ2IociwgZywgYikpDQogICAgZW5kICAgICBlbmQgICAgICAgICBlbmQgICAgIGVuZCBlbmQg ZW5kDQogIGVuZCAgICAgICAgIGVuZCAgICAgICBlbmQNCmVuZCAgICAgICAgICAgICBlbmQgICAg IGVuZA0KYGBgDQoNClRoaXMgcHJvcG9zYWwgd291bGQgYWxsb3cgdGhpcyB0eXBlIG9mIGNvZGUg dG8gYmUgd3JpdHRuIGFzOg0KDQpgYGANCmRlZiByZW5kZXIoc2NlbmUsIGltYWdlLCBzY3JlZW5X aWR0aCwgc2NyZWVuSGVpZ2h0KQ0KICBzY3JlZW5IZWlnaHQudGltZXMgZG8gfHl8DQogICAgc2Ny ZWVuV2lkdGgudGltZXMgZG8gfHh8DQogICAgICBjb2xvciA9IHNlbGYudHJhY2VSYXkoLi4uLikN CiAgICAgIHIsIGcsIGIgPSBDb2xvci50b0RyYXdpbmdDb2xvcihjb2xvcikNCiAgICAgIGltYWdl LnNldCh4LCB5LCBTdHVtcHlDb3JlOjpSR0JBLmZyb21fcmdiKHIsIGcsIGIpKQ0KZW5kcw0KYGBg DQoqKlByb3MqKg0KMSkgY29kZSBjb25jaXNlbmVzcw0KMikgYmV0dGVyIHJlYWRhYmlsaXR5DQoz KSBubyB3aGl0ZXNwYWNlIGRlcGVuZGVuY2llcw0KNCkgbm8gY29uZmxpY3Qgd2l0aCBsZWdhY3kg Y29kZQ0KNSkgYXR0cmFjdGljZSB0byBwZW9wbGUgY29taW5nIGZyb20gUHl0aG9ufE5pbSwgZXQg YWwNCg0KKipDb25zKioNCk5vIHRlY2huaWNhbCBpbXBsZW1lbnRhdGlvbiByZXN0cmljdGlvbnMg SSBjYW4gdGhpbmsgb2YuDQpNYXliZSBhbHRlcm5hdGl2ZSBuYW1lIChlbmRhbGwpPw0KDQpUaGFu a3MgZm9yIGNvbnNpZGVyYXRpb24uDQoNCg0KDQoNCi0tIA0KaHR0cHM6Ly9idWdzLnJ1YnktbGFu Zy5vcmcvDQo=