git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Patrick Steinhardt <ps@pks.im>
To: Utsav Parmar <utsavp0213@gmail.com>
Cc: git@vger.kernel.org
Subject: Re: [GSoC][PATCH] userdiff: add funcname regex and wordregex for typescript language
Date: Thu, 21 Mar 2024 13:21:04 +0100	[thread overview]
Message-ID: <ZfwmMKLBjtYvUPUV@tanuki> (raw)
In-Reply-To: <20240319185938.243667-1-utsavp0213@gmail.com>

[-- Attachment #1: Type: text/plain, Size: 10162 bytes --]

On Wed, Mar 20, 2024 at 12:29:38AM +0530, Utsav Parmar wrote:
> This patch adds a builtin driver for typescript language supporting regex for both function name and words. Also updates the `.gitattributes.txt` to reflect this.

Please be mindful that we typically wrap commit messages at 72 columns
per line. Furthermore, we don't typically say "This patch", but rather
use an imperative style. So instead of saying "This patch adds a biultin
driver", we'd say "Add a builtin driver".

> gitattributes: add typescript language to hunk headers support
> t4034: add tests for typescript word_regex
> t4018: add tests for typescript funcname regex
> userdiff: add funcname regex and wordregex for typescript language

We don't usually provide such bulleted-list-style changes for each of
the files. In this case, it shoul be fine to say something "Add tests
and documentation for the new driver".

Last but not least, this message is missing your signoff.

I would recommend you to read "Documentation/MyFirstContribution.txt",
which explains all of this.

I can't really say much regarding the remainder of your changes given
that I'm neither familiar with "userdiff.c" nor with TypeScript. I hope
that others can chime in here.

Patrick

> ---
> Index: userdiff.c
> diff --git a/userdiff.c b/userdiff.c
> --- a/userdiff.c	(revision 2953d95d402b6bff1a59c4712f4d46f1b9ea137f)
> +++ b/userdiff.c	(revision 6724df99624834d9b7278a0bc95fa319f526a1fe)
> @@ -297,6 +297,22 @@
>  	 "|([^][)(}{[ \t])+"),
>  PATTERNS("tex", "^(\\\\((sub)*section|chapter|part)\\*{0,1}\\{.*)$",
>  	 "\\\\[a-zA-Z@]+|\\\\.|([a-zA-Z0-9]|[^\x01-\x7f])+"),
> +PATTERNS("typescript",
> +         "^[ \t]*((enum|interface|type)[ \t]+([a-zA-Z][a-zA-Z0-9]*)+.*)$\n"
> +         /* Method definitions */
> +         "^[ \t]*[a-z]+[ \t]+([A-Za-z_][A-Za-z_0-9]*)+([ \t]*=[ \t]*(function)?)?([ \t]*[A-Za-z_<>&][?&<>|.,A-Za-z_]*[ \t]*)*[ \t]*\\([^;]*$",
> +         /* -- */
> +         "[a-zA-Z_][a-zA-Z0-9_]*"
> +         /* Integers and floats */
> +         "|[-+]?[0-9]*\\.?[0-9]+([eE][-+]?[0-9]+)?"
> +         /* Binary */
> +         "|0[bB][01]+"
> +         /* Hexadecimals */
> +         "|0[xX][0-9a-fA-F]+"
> +         /* Floats starting with a decimal point */
> +         "|[-+]?([0-9]*\\.?[0-9]+|[0-9]+\\.?[0-9]*)([eE][-+]?[0-9]+)?"
> +         /* Operators */
> +         "[-+*/%&|^!=<>]=?|===|!==|<<=?|>>=?|&&|\\|\\||\\?\\?|\\+\\+|--|~"),
>  { "default", NULL, NULL, -1, { NULL, 0 } },
>  };
>  #undef PATTERNS
> Index: t/t4018/typescript-arrow-function
> diff --git a/t/t4018/typescript-arrow-function b/t/t4018/typescript-arrow-function
> new file mode 100644
> --- /dev/null	(revision b60d253ea78063d444f7131c3100388a7cdac060)
> +++ b/t/t4018/typescript-arrow-function	(revision b60d253ea78063d444f7131c3100388a7cdac060)
> @@ -0,0 +1,4 @@
> +const RIGHT = (one) => {
> +    someMethodCall();
> +    return ChangeMe;
> +}
> Index: t/t4018/typescript-class-member-function
> diff --git a/t/t4018/typescript-class-member-function b/t/t4018/typescript-class-member-function
> new file mode 100644
> --- /dev/null	(revision b60d253ea78063d444f7131c3100388a7cdac060)
> +++ b/t/t4018/typescript-class-member-function	(revision b60d253ea78063d444f7131c3100388a7cdac060)
> @@ -0,0 +1,7 @@
> +class Test {
> +	var one;
> +	function RIGHT(two: string) {
> +		someMethodCall();
> +		return ChangeMe;
> +	}
> +}
> Index: t/t4018/typescript-enum
> diff --git a/t/t4018/typescript-enum b/t/t4018/typescript-enum
> new file mode 100644
> --- /dev/null	(revision b60d253ea78063d444f7131c3100388a7cdac060)
> +++ b/t/t4018/typescript-enum	(revision b60d253ea78063d444f7131c3100388a7cdac060)
> @@ -0,0 +1,6 @@
> +enum RIGHT {
> +    ONE = 1,
> +    TWO,
> +    THREE,
> +    ChangeMe
> +}
> Index: t/t4018/typescript-function
> diff --git a/t/t4018/typescript-function b/t/t4018/typescript-function
> new file mode 100644
> --- /dev/null	(revision b60d253ea78063d444f7131c3100388a7cdac060)
> +++ b/t/t4018/typescript-function	(revision b60d253ea78063d444f7131c3100388a7cdac060)
> @@ -0,0 +1,4 @@
> +function RIGHT<Type implements AnotherType>(one: number): Type {
> +    someMethodCall();
> +    return ChangeMe;
> +}
> Index: t/t4018/typescript-function-assignment
> diff --git a/t/t4018/typescript-function-assignment b/t/t4018/typescript-function-assignment
> new file mode 100644
> --- /dev/null	(revision b60d253ea78063d444f7131c3100388a7cdac060)
> +++ b/t/t4018/typescript-function-assignment	(revision b60d253ea78063d444f7131c3100388a7cdac060)
> @@ -0,0 +1,4 @@
> +const RIGHT = function(one: number): Type {
> +    someMethodCall();
> +    return ChangeMe;
> +}
> Index: t/t4018/typescript-interface
> diff --git a/t/t4018/typescript-interface b/t/t4018/typescript-interface
> new file mode 100644
> --- /dev/null	(revision b60d253ea78063d444f7131c3100388a7cdac060)
> +++ b/t/t4018/typescript-interface	(revision b60d253ea78063d444f7131c3100388a7cdac060)
> @@ -0,0 +1,4 @@
> +interface RIGHT {
> +  one?: string;
> +  [propName: ChangeMe]: any;
> +}
> \ No newline at end of file
> Index: t/t4018/typescript-type
> diff --git a/t/t4018/typescript-type b/t/t4018/typescript-type
> new file mode 100644
> --- /dev/null	(revision b60d253ea78063d444f7131c3100388a7cdac060)
> +++ b/t/t4018/typescript-type	(revision b60d253ea78063d444f7131c3100388a7cdac060)
> @@ -0,0 +1,4 @@
> +type RIGHT = {
> +  one: number,
> +  ChangeMe: CustomType
> +}
> \ No newline at end of file
> Index: t/t4034-diff-words.sh
> diff --git a/t/t4034-diff-words.sh b/t/t4034-diff-words.sh
> --- a/t/t4034-diff-words.sh	(revision b60d253ea78063d444f7131c3100388a7cdac060)
> +++ b/t/t4034-diff-words.sh	(revision be6b88ac5ca33921af60ee42f71397011efb1806)
> @@ -338,6 +338,7 @@
>  test_language_driver ruby
>  test_language_driver scheme
>  test_language_driver tex
> +test_language_driver typescript
>  
>  test_expect_success 'word-diff with diff.sbe' '
>  	cat >pre <<-\EOF &&
> Index: t/t4034/typescript/expect
> diff --git a/t/t4034/typescript/expect b/t/t4034/typescript/expect
> new file mode 100644
> --- /dev/null	(revision be6b88ac5ca33921af60ee42f71397011efb1806)
> +++ b/t/t4034/typescript/expect	(revision be6b88ac5ca33921af60ee42f71397011efb1806)
> @@ -0,0 +1,57 @@
> +<BOLD>diff --git a/pre b/post<RESET>
> +<BOLD>index e4a51a2..9c56465 100644<RESET>
> +<BOLD>--- a/pre<RESET>
> +<BOLD>+++ b/post<RESET>
> +<CYAN>@@ -1,16 +1,16 @@<RESET>
> +log("Hello World<RED>!\n<RESET><GREEN>?<RESET>")
> +<GREEN>(<RESET>1<GREEN>) (<RESET>-1e10<GREEN>) (<RESET>0xabcdef<GREEN>) u<RESET>'<RED>x<RESET><GREEN>y<RESET>'
> +!<RED>a<RESET><GREEN>x<RESET> ~<RED>a a<RESET><GREEN>x x<RESET>++ <RED>a<RESET><GREEN>x<RESET>-- <RED>a<RESET><GREEN>x<RESET>*<RED>b a<RESET><GREEN>y x<RESET>&<RED>b
> +<RESET>
> +<RED>a<RESET><GREEN>y
> +<RESET>
> +<GREEN>x<RESET>*<RED>b a<RESET><GREEN>y x<RESET>/<RED>b a<RESET><GREEN>y x<RESET>%<RED>b
> +<RESET>
> +<RED>a<RESET><GREEN>y
> +<RESET>
> +<GREEN>x<RESET>+<RED>b a<RESET><GREEN>y x<RESET>-<RED>b
> +<RESET>
> +<RED>a<RESET><GREEN>y
> +<RESET>
> +<GREEN>x<RESET><<<RED>b a<RESET><GREEN>y x<RESET>>><RED>b
> +<RESET>
> +<RED>a<RESET><GREEN>y
> +<RESET>
> +<GREEN>x<RESET><<RED>b a<RESET><GREEN>y x<RESET><=<RED>b a<RESET><GREEN>y x<RESET>><RED>b a<RESET><GREEN>y x<RESET>>=<RED>b
> +<RESET>
> +<RED>a<RESET><GREEN>y
> +<RESET>
> +<GREEN>x<RESET>==<RED>b a<RESET><GREEN>y x<RESET>!=<RED>b
> +<RESET>
> +<RED>a<RESET><GREEN>y
> +<RESET>
> +<GREEN>x<RESET>&<RED>b
> +<RESET>
> +<RED>a<RESET><GREEN>y
> +<RESET>
> +<GREEN>x<RESET>^<RED>b
> +<RESET>
> +<RED>a<RESET><GREEN>y
> +<RESET>
> +<GREEN>x<RESET>|<RED>b
> +<RESET>
> +<RED>a<RESET><GREEN>y
> +<RESET>
> +<GREEN>x<RESET>&&<RED>b
> +<RESET>
> +<RED>a<RESET><GREEN>y
> +<RESET>
> +<GREEN>x<RESET>||<RED>b
> +<RESET>
> +<RED>a<RESET><GREEN>y
> +<RESET>
> +<GREEN>x<RESET>?<RED>b<RESET><GREEN>y<RESET>:z
> +<RED>a<RESET><GREEN>x<RESET>=<RED>b a<RESET><GREEN>y x<RESET>+=<RED>b a<RESET><GREEN>y x<RESET>-=<RED>b a<RESET><GREEN>y x<RESET>*=<RED>b a<RESET><GREEN>y x<RESET>/=<RED>b a<RESET><GREEN>y x<RESET>%=<RED>b a<RESET><GREEN>y x<RESET><<=<RED>b a<RESET><GREEN>y x<RESET>>>=<RED>b a<RESET><GREEN>y x<RESET>&=<RED>b a<RESET><GREEN>y x<RESET>^=<RED>b a<RESET><GREEN>y x<RESET>|=<RED>b
> +<RESET>
> +<RED>a<RESET><GREEN>y
> +<RESET>
> +<GREEN>x<RESET>,y
> Index: t/t4034/typescript/post
> diff --git a/t/t4034/typescript/post b/t/t4034/typescript/post
> new file mode 100644
> --- /dev/null	(revision be6b88ac5ca33921af60ee42f71397011efb1806)
> +++ b/t/t4034/typescript/post	(revision be6b88ac5ca33921af60ee42f71397011efb1806)
> @@ -0,0 +1,16 @@
> +log("Hello World?")
> +(1) (-1e10) (0xabcdef) u'y'
> +!x ~x x++ x-- x*y x&y
> +x*y x/y x%y
> +x+y x-y
> +x<<y x>>y
> +x<y x<=y x>y x>=y
> +x==y x!=y
> +x&y
> +x^y
> +x|y
> +x&&y
> +x||y
> +x?y:z
> +x=y x+=y x-=y x*=y x/=y x%=y x<<=y x>>=y x&=y x^=y x|=y
> +x,y
> Index: t/t4034/typescript/pre
> diff --git a/t/t4034/typescript/pre b/t/t4034/typescript/pre
> new file mode 100644
> --- /dev/null	(revision be6b88ac5ca33921af60ee42f71397011efb1806)
> +++ b/t/t4034/typescript/pre	(revision be6b88ac5ca33921af60ee42f71397011efb1806)
> @@ -0,0 +1,16 @@
> +log("Hello World!\n")
> +1 -1e10 0xabcdef 'x'
> +!a ~a a++ a-- a*b a&b
> +a*b a/b a%b
> +a+b a-b
> +a<<b a>>b
> +a<b a<=b a>b a>=b
> +a==b a!=b
> +a&b
> +a^b
> +a|b
> +a&&b
> +a||b
> +a?b:z
> +a=b a+=b a-=b a*=b a/=b a%=b a<<=b a>>=b a&=b a^=b a|=b
> +a,y
> Index: Documentation/gitattributes.txt
> diff --git a/Documentation/gitattributes.txt b/Documentation/gitattributes.txt
> --- a/Documentation/gitattributes.txt	(revision be6b88ac5ca33921af60ee42f71397011efb1806)
> +++ b/Documentation/gitattributes.txt	(revision 2891f81b087a3f1c89d1417c40ba576aaa30feb9)
> @@ -902,6 +902,8 @@
>  
>  - `tex` suitable for source code for LaTeX documents.
>  
> +- `typescript` suitable for source code for TypeScript language.
> +
>  
>  Customizing word diff
>  ^^^^^^^^^^^^^^^^^^^^^
> 

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

  reply	other threads:[~2024-03-21 12:21 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-03-19 18:59 [GSoC][PATCH] userdiff: add funcname regex and wordregex for typescript language Utsav Parmar
2024-03-21 12:21 ` Patrick Steinhardt [this message]
2024-03-23 15:07   ` Utsav Parmar
     [not found]   ` <CAD6u1kiaFDcyRX7-iZBb9LtoQ1F+M18UkyJuTXsQPE0YQGafmw@mail.gmail.com>
2024-03-25  7:33     ` Patrick Steinhardt
2024-03-24 17:44 ` [PATCH] userdiff: add builtin driver " Utsav Parmar
2024-03-25  7:37   ` Patrick Steinhardt
2024-03-25 17:23   ` Karthik Nayak
2024-04-04 16:38   ` [PATCH v2] " Utsav Parmar
2024-04-05 17:43     ` Junio C Hamano
2024-04-05 17:47     ` 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

  List information: http://vger.kernel.org/majordomo-info.html

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

  git send-email \
    --in-reply-to=ZfwmMKLBjtYvUPUV@tanuki \
    --to=ps@pks.im \
    --cc=git@vger.kernel.org \
    --cc=utsavp0213@gmail.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.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

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 read-only IMAP folder(s) and NNTP newsgroup(s).