git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Moumita <dhar61595@gmail.com>
To: git@vger.kernel.org
Cc: Moumita <dhar61595@gmail.com>, "Johannes Sixt" <j6t@kdbg.org>,
	"Eric Sunshine" <sunshine@sunshineco.com>,
	"Junio C Hamano" <gitster@pobox.com>
Subject: [PATCH v7 0/1] Updated the word diff regex for Bash scripts
Date: Fri, 16 May 2025 20:15:11 +0530	[thread overview]
Message-ID: <20250516144515.49514-1-dhar61595@gmail.com> (raw)
In-Reply-To: <20250511141101.18450-1-dhar61595@gmail.com>

I cleaned up the parameter expansion regexes to avoid matching single-character operators like `:` or `#` that are already tokenized. 
I also removed the `:[0-9]+(:[0-9]+)?` pattern, which didn’t have a clear use case.
Variable matching now supports `$1`, `$2`, etc., not just `$foo`, by relaxing 
the first character requirement after the `$`. Also I removed the '?' after the second 
character of double character operators.
There are two test files in t/4018 which test the capturing of the complete line in the hunk header in the cases of both
posix style functions and bash style functions.



Moumita Dhar (1):
  userdiff: extend Bash pattern to cover more shell function forms

 .../bash-bashism-style-complete-line-capture  |  4 +++
 .../bash-posix-style-complete-line-capture    |  4 +++
 .../bash-posix-style-single-command-function  |  3 ++
 t/t4034-diff-words.sh                         |  1 +
 t/t4034/bash/expect                           | 36 +++++++++++++++++++
 t/t4034/bash/post                             | 31 ++++++++++++++++
 t/t4034/bash/pre                              | 31 ++++++++++++++++
 userdiff.c                                    | 26 +++++++++-----
 8 files changed, 128 insertions(+), 8 deletions(-)
 create mode 100644 t/t4018/bash-bashism-style-complete-line-capture
 create mode 100644 t/t4018/bash-posix-style-complete-line-capture
 create mode 100644 t/t4018/bash-posix-style-single-command-function
 create mode 100644 t/t4034/bash/expect
 create mode 100644 t/t4034/bash/post
 create mode 100644 t/t4034/bash/pre

