From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-1.1 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=ham autolearn_force=no version=3.4.2 Received: from primenet.com.au (ns1.primenet.com.au [203.24.36.2]) by inbox.vuxu.org (OpenSMTPD) with ESMTP id b403b7ad for ; Fri, 6 Sep 2019 00:54:07 +0000 (UTC) Received: (qmail 1283 invoked by alias); 6 Sep 2019 00:53:59 -0000 Mailing-List: contact zsh-workers-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Workers List List-Post: List-Help: List-Unsubscribe: X-Seq: 44732 Received: (qmail 8490 invoked by uid 1010); 6 Sep 2019 00:53:59 -0000 X-Qmail-Scanner-Diagnostics: from mail-vk1-f178.google.com by f.primenet.com.au (envelope-from , uid 7791) with qmail-scanner-2.11 (clamdscan: 0.101.2/25559. spamassassin: 3.4.2. Clear:RC:0(209.85.221.178):SA:0(-2.0/5.0):. Processed in 3.686246 secs); 06 Sep 2019 00:53:59 -0000 X-Envelope-From: sgniazdowski@gmail.com X-Qmail-Scanner-Mime-Attachments: | X-Qmail-Scanner-Zip-Files: | Received-SPF: pass (ns1.primenet.com.au: SPF record at _netblocks.google.com designates 209.85.221.178 as permitted sender) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=MM4m2yY9gqM3xUlOFxsgekGmgAgGe92a0RWAZBjuEqQ=; b=C895AOrV2YOUVgghaNr6FfM/P+PSu+HCXDxMF6WAIpF0HGWxFIaTyDAQvyyYiL/D9H 46xaMg+gk5Wf9x7G/8E701ks8XX67sa43KEqTIxLEjmFe077nBnsRaWvSw1TiO7FKp0x t5OwdS/9QptJ8Ug0JWum4eirtw7x1CkpL6uusZJ7dYYqC5SMayBGVfJZUHUdScdkW71v RS0Yiw3fCG/egssc94O2Tz0VSk9heQcMLlVkRomaU371kHv87PIde2CrkO1Ix6p1xJW2 v5PrM3kX8sHvUFZ/Yf/jY9Y05SFByJfBL7p2DWMYSS8JqO90lj+I1NQvFk38syCwJ1QF uHdQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=MM4m2yY9gqM3xUlOFxsgekGmgAgGe92a0RWAZBjuEqQ=; b=XTd9aM3axH+SUWblY8lbt1lHrrnsuDJUTrCT3VgMY5FENjgOUq+L1+jhRUwQO7i/dA 17dZ9Suydn0Q1Y0ip24YYj/1A+duf/e5DeVtp9rEImVNFY+TSI+caQB979Vtlx+Z8Fpd IVgHPjVAsEe/M58Wi84rInYIpSjbI8Wo0MDnVT3jopnl2YxItnbbPBFf+0y60Ji/ezjT x156dL+pKSqZFpe5iyp9fZ3fyiEVQbu8M33ysgClSh2hFGuGY4EqB+dfNtWy+hto/S7M a8mkZmItoaIzTwTj7T5H8hW6dB5tb5Am4r+4ir2xN0TY9hzB0Sf8URvH8p1quMOb1dI7 h5kA== X-Gm-Message-State: APjAAAVS11vQML4TPcjAZduII9Nphn1aBSlcj+k1DctABKJLtKWKCr3O ej68W9BZCyNbx+v5rA957R1OoE2cLIL7YanH8z4a/1p9UVU= X-Google-Smtp-Source: APXvYqzut6o3MQRv5xlz7KrKJAPQKGAtd5AjdKpsatPh5XvclikJPIFBdB3heWfvpTKFOkZS8jvTL60Jv610UtL+qGU= X-Received: by 2002:ac5:cbcc:: with SMTP id h12mr3029523vkn.33.1567731200742; Thu, 05 Sep 2019 17:53:20 -0700 (PDT) MIME-Version: 1.0 From: Sebastian Gniazdowski Date: Fri, 6 Sep 2019 02:52:39 +0200 Message-ID: Subject: [PATCH] Support the mksh's ${|func;} substitution To: Zsh hackers list Content-Type: multipart/mixed; boundary="00000000000052ec0f0591d7ddcd" --00000000000052ec0f0591d7ddcd Content-Type: text/plain; charset="UTF-8" Hello Some notes on the patch: - the subst is being handled at top of paramsubst, because it's made uncompatible with (...)-flags (${|(U)funct;} looks awful, more on this in the patch), - then the `s' variable is advanced past the semicolon, so that the rest of the function can safely progress doing (almost) nothing - one thing that the function still does is a fetchvalue, which I prevent from setting vunset to 1 in case of ${|func;} If commited, the substitution will be super useful in // substitution. E.g.: arr=( val1 val2 abc1 abc3 ) func() { REPLY="${(C)match[1]}"; } print -rl ${arr[@]//(#b)(*)/${|func;}} Output: Val1 Val2 Abc1 Abc3 PS. I did install mksh and test the substitution, it works the same. -- Sebastian Gniazdowski News: https://twitter.com/ZdharmaI IRC: https://kiwiirc.com/client/chat.freenode.net:+6697/#zplugin Blog: http://zdharma.org --00000000000052ec0f0591d7ddcd Content-Type: text/plain; charset="US-ASCII"; name="0001-Support-the-mksh-s-substitution-func.patch.txt" Content-Disposition: attachment; filename="0001-Support-the-mksh-s-substitution-func.patch.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_k07eijmc0 RnJvbSBmYjQ3NDQ1NjJkMmYwMzI0NjI4OGRhMjY5MjU1OWQ3ZjljNDAxNGYyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTZWJhc3RpYW4gR25pYXpkb3dza2kgPHNnbmlhemRvd3NraUBn bWFpbC5jb20+CkRhdGU6IEZyaSwgNiBTZXAgMjAxOSAwMjozNToxNCArMDIwMApTdWJqZWN0OiBb UEFUQ0hdIFN1cHBvcnQgdGhlIG1rc2gncyBzdWJzdGl0dXRpb24gJHt8ZnVuYzt9CgotLS0KIFNy Yy9zdWJzdC5jIHwgNTEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKystCiAxIGZpbGUgY2hhbmdlZCwgNTAgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigt KQoKZGlmZiAtLWdpdCBhL1NyYy9zdWJzdC5jIGIvU3JjL3N1YnN0LmMKaW5kZXggYjEzMmYyNTFi Li44MGE1NzJlMTcgMTAwNjQ0Ci0tLSBhL1NyYy9zdWJzdC5jCisrKyBiL1NyYy9zdWJzdC5jCkBA IC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJ6c2gubWRoIgogI2luY2x1ZGUgInN1YnN0LnBy byIKKyNpbmNsdWRlICJleGVjLnBybyIKIAogI2RlZmluZSBMRl9BUlJBWQkxCiAKQEAgLTE4NDcs OCArMTg0OCwxNyBAQCBwYXJhbXN1YnN0KExpbmtMaXN0IGwsIExpbmtOb2RlIG4sIGNoYXIgKipz dHIsIGludCBxdCwgaW50IHBmX2ZsYWdzLAogICAgICAqIG5lc3RlZCAoUCkgZmxhZ3MuCiAgICAg ICovCiAgICAgaW50IGZldGNoX25lZWRlZDsKKyAgICAvKiBJbmRpY2F0ZXMgJHt8ZnVuYzt9ICov CisgICAgaW50IHJwbHlmdW5jID0gMDsKKyAgICAvKiBUaGUgbmFtZSBvZiB0aGUgZnVuY3Rpb24g dG8gYmUgcmFuIGJ5ICR7fC4uLjt9ICovCisgICAgY2hhciAqY21kYXJnID0gTlVMTDsKKyAgICAv KiBUaGUgbGVuZ3RoIG9mIHRoZSBpbnB1dCBzdHJpbmcgKi8KKyAgICBpbnQgc2xlbiA9IDA7Cisg ICAgLyogVGhlIGNsb3NpbmcgYnJhY2UgcG9pbnRlciAqLworICAgIGNoYXIgKm91dGJyYWNlcDsK IAogICAgICpzKysgPSAnXDAnOworICAgIHNsZW4gPSBzdHJsZW4ocyk7CiAgICAgLyoKICAgICAg KiBOb3RoaW5nIHRvIGRvIHVubGVzcyB0aGUgY2hhcmFjdGVyIGZvbGxvd2luZyB0aGUgJCBpcwog ICAgICAqIHNvbWV0aGluZyB3ZSByZWNvZ25pc2UuCkBAIC0xODc2LDYgKzE4ODYsNDEgQEAgcGFy YW1zdWJzdChMaW5rTGlzdCBsLCBMaW5rTm9kZSBuLCBjaGFyICoqc3RyLCBpbnQgcXQsIGludCBw Zl9mbGFncywKICAgICBpZiAoYyA9PSBJbmJyYWNlKSB7CiAJaW5icmFjZSA9IDE7CiAJcysrOwor CisgICAgICAgIC8qIFNob3J0LXBhdGggZm9yIHRoZSBmdW5jdGlvbi1ydW5uaW5nIHN1YnN0aXR1 dGlvbiAke3xmdW5jO30KKyAgICAgICAgICogVGhlIGZ1bmN0aW9uIG5hbWUgaXMgZXh0cmFjdGVk IGFuZCBjYWxsZWQsIGFuZCB0aGUKKyAgICAgICAgICogc3Vic3RpdHV0aW9uIGFzc2lnbmVkLiBU aGVyZSdzIG5vICguLi4pLWZsYWdzIHByb2Nlc3NpbmcsCisgICAgICAgICAqIGkuZS4gbm8gJHt8 KFUpZnVuYzt9LCBiZWNhdXNlIGl0IGxvb2tzIHF1aXRlIGF3ZnVsIGFuZAorICAgICAgICAgKiBh bHNvIHJlcXVpcmVzIGEgY2hhbmdlIHRvIHRoZSBtYW51YWwsIHBhcnQgYWJvdXQgdGhlCisgICAg ICAgICAqIHN1YnN0aXR1dGlvbiBvcmRlci4gVXNlICR7KFUpJHt8ZnVuYzt9fSBpbnN0ZWFkLCBp dCBsb29rcworICAgICAgICAgKiBjbGVhbmVyLiAqLworICAgICAgICBpZiAoICgob3V0YnJhY2Vw PXN0cmNocihzLE91dGJyYWNlKSkgfHwKKyAgICAgICAgICAgICAob3V0YnJhY2VwPXN0cmNocihz LCd9JykpKSAmJgorICAgICAgICAgICAgICAgIChzWzBdID09IEJhciB8fCBzWzBdID09ICd8Jykg JiYKKyAgICAgICAgICAgICAgICAgICAgb3V0YnJhY2VwWy0xXSA9PSAnOycgKQorICAgICAgICB7 CisgICAgICAgICAgICBycGx5ZnVuYyA9IDE7CisgICAgICAgICAgICBjbWRhcmcgPSBkdXBzdHJw ZngocysxLCBvdXRicmFjZXAtcy0yKTsKKyAgICAgICAgICAgIHM9b3V0YnJhY2VwOworCisgICAg ICAgICAgICBIYXNoTm9kZSBobiA9IE5VTEw7CisgICAgICAgICAgICBpZiggKGhuID0gc2hmdW5j dGFiLT5nZXRub2RlKHNoZnVuY3RhYiwgY21kYXJnKSkgKSB7CisgICAgICAgICAgICAgICAgLyog RXhlY3V0ZSB0aGUgc2hlbGwgZnVuY3Rpb24gKi8KKyAgICAgICAgICAgICAgICBkb3NoZnVuYygo U2hmdW5jKSBobiwgTlVMTCwgMSk7CisgICAgICAgICAgICAgICAgdmFsID0gZ2V0c3BhcmFtKCJS RVBMWSIpOworICAgICAgICAgICAgICAgIGlmICh2YWwpCisgICAgICAgICAgICAgICAgICAgIHZ1 bnNldCA9IDA7CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHZ1 bnNldCA9IDE7CisgICAgICAgICAgICAgICAgICAgIHZhbCA9IGR1cHN0cmluZygiIik7CisgICAg ICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB6ZXJy KCJubyBzdWNoIGZ1bmN0aW9uOiAlcyIsIGNtZGFyZyk7CisgICAgICAgICAgICAgICAgcmV0dXJu IE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmZXRjaF9uZWVkZWQgPSAwOworICAg ICAgICB9CisKIAkvKgogCSAqIEluIGtzaCBlbXVsYXRpb24gYSBsZWFkaW5nIGAhJyBpcyBhIHNw ZWNpYWwgZmxhZyB3b3JraW5nCiAJICogc29ydCBvZiBsaWtlIG91ciAoaykuCkBAIC0yNTE5LDcg KzI1NjQsMTEgQEAgcGFyYW1zdWJzdChMaW5rTGlzdCBsLCBMaW5rTm9kZSBuLCBjaGFyICoqc3Ry LCBpbnQgcXQsIGludCBwZl9mbGFncywKIAkJCSAgICAgc2NhbmZsYWdzKSkgfHwKIAkgICAgKHYt PnBtICYmICh2LT5wbS0+bm9kZS5mbGFncyAmIFBNX1VOU0VUKSkgfHwKIAkgICAgKHYtPmZsYWdz ICYgVkFMRkxBR19FTVBUWSkpCi0JICAgIHZ1bnNldCA9IDE7CisgICAgICAgIHsKKyAgICAgICAg ICAgIGlmICghcnBseWZ1bmMpIHsKKyAgICAgICAgICAgICAgICB2dW5zZXQgPSAxOworICAgICAg ICAgICAgfQorICAgICAgICB9CiAKIAlpZiAod2FudHQpIHsKIAkgICAgLyoKLS0gCjIuMjEuMAoK --00000000000052ec0f0591d7ddcd--