Message ID | pull.866.git.git.1602062726316.gitgitgadget@gmail.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | userdiff: expand detected chunk headers for css | expand |
Am 07.10.20 um 11:25 schrieb Sohom Datta via GitGitGadget: > From: Sohom <sohom.datta@learner.manipal.edu> > > Added support for classes, ids, :root selectors s/Added/Add/ since we prefer this sentence in imperative mood. > as well as @-based statements (ex: @page, @media > and @keyframes ). > > Also added tests for the same. Ditto, or just drop this sentence. > > Signed-off-by: Sohom Datta <sohom.datta@learner.manipal.edu> > --- > userdiff: Expand detected chunk headers for css > > Currently, the regex used for the CSS builtin diff driver in git is only > able to show chunk headers for lines that start with a number, a letter > or an underscore. > > However, the regex fails to detect classes (starts with a .), ids > (starts with a #), :root and attribute-value based selectors (for > example [class*="col-"]), as well as @based block-level statements like > @page,@keyframes and @media since all of them, start with a special > character. This text would have made a very good introductory part of the commit message, but since it is after the three-dash separator, it is ignored. The patch text looks good. > > I've modified the chunk header CSS regex so that it is able to detect > the statements above and add them to the chunk header. > > Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-866%2Fsohomdatta1%2Fcss-userdiff-fix-test-v1 > Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-866/sohomdatta1/css-userdiff-fix-test-v1 > Pull-Request: https://github.com/git/git/pull/866 > > t/t4018/css-attribute-value-selector | 4 ++++ > t/t4018/css-block-level-@-statements | 10 ++++++++++ > t/t4018/css-class-selector | 4 ++++ > t/t4018/css-id-selector | 4 ++++ > t/t4018/css-root-selector | 4 ++++ > userdiff.c | 2 +- > 6 files changed, 27 insertions(+), 1 deletion(-) > create mode 100644 t/t4018/css-attribute-value-selector > create mode 100644 t/t4018/css-block-level-@-statements > create mode 100644 t/t4018/css-class-selector > create mode 100644 t/t4018/css-id-selector > create mode 100644 t/t4018/css-root-selector > > diff --git a/t/t4018/css-attribute-value-selector b/t/t4018/css-attribute-value-selector > new file mode 100644 > index 0000000000..918256b20c > --- /dev/null > +++ b/t/t4018/css-attribute-value-selector > @@ -0,0 +1,4 @@ > +[class*="RIGHT"] { > + background : #000; > + border : 10px ChangeMe #C6C6C6; > +} > diff --git a/t/t4018/css-block-level-@-statements b/t/t4018/css-block-level-@-statements > new file mode 100644 > index 0000000000..d6755f2f3d > --- /dev/null > +++ b/t/t4018/css-block-level-@-statements > @@ -0,0 +1,10 @@ > +@keyframes RIGHT { > + from { > + background : #000; > + border : 10px ChangeMe #C6C6C6; > + } > + to { > + background : #fff; > + border : 10px solid #C6C6C6; > + } > +} > diff --git a/t/t4018/css-class-selector b/t/t4018/css-class-selector > new file mode 100644 > index 0000000000..f790a0062f > --- /dev/null > +++ b/t/t4018/css-class-selector > @@ -0,0 +1,4 @@ > +.RIGHT { > + background : #000; > + border : 10px ChangeMe #C6C6C6; > +} > diff --git a/t/t4018/css-id-selector b/t/t4018/css-id-selector > new file mode 100644 > index 0000000000..17c5111052 > --- /dev/null > +++ b/t/t4018/css-id-selector > @@ -0,0 +1,4 @@ > +#RIGHT { > + background : #000; > + border : 10px ChangeMe #C6C6C6; > +} > diff --git a/t/t4018/css-root-selector b/t/t4018/css-root-selector > new file mode 100644 > index 0000000000..22b958e369 > --- /dev/null > +++ b/t/t4018/css-root-selector > @@ -0,0 +1,4 @@ > +:RIGHT { > + background : #000; > + border : 10px ChangeMe #C6C6C6; > +} > diff --git a/userdiff.c b/userdiff.c > index fde02f225b..49c9771891 100644 > --- a/userdiff.c > +++ b/userdiff.c > @@ -200,7 +200,7 @@ PATTERNS("csharp", > "|[-+*/<>%&^|=!]=|--|\\+\\+|<<=?|>>=?|&&|\\|\\||::|->"), > IPATTERN("css", > "![:;][[:space:]]*$\n" > - "^[_a-z0-9].*$", > + "^(([_a-z0-9]|[:[@.#][_a-z0-9]).*)$", > /* -- */ > /* > * This regex comes from W3C CSS specs. Should theoretically also > > base-commit: d98273ba77e1ab9ec755576bc86c716a97bf59d7 >
"Sohom Datta via GitGitGadget" <gitgitgadget@gmail.com> writes: > From: Sohom <sohom.datta@learner.manipal.edu> > > Added support for classes, ids, :root selectors > as well as @-based statements (ex: @page, @media > and @keyframes ). > > Also added tests for the same. > > Signed-off-by: Sohom Datta <sohom.datta@learner.manipal.edu> > --- > userdiff: Expand detected chunk headers for css > > Currently, the regex used for the CSS builtin diff driver in git is only > able to show chunk headers for lines that start with a number, a letter > or an underscore. > > However, the regex fails to detect classes (starts with a .), ids > (starts with a #), :root and attribute-value based selectors (for > example [class*="col-"]), as well as @based block-level statements like > @page,@keyframes and @media since all of them, start with a special > character. The above two would be much better beginning of the log message for this change modulo a few nits. - We first explain what the current system does in the present tense. "Currently, " at the beginning is a pure noise. - And we point out what may be lacking (which you did a very good job in the second paragraph). - And finally, we write in imperative mood to give an order to the codebase to "become like so." or an order to the patch monkey to "make the codebase like so." As the last paragraph to follow the two paragraphs, something like Allow the selectors to begin with these special characters. would be sufficient. > - "^[_a-z0-9].*$", > + "^(([_a-z0-9]|[:[@.#][_a-z0-9]).*)$", As we seem to allow ? (i.e. zero or one) in the patterns, it probably makes it easier to read to spell the above like this instead? - "^[_a-z0-9].*$", + "^[:[@.#]?[_a-z0-9].*$"
diff --git a/t/t4018/css-attribute-value-selector b/t/t4018/css-attribute-value-selector new file mode 100644 index 0000000000..918256b20c --- /dev/null +++ b/t/t4018/css-attribute-value-selector @@ -0,0 +1,4 @@ +[class*="RIGHT"] { + background : #000; + border : 10px ChangeMe #C6C6C6; +} diff --git a/t/t4018/css-block-level-@-statements b/t/t4018/css-block-level-@-statements new file mode 100644 index 0000000000..d6755f2f3d --- /dev/null +++ b/t/t4018/css-block-level-@-statements @@ -0,0 +1,10 @@ +@keyframes RIGHT { + from { + background : #000; + border : 10px ChangeMe #C6C6C6; + } + to { + background : #fff; + border : 10px solid #C6C6C6; + } +} diff --git a/t/t4018/css-class-selector b/t/t4018/css-class-selector new file mode 100644 index 0000000000..f790a0062f --- /dev/null +++ b/t/t4018/css-class-selector @@ -0,0 +1,4 @@ +.RIGHT { + background : #000; + border : 10px ChangeMe #C6C6C6; +} diff --git a/t/t4018/css-id-selector b/t/t4018/css-id-selector new file mode 100644 index 0000000000..17c5111052 --- /dev/null +++ b/t/t4018/css-id-selector @@ -0,0 +1,4 @@ +#RIGHT { + background : #000; + border : 10px ChangeMe #C6C6C6; +} diff --git a/t/t4018/css-root-selector b/t/t4018/css-root-selector new file mode 100644 index 0000000000..22b958e369 --- /dev/null +++ b/t/t4018/css-root-selector @@ -0,0 +1,4 @@ +:RIGHT { + background : #000; + border : 10px ChangeMe #C6C6C6; +} diff --git a/userdiff.c b/userdiff.c index fde02f225b..49c9771891 100644 --- a/userdiff.c +++ b/userdiff.c @@ -200,7 +200,7 @@ PATTERNS("csharp", "|[-+*/<>%&^|=!]=|--|\\+\\+|<<=?|>>=?|&&|\\|\\||::|->"), IPATTERN("css", "![:;][[:space:]]*$\n" - "^[_a-z0-9].*$", + "^(([_a-z0-9]|[:[@.#][_a-z0-9]).*)$", /* -- */ /* * This regex comes from W3C CSS specs. Should theoretically also