Range-diff against v6:
1:  464cb8a1eb ! 1:  314ac45fa2 userdiff: extend Bash pattern to cover more shell function forms
    @@ Commit message
     
         Signed-off-by: Moumita Dhar <dhar61595@gmail.com>
     
    - ## t/t4018/bash-bashism-style-multiline-function (new) ##
    + ## t/t4018/bash-bashism-style-complete-line-capture (new) ##
     @@
    -+function RIGHT \
    -+{    
    ++function myfunc # RIGHT
    ++{
     +    echo 'ChangeMe'
     +}
     
    - ## t/t4018/bash-hunk-header-complete-line-capture (new) ##
    + ## t/t4018/bash-posix-style-complete-line-capture (new) ##
     @@
     +func() { # RIGHT
     +
     +    ChangeMe
    -+}
    -
    - ## t/t4018/bash-posix-style-multiline-function (new) ##
    -@@
    -+RIGHT() \
    -+{
    -+    ChangeMe
     +}
     
      ## t/t4018/bash-posix-style-single-command-function (new) ##
    @@ t/t4034/bash/expect (new)
     +<BOLD>index 09ac008..60ba6a2 100644<RESET>
     +<BOLD>--- a/pre<RESET>
     +<BOLD>+++ b/post<RESET>
    -+<CYAN>@@ -1,33 +1,33 @@<RESET>
    ++<CYAN>@@ -1,31 +1,31 @@<RESET>
     +<RED>my_var<RESET><GREEN>new_var<RESET>=10
     +x=<RED>123<RESET><GREEN>456<RESET>
    -+y=<RED>3.14<RESET><GREEN>2.71<RESET>
    -+z=<RED>.5<RESET><GREEN>.75<RESET>
    ++echo <RED>$1<RESET><GREEN>$2<RESET>
     +echo <RED>$USER<RESET><GREEN>$USERNAME<RESET>
     +${<RED>HOME<RESET><GREEN>HOMEDIR<RESET>}
     +((a<RED>+<RESET><GREEN>+=<RESET>b))
    @@ t/t4034/bash/expect (new)
     +${a<RED>,<RESET><GREEN>,,<RESET>}
     +${<GREEN>!<RESET>a}
     +${a[<RED>*<RESET><GREEN>@<RESET>]}
    -+${a<RED>:2:3<RESET><GREEN>:4:6<RESET>}
     +ls <RED>-a<RESET><GREEN>-x<RESET>
    -+ls <RED>--a<RESET><GREEN>--x<RESET>
    ++ls <RED>--all<RESET><GREEN>--color<RESET>
     
      ## t/t4034/bash/post (new) ##
     @@
     +new_var=10
     +x=456
    -+y=2.71
    -+z=.75
    ++echo $2
     +echo $USERNAME
     +${HOMEDIR}
     +((a+=b))
    @@ t/t4034/bash/post (new)
     +${a,,}
     +${!a}
     +${a[@]}
    -+${a:4:6}
     +ls -x
    -+ls --x
    ++ls --color
     
      ## t/t4034/bash/pre (new) ##
     @@
     +my_var=10
     +x=123
    -+y=3.14
    -+z=.5
    ++echo $1
     +echo $USER
     +${HOME}
     +((a+b))
    @@ t/t4034/bash/pre (new)
     +${a,}
     +${a}
     +${a[*]}
    -+${a:2:3}
     +ls -a
    -+ls --a
    ++ls --all
     
      ## userdiff.c ##
     @@ userdiff.c: PATTERNS("bash",
    @@ userdiff.c: PATTERNS("bash",
     -	 "[^ \t]+"),
     +	 /* Identifiers: variable and function names */
     +	  "[a-zA-Z_][a-zA-Z0-9_]*"
    -+	 /* Numeric constants: integers and decimals */
    -+	  "|[0-9]+(\\.[0-9]*)?|[-+]?\\.[0-9]+"
     +	 /* Shell variables: $VAR, ${VAR} */
    -+	  "|\\$[a-zA-Z_][a-zA-Z0-9_]*|\\$\\{"
    -+	  /* Logical and comparison operators */
    -+	 "|\\|\\||&&|<<|>>|==|!=|<=|>="
    -+	 /* Assignment and arithmetic operators */
    -+	 "|[-+*/%&|^!=<>]=?"
    ++	  "|\\$[a-zA-Z0-9_]+|\\$\\{"
    ++	  /*Command list separators and redirection operators  */
    ++	 "|\\|\\||&&|<<|>>"
    ++	 /* Operators ending in '=' (comparison + compound assignment) */
    ++	 "|==|!=|<=|>=|[-+*/%&|^]="
     +	 /* Additional parameter expansion operators */
    -+	 "|:?=|:-|:\\+|:\\?|:|#|##|%|%%|\\^\\^?|,|,,?|!|@|:[0-9]+(:[0-9]+)?"
    ++	 "|:=|:-|:\\+|:\\?|##|%%|\\^\\^|,,"
     +	 /* Command-line options (to avoid splitting -option) */
    -+	 "|--?[a-zA-Z0-9_-]+"
    ++	 "|[-a-zA-Z0-9_]+"
     +	 /* Brackets and grouping symbols */
     +	 "|\\(|\\)|\\{|\\}|\\[|\\]"),
      PATTERNS("bibtex",
-- 
2.48.0


  parent reply	other threads:[~2025-05-16 14:46 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-02-11 11:46 [PATCH 0/1] [GSOC 2025] [Newbie] userdiff: add built-in pattern for shell scripts Moumita
2025-02-11 11:46 ` [PATCH 1/1] Added built in function recognition for shell Moumita
2025-02-15 14:37   ` Johannes Sixt
2025-02-18 15:35 ` [PATCH v2 0/1] [PATCH v2 0/1] [GSOC 2025] [Newbie] userdiff: add built-in pattern for shell scripts Moumita
2025-02-18 15:35   ` [PATCH v2 1/1] userdiff: extend Bash pattern to cover more shell function forms Moumita
2025-02-18 19:30     ` Junio C Hamano
2025-02-22 18:15       ` Johannes Sixt
2025-02-24 16:28         ` Junio C Hamano
2025-02-18 23:38     ` Junio C Hamano
2025-02-22 18:14     ` Johannes Sixt
2025-02-18 17:30   ` [PATCH v2 0/1] [PATCH v2 0/1] [GSOC 2025] [Newbie] userdiff: add built-in pattern for shell scripts Eric Sunshine
2025-03-28 20:05   ` [PATCH v3 0/1] userdiff: improve Bash function and word regex patterns Moumita
2025-03-28 20:05     ` [PATCH v3 1/1] userdiff: extend Bash pattern to cover more shell function forms Moumita
2025-03-29 19:26     ` [PATCH v3 0/1] userdiff: improve Bash function and word regex patterns Junio C Hamano
2025-03-30 12:28       ` MOUMITA DHAR
2025-03-30 13:39     ` [PATCH v4 0/1][GSOC] userdiff:Added newlines at the end of the test cases Moumita
2025-03-30 13:39       ` [PATCH v4 1/1][GSOC] userdiff: extend Bash pattern to cover more shell function forms Moumita
2025-05-02 21:27         ` Junio C Hamano
2025-05-06 16:30         ` Johannes Sixt
2025-05-10 11:37           ` MOUMITA DHAR
2025-05-10 12:40             ` Johannes Sixt
2025-05-11 12:58       ` [PATCH v5 0/1] Added the closing ")" to make sure is not unbalanced and corrected the tests for word diff Moumita
2025-05-11 12:58         ` [PATCH v5 1/1] userdiff: extend Bash pattern to cover more shell function forms Moumita
2025-05-11 13:28         ` Moumita
2025-05-11 13:28           ` Moumita
2025-05-11 13:37         ` Moumita
2025-05-11 14:11         ` [PATCH v6 0/1] Added the newline after the test in t/4018 Moumita
2025-05-11 14:11           ` [PATCH v6 1/1] userdiff: extend Bash pattern to cover more shell function forms Moumita
2025-05-13 18:50             ` Junio C Hamano
2025-05-14  6:33               ` MOUMITA DHAR
2025-05-16  7:25             ` Johannes Sixt
2025-05-17 13:09               ` Junio C Hamano
2025-05-18  7:41                 ` Johannes Sixt
2025-05-16 14:45           ` Moumita [this message]
2025-05-16 14:45             ` [PATCH v7 " Moumita
2025-05-16 17:45               ` Johannes Sixt
2025-05-16 21:56                 ` Junio C Hamano

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20250516144515.49514-1-dhar61595@gmail.com \
    --to=dhar61595@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=j6t@kdbg.org \
    --cc=sunshine@sunshineco.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).