From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Yuri Khan Newsgroups: gmane.emacs.devel Subject: Re: Regexps and strings once again Date: Mon, 15 Sep 2014 08:38:04 +0700 Message-ID: References: NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 X-Trace: ger.gmane.org 1410745118 4854 80.91.229.3 (15 Sep 2014 01:38:38 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Mon, 15 Sep 2014 01:38:38 +0000 (UTC) To: Emacs developers Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Mon Sep 15 03:38:31 2014 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1XTLFN-0001En-8k for ged-emacs-devel@m.gmane.org; Mon, 15 Sep 2014 03:38:29 +0200 Original-Received: from localhost ([::1]:56770 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XTLFM-0002cz-QR for ged-emacs-devel@m.gmane.org; Sun, 14 Sep 2014 21:38:28 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:55783) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XTLF5-0002cr-12 for emacs-devel@gnu.org; Sun, 14 Sep 2014 21:38:16 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XTLEz-0003K0-P3 for emacs-devel@gnu.org; Sun, 14 Sep 2014 21:38:10 -0400 Original-Received: from mail-ig0-x236.google.com ([2607:f8b0:4001:c05::236]:63453) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XTLEz-0003Ie-Jo for emacs-devel@gnu.org; Sun, 14 Sep 2014 21:38:05 -0400 Original-Received: by mail-ig0-f182.google.com with SMTP id h18so3206331igc.3 for ; Sun, 14 Sep 2014 18:38:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:in-reply-to:references:date:message-id:subject :from:to:content-type; bh=Nmo8Y6ECsZ/Fstxo5PFdm5GNmpZ/BrQCsKOtyAl05mA=; b=FEZJPSn7gtF5tq048b9k5P+299RFW4I6Vij7VhQRtzK+67wvpzI5SQdsMU8TcsyDBa y9iGQcF6xd6HrPS00h0HZ7CECATDmqU6kJiV/iZrpnk3AJPFmXZewN6Uf50TTS13+cEJ lRPNFh4+NVCeGBPIfD1vghlxM4IY2Ncab9C/qSXaR8uQ14i1IFXC4q/AvIZr/SNflPS8 YG+Ji9+KFhjttkgX1ngC6C0V5LU/tMDnySAqpdLVxyQBBdFZqx9CpzpV2z6Au4edOQr5 0K8ABHCv/fJbFTTxBbYQYqh15c+x7FKnc8Lknae78nh/aSpqIXEexZByB7hr+b8Eu4AP jmLA== X-Received: by 10.42.101.77 with SMTP id d13mr23949370ico.53.1410745084209; Sun, 14 Sep 2014 18:38:04 -0700 (PDT) Original-Received: by 10.107.164.194 with HTTP; Sun, 14 Sep 2014 18:38:04 -0700 (PDT) In-Reply-To: X-Google-Sender-Auth: XXiqIfQta93SwYCkRMDiCyg1CuY X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2607:f8b0:4001:c05::236 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:174305 Archived-At: On Mon, Sep 15, 2014 at 6:27 AM, Lars Magne Ingebrigtsen wrote: > I wrote the function as taking a regexp. And I find what I'm doing > wrong 90% of the time when using it is that I expect an exact match, but > instead I'm getting all matching nodes. > 1) New Special Syntax > (dom-by-id dom #/I (can)?haz new syntax/) > 2) Cheat; i.e., introduce a convention > (dom-by-id dom (regexp "I \\(couldn't\\)?haz new syntax")) 3) Adopt a convention that matches are literal by default; for regexp matching, start and end the pattern with a slash. (dom-by-id dom "/Some *regex+/")) (dom-by-id dom "Some* literal|string") 4) Mark literal patterns: have a function that turns a string into a regex, by quoting every metacharacter. (dom-by-id dom "Some *regex+")) (dom-by-id dom (literal "Some* literal|string")) 5) Allow the pattern to be an array or list of literal strings. For a single literal string, use a singleton array/list. (dom-by-id dom "Some *regex+")) (dom-by-id dom ["Some* literal|string"]) (dom-by-id dom '("Some* literal|string"))