Message ID | 20250331031309.94682-1-lucasseikioshiro@gmail.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | [GSoC,v3] userdiff: add builtin driver for INI files | expand |
On Mon, Mar 31, 2025 at 12:13:09AM -0300, Lucas Seiki Oshiro wrote: > Add a new builtin driver for generic INI files (e. g. the gitconfig > files), where: > > - the funcname regular expression matches section names, i. e. any > string between brackets at the beginning of the line, with or without > indentation; > > - word_regex matches any word with one or more non-whitespace > characters without checking if it is a valid variable name or value. > > Also add tests for the new userdiff driver. These files define sections > and subsections, with and without indentation. > > Helped-by: Patrick Steinhardt <ps@pks.im> > Helped-by: D. Ben Knoble <ben.knoble@gmail.com> > Signed-off-by: Lucas Seiki Oshiro <lucasseikioshiro@gmail.com> This commit message reads quite nicely now. The changes also look sensible to me. Thanks, I've got nothing else to add! Patrick
diff --git a/t/t4018/ini-section b/t/t4018/ini-section new file mode 100644 index 0000000000..c895ad9b4f --- /dev/null +++ b/t/t4018/ini-section @@ -0,0 +1,5 @@ +[RIGHT] + # comment + ; comment + name = value + ChangeMe diff --git a/t/t4018/ini-section-noindent b/t/t4018/ini-section-noindent new file mode 100644 index 0000000000..733d23c801 --- /dev/null +++ b/t/t4018/ini-section-noindent @@ -0,0 +1,5 @@ +[RIGHT] +# comment +; comment +name = value +ChangeMe diff --git a/t/t4018/ini-section-same-line b/t/t4018/ini-section-same-line new file mode 100644 index 0000000000..522a1fa4a1 --- /dev/null +++ b/t/t4018/ini-section-same-line @@ -0,0 +1,4 @@ +[RIGHT] name = value + # comment + ; comment + ChangeMe diff --git a/t/t4018/ini-subsection b/t/t4018/ini-subsection new file mode 100644 index 0000000000..3d47349e60 --- /dev/null +++ b/t/t4018/ini-subsection @@ -0,0 +1,12 @@ +[LEFT] + + [LEFT "CENTER"] + # comment + ; comment + name = value + + [LEFT "RIGHT"] + # comment + ; comment + name = value + ChangeMe diff --git a/t/t4018/ini-subsection-noindent b/t/t4018/ini-subsection-noindent new file mode 100644 index 0000000000..698ea00ea3 --- /dev/null +++ b/t/t4018/ini-subsection-noindent @@ -0,0 +1,12 @@ +[LEFT] + +[LEFT "CENTER"] +# comment +; comment +name = value + +[LEFT "RIGHT"] +# comment +; comment +name = value +ChangeMe diff --git a/userdiff.c b/userdiff.c index 340c4eb4f7..da75625020 100644 --- a/userdiff.c +++ b/userdiff.c @@ -211,6 +211,10 @@ PATTERNS("html", "^[ \t]*(<[Hh][1-6]([ \t].*)?>.*)$", /* -- */ "[^<>= \t]+"), +PATTERNS("ini", + "^[ \t]*\\[[^]]+\\]", + /* -- */ + "[^ \t]+"), PATTERNS("java", "!^[ \t]*(catch|do|for|if|instanceof|new|return|switch|throw|while)\n" /* Class, enum, interface, and record declarations */
Add a new builtin driver for generic INI files (e. g. the gitconfig files), where: - the funcname regular expression matches section names, i. e. any string between brackets at the beginning of the line, with or without indentation; - word_regex matches any word with one or more non-whitespace characters without checking if it is a valid variable name or value. Also add tests for the new userdiff driver. These files define sections and subsections, with and without indentation. Helped-by: Patrick Steinhardt <ps@pks.im> Helped-by: D. Ben Knoble <ben.knoble@gmail.com> Signed-off-by: Lucas Seiki Oshiro <lucasseikioshiro@gmail.com> --- The previous versions were more focused on the gitconfig format. This patch generalizes for other INI files, such as the systemd .service files or the Desktop.ini files on Windows. t/t4018/ini-section | 5 +++++ t/t4018/ini-section-noindent | 5 +++++ t/t4018/ini-section-same-line | 4 ++++ t/t4018/ini-subsection | 12 ++++++++++++ t/t4018/ini-subsection-noindent | 12 ++++++++++++ userdiff.c | 4 ++++ 6 files changed, 42 insertions(+) create mode 100644 t/t4018/ini-section create mode 100644 t/t4018/ini-section-noindent create mode 100644 t/t4018/ini-section-same-line create mode 100644 t/t4018/ini-subsection create mode 100644 t/t4018/ini-subsection-noindent