Message ID | 20240324174423.55508-1-utsavp0213@gmail.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | userdiff: add builtin driver for typescript language | expand |
On Sun, Mar 24, 2024 at 11:14:23PM +0530, Utsav Parmar wrote: > There are no implementation or test changes in this patch. It simply relies on the git formatting rather than the IDE git UI formatting that I believe messed up in the parent email. Commit messages are supposed to be at most 72 characters wide, so please reflow the commit message to match that limit. Furthermore, when you send an updated patch, please make sure to increment the patch version so that folks have an easier time to follow the evolution of your patch. This can be done by passing e.g. `-v2` to git-format-patch(1) or git-send-email(1). Other than that I don't have a lot to say about this patch and will hope for somebody else to review the TypeScript-related things. Thanks! Patrick > Signed-off-by: Utsav Parmar <utsavp0213@gmail.com> > --- > Documentation/gitattributes.txt | 2 ++ > t/t4018/typescript-arrow-function | 4 +++ > t/t4018/typescript-class-member-function | 7 +++++ > t/t4018/typescript-enum | 6 +++++ > t/t4018/typescript-function | 4 +++ > t/t4018/typescript-function-assignment | 4 +++ > t/t4018/typescript-interface | 4 +++ > t/t4018/typescript-type | 4 +++ > t/t4034-diff-words.sh | 1 + > t/t4034/typescript/expect | 33 ++++++++++++++++++++++++ > t/t4034/typescript/post | 16 ++++++++++++ > t/t4034/typescript/pre | 16 ++++++++++++ > userdiff.c | 16 ++++++++++++ > 13 files changed, 117 insertions(+) > create mode 100644 t/t4018/typescript-arrow-function > create mode 100644 t/t4018/typescript-class-member-function > create mode 100644 t/t4018/typescript-enum > create mode 100644 t/t4018/typescript-function > create mode 100644 t/t4018/typescript-function-assignment > create mode 100644 t/t4018/typescript-interface > create mode 100644 t/t4018/typescript-type > create mode 100644 t/t4034/typescript/expect > create mode 100644 t/t4034/typescript/post > create mode 100644 t/t4034/typescript/pre > > diff --git a/Documentation/gitattributes.txt b/Documentation/gitattributes.txt > index 4338d023d9..4461c41054 100644 > --- a/Documentation/gitattributes.txt > +++ b/Documentation/gitattributes.txt > @@ -902,6 +902,8 @@ patterns are available: > > - `tex` suitable for source code for LaTeX documents. > > +- `typescript` suitable for source code for TypeScript language. > + > > Customizing word diff > ^^^^^^^^^^^^^^^^^^^^^ > diff --git a/t/t4018/typescript-arrow-function b/t/t4018/typescript-arrow-function > new file mode 100644 > index 0000000000..85a3d9cd6b > --- /dev/null > +++ b/t/t4018/typescript-arrow-function > @@ -0,0 +1,4 @@ > +const RIGHT = (one) => { > + someMethodCall(); > + return ChangeMe; > +} > diff --git a/t/t4018/typescript-class-member-function b/t/t4018/typescript-class-member-function > new file mode 100644 > index 0000000000..f34b0a2bac > --- /dev/null > +++ b/t/t4018/typescript-class-member-function > @@ -0,0 +1,7 @@ > +class Test { > + var one; > + function RIGHT(two: string) { > + someMethodCall(); > + return ChangeMe; > + } > +} > diff --git a/t/t4018/typescript-enum b/t/t4018/typescript-enum > new file mode 100644 > index 0000000000..8c045a45ec > --- /dev/null > +++ b/t/t4018/typescript-enum > @@ -0,0 +1,6 @@ > +enum RIGHT { > + ONE = 1, > + TWO, > + THREE, > + ChangeMe > +} > diff --git a/t/t4018/typescript-function b/t/t4018/typescript-function > new file mode 100644 > index 0000000000..62cf63f669 > --- /dev/null > +++ b/t/t4018/typescript-function > @@ -0,0 +1,4 @@ > +function RIGHT<Type implements AnotherType>(one: number): Type { > + someMethodCall(); > + return ChangeMe; > +} > diff --git a/t/t4018/typescript-function-assignment b/t/t4018/typescript-function-assignment > new file mode 100644 > index 0000000000..49c528713e > --- /dev/null > +++ b/t/t4018/typescript-function-assignment > @@ -0,0 +1,4 @@ > +const RIGHT = function(one: number): Type { > + someMethodCall(); > + return ChangeMe; > +} > diff --git a/t/t4018/typescript-interface b/t/t4018/typescript-interface > new file mode 100644 > index 0000000000..6f3665c2af > --- /dev/null > +++ b/t/t4018/typescript-interface > @@ -0,0 +1,4 @@ > +interface RIGHT { > + one?: string; > + [propName: ChangeMe]: any; > +} > \ No newline at end of file > diff --git a/t/t4018/typescript-type b/t/t4018/typescript-type > new file mode 100644 > index 0000000000..e1bb2d8371 > --- /dev/null > +++ b/t/t4018/typescript-type > @@ -0,0 +1,4 @@ > +type RIGHT = { > + one: number, > + ChangeMe: CustomType > +} > \ No newline at end of file > diff --git a/t/t4034-diff-words.sh b/t/t4034-diff-words.sh > index 74586f3813..4e3cf415c2 100755 > --- a/t/t4034-diff-words.sh > +++ b/t/t4034-diff-words.sh > @@ -338,6 +338,7 @@ test_language_driver python > 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 && > diff --git a/t/t4034/typescript/expect b/t/t4034/typescript/expect > new file mode 100644 > index 0000000000..19605fec4d > --- /dev/null > +++ b/t/t4034/typescript/expect > @@ -0,0 +1,33 @@ > +<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 > diff --git a/t/t4034/typescript/post b/t/t4034/typescript/post > new file mode 100644 > index 0000000000..b1b03a7666 > --- /dev/null > +++ b/t/t4034/typescript/post > @@ -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 > diff --git a/t/t4034/typescript/pre b/t/t4034/typescript/pre > new file mode 100644 > index 0000000000..13a0b2138c > --- /dev/null > +++ b/t/t4034/typescript/pre > @@ -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 > diff --git a/userdiff.c b/userdiff.c > index 92ef649c99..dbb5d7c072 100644 > --- a/userdiff.c > +++ b/userdiff.c > @@ -297,6 +297,22 @@ PATTERNS("scheme", > "|([^][)(}{[ \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 > -- > 2.34.1 > >
Utsav Parmar <utsavp0213@gmail.com> writes: Hello, > There are no implementation or test changes in this patch. It simply relies on the git formatting rather than the IDE git UI formatting that I believe messed up in the parent email. > I think Patrick mentioned this already, but seems like the new patch too needs to be wrapped to 72 chars. Also when we send a follow up patch, we version it accordingly like "[PATCH v2]". I would suggest reading 'Documentation/MyFirstContribution.txt'.
diff --git a/Documentation/gitattributes.txt b/Documentation/gitattributes.txt index 4338d023d9..4461c41054 100644 --- a/Documentation/gitattributes.txt +++ b/Documentation/gitattributes.txt @@ -902,6 +902,8 @@ patterns are available: - `tex` suitable for source code for LaTeX documents. +- `typescript` suitable for source code for TypeScript language. + Customizing word diff ^^^^^^^^^^^^^^^^^^^^^ diff --git a/t/t4018/typescript-arrow-function b/t/t4018/typescript-arrow-function new file mode 100644 index 0000000000..85a3d9cd6b --- /dev/null +++ b/t/t4018/typescript-arrow-function @@ -0,0 +1,4 @@ +const RIGHT = (one) => { + someMethodCall(); + return ChangeMe; +} diff --git a/t/t4018/typescript-class-member-function b/t/t4018/typescript-class-member-function new file mode 100644 index 0000000000..f34b0a2bac --- /dev/null +++ b/t/t4018/typescript-class-member-function @@ -0,0 +1,7 @@ +class Test { + var one; + function RIGHT(two: string) { + someMethodCall(); + return ChangeMe; + } +} diff --git a/t/t4018/typescript-enum b/t/t4018/typescript-enum new file mode 100644 index 0000000000..8c045a45ec --- /dev/null +++ b/t/t4018/typescript-enum @@ -0,0 +1,6 @@ +enum RIGHT { + ONE = 1, + TWO, + THREE, + ChangeMe +} diff --git a/t/t4018/typescript-function b/t/t4018/typescript-function new file mode 100644 index 0000000000..62cf63f669 --- /dev/null +++ b/t/t4018/typescript-function @@ -0,0 +1,4 @@ +function RIGHT<Type implements AnotherType>(one: number): Type { + someMethodCall(); + return ChangeMe; +} diff --git a/t/t4018/typescript-function-assignment b/t/t4018/typescript-function-assignment new file mode 100644 index 0000000000..49c528713e --- /dev/null +++ b/t/t4018/typescript-function-assignment @@ -0,0 +1,4 @@ +const RIGHT = function(one: number): Type { + someMethodCall(); + return ChangeMe; +} diff --git a/t/t4018/typescript-interface b/t/t4018/typescript-interface new file mode 100644 index 0000000000..6f3665c2af --- /dev/null +++ b/t/t4018/typescript-interface @@ -0,0 +1,4 @@ +interface RIGHT { + one?: string; + [propName: ChangeMe]: any; +} \ No newline at end of file diff --git a/t/t4018/typescript-type b/t/t4018/typescript-type new file mode 100644 index 0000000000..e1bb2d8371 --- /dev/null +++ b/t/t4018/typescript-type @@ -0,0 +1,4 @@ +type RIGHT = { + one: number, + ChangeMe: CustomType +} \ No newline at end of file diff --git a/t/t4034-diff-words.sh b/t/t4034-diff-words.sh index 74586f3813..4e3cf415c2 100755 --- a/t/t4034-diff-words.sh +++ b/t/t4034-diff-words.sh @@ -338,6 +338,7 @@ test_language_driver python 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 && diff --git a/t/t4034/typescript/expect b/t/t4034/typescript/expect new file mode 100644 index 0000000000..19605fec4d --- /dev/null +++ b/t/t4034/typescript/expect @@ -0,0 +1,33 @@ +<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 diff --git a/t/t4034/typescript/post b/t/t4034/typescript/post new file mode 100644 index 0000000000..b1b03a7666 --- /dev/null +++ b/t/t4034/typescript/post @@ -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 diff --git a/t/t4034/typescript/pre b/t/t4034/typescript/pre new file mode 100644 index 0000000000..13a0b2138c --- /dev/null +++ b/t/t4034/typescript/pre @@ -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 diff --git a/userdiff.c b/userdiff.c index 92ef649c99..dbb5d7c072 100644 --- a/userdiff.c +++ b/userdiff.c @@ -297,6 +297,22 @@ PATTERNS("scheme", "|([^][)(}{[ \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
There are no implementation or test changes in this patch. It simply relies on the git formatting rather than the IDE git UI formatting that I believe messed up in the parent email. Signed-off-by: Utsav Parmar <utsavp0213@gmail.com> --- Documentation/gitattributes.txt | 2 ++ t/t4018/typescript-arrow-function | 4 +++ t/t4018/typescript-class-member-function | 7 +++++ t/t4018/typescript-enum | 6 +++++ t/t4018/typescript-function | 4 +++ t/t4018/typescript-function-assignment | 4 +++ t/t4018/typescript-interface | 4 +++ t/t4018/typescript-type | 4 +++ t/t4034-diff-words.sh | 1 + t/t4034/typescript/expect | 33 ++++++++++++++++++++++++ t/t4034/typescript/post | 16 ++++++++++++ t/t4034/typescript/pre | 16 ++++++++++++ userdiff.c | 16 ++++++++++++ 13 files changed, 117 insertions(+) create mode 100644 t/t4018/typescript-arrow-function create mode 100644 t/t4018/typescript-class-member-function create mode 100644 t/t4018/typescript-enum create mode 100644 t/t4018/typescript-function create mode 100644 t/t4018/typescript-function-assignment create mode 100644 t/t4018/typescript-interface create mode 100644 t/t4018/typescript-type create mode 100644 t/t4034/typescript/expect create mode 100644 t/t4034/typescript/post create mode 100644 t/t4034/typescript/pre