From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on starla X-Spam-Level: X-Spam-Status: No, score=-1.1 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,MAILING_LIST_MULTI,SPF_HELO_PASS,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 Received: from nue.mailmanlists.eu (nue.mailmanlists.eu [94.130.110.93]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by dcvr.yhbt.net (Postfix) with ESMTPS id 69F3C1F4BE for ; Mon, 14 Oct 2024 19:25:00 +0000 (UTC) Authentication-Results: dcvr.yhbt.net; dkim=pass (1024-bit key; unprotected) header.d=ml.ruby-lang.org header.i=@ml.ruby-lang.org header.a=rsa-sha256 header.s=mail header.b=2uFXOKuX; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=ruby-lang.org header.i=@ruby-lang.org header.a=rsa-sha256 header.s=s1 header.b=g7SBfrJK; dkim-atps=neutral DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ml.ruby-lang.org; s=mail; t=1728933897; bh=QeMgpCPtVT7KAxOQTyGAl4CzniI3DRcTrIZj5CQJQlk=; h=Date:References:To:Reply-To:Subject:List-Id:List-Archive: List-Help:List-Owner:List-Post:List-Subscribe:List-Unsubscribe: From:Cc:From; b=2uFXOKuXW6bHcl+T+muTjhkCK0bEVukAgvjWnxEuq1bSV55m0Fs+j14UWdle+hDmw 8pR4lC74FR3vN4BU325vXU3WU/Pz8C2kgVLlElozPDi8EduDQbBYMa5ymnCAVbMXW8 lIztzMzJVMTWKwJD6UZs6s2i9yzih1uAUvN5OtL4= Received: from nue.mailmanlists.eu (localhost [IPv6:::1]) by nue.mailmanlists.eu (Postfix) with ESMTP id 6F98D44045 for ; Mon, 14 Oct 2024 19:24:57 +0000 (UTC) Authentication-Results: nue.mailmanlists.eu; dkim=pass (2048-bit key; unprotected) header.d=ruby-lang.org header.i=@ruby-lang.org header.a=rsa-sha256 header.s=s1 header.b=g7SBfrJK; dkim-atps=neutral Received: from s.wrqvtzvf.outbound-mail.sendgrid.net (s.wrqvtzvf.outbound-mail.sendgrid.net [149.72.126.143]) by nue.mailmanlists.eu (Postfix) with ESMTPS id 52B2F43FF4 for ; Mon, 14 Oct 2024 19:24:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ruby-lang.org; h=from:references:subject:mime-version:content-type: content-transfer-encoding:list-id:to:cc:content-type:from:subject:to; s=s1; bh=G46FkMh7mxsKzQGTn7ZU9mSjaS2Q6zYXmIEb4Ref0wc=; b=g7SBfrJKBol7dLBkJJ+GrjurEwCgUxKR/cRNWKw6/ZbrPo74CYKTQxbgBprRy5e1mPdF CAML27LmcyIGeOUhAC1YtE/o1SpQt2bKT7Ez3xCAXg8MYqubGRNaevdhU0IOXKjKjXPV6K 4cyN1xwx/neHAuPGTWn2XS6hmg0rhmu0bPMNo4qk4FK44ru0/GB9frgoUzU7QcLLnM4yxD 2JopNTtuT5kKkmQOAjZrH57Zch5+H9njQCt2x+fmFEF3ZoVvVpcRAgmKoIfbgGh1hg8HnC hRzcqGceK9MrPGUdztC0kQXIWXz0/izyHiPac9c8sEbW1WiQbbexv+oZ/dWnK0+A== Received: by recvd-55fc7fd858-8mxwb with SMTP id recvd-55fc7fd858-8mxwb-1-670D6FFB-1A 2024-10-14 19:24:43.77936958 +0000 UTC m=+2770059.619003536 Received: from herokuapp.com (unknown) by geopod-ismtpd-23 (SG) with ESMTP id foyhaD06Sxi3JLXdhwZlgw for ; Mon, 14 Oct 2024 19:24:43.641 +0000 (UTC) Date: Mon, 14 Oct 2024 19:24:43 +0000 (UTC) Message-ID: References: Mime-Version: 1.0 X-Redmine-Project: ruby-master X-Redmine-Issue-Tracker: Feature X-Redmine-Issue-Id: 20792 X-Redmine-Issue-Author: kddnewton X-Redmine-Issue-Priority: Normal X-Redmine-Sender: Eregon 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-Redmine-MailingListIntegration-Message-Ids: 96161 X-SG-EID: =?us-ascii?Q?u001=2EByjZWvxTCjdoV8K03xEuhE7KqN4thWULFLM7+oH78KY30oYB3qFthsDpL?= =?us-ascii?Q?4w4cbYa3ttBh8bAHPOnE=2FkzPba67JNu7Lnrked2?= =?us-ascii?Q?O7K9VQ=2FJax0hyL5e4HdHWbuCb2mePIeM2w=2FWDqe?= =?us-ascii?Q?btcBus+Dro9HLN3vQfxb=2FoSWwbKNQAM5nz6Hw6F?= =?us-ascii?Q?D3=2FCEq0bRwRzD6Ro2L0k1TJjqHA5AD1MSvS84i=2F?= =?us-ascii?Q?kqqa3JMVFiH59LYTrCOyowfzX=2F5aRmKRlyt+4Ac?= =?us-ascii?Q?sYS7InM=2F7ckhEsTf0Nstp=2FNhVA=3D=3D?= To: ruby-core@ml.ruby-lang.org X-Entity-ID: u001.I8uzylDtAfgbeCOeLBYDww== Message-ID-Hash: CG7JTNJOGVR7JWITQQL6I7QW65HUQHTA X-Message-ID-Hash: CG7JTNJOGVR7JWITQQL6I7QW65HUQHTA X-MailFrom: bounces+313651-b711-ruby-core=ml.ruby-lang.org@em5188.ruby-lang.org X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.9 Precedence: list Reply-To: Ruby developers Subject: [ruby-core:119526] [Ruby master Feature#20792] String#forcible_encoding? List-Id: Ruby developers Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: "Eregon (Benoit Daloze) via ruby-core" Cc: "Eregon (Benoit Daloze)" Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Issue #20792 has been updated by Eregon (Benoit Daloze). > I think the advantage right now is that it doesn't require a mutable string to check. `with_encoding` would always be the same as `.dup.force_encoding` (except slightly more efficient). It doesn't mutate the receiver. For the description use case you could then use `valid_encoding?` like in https://bugs.ruby-lang.org/issues/20792#note-3 That might compute the code range (if not already computed), but that's needed to know if the encoding is valid anyway, and interestingly it will remember this coderange for further operations on that new String. Using `forcible_encoding?` it can't remember the code range and so it would have to be recomputed on `force_encoding` or the next operation needing it. ---------------------------------------- Feature #20792: String#forcible_encoding? https://bugs.ruby-lang.org/issues/20792#change-110141 * Author: kddnewton (Kevin Newton) * Status: Open ---------------------------------------- I would like to add a method to String called `forcible_encoding?(encoding)`. This would return true or false depending on whether the receiver can be forced into the given encoding without breaking the string. It would effectively be an alias for: ```ruby def forcible_encoding?(enc) original = encoding result = force_encoding(enc).valid_encoding? force_encoding(original) result end ``` I would like this method because there are extremely rare but possible circumstances where source files are marked as binary but contain UTF-8-encoded characters. In that case I would like to check if it's possible to cleanly force UTF-8 before actually doing it. The code I'm trying to replace is here: https://github.com/ruby/prism/blob/d6e9b8de36b4d18debfe36e4545116539964ceeb/lib/prism/parse_result.rb#L15-L30. The pull request for the code is here: https://github.com/ruby/ruby/pull/11851. -- https://bugs.ruby-lang.org/ ______________________________________________ ruby-core mailing list -- ruby-core@ml.ruby-lang.org To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/