3 Parses subversion's INI files
6 Marc Fournier <marc.fournier@camptocamp.com>
7 Raphael Pinson <raphael.pinson@camptocamp.com>
10 This file is licenced under the LGPL v2+, like the rest of Augeas.
13 The <Test_Subversion> file contains various examples and tests.
20 (************************************************************************
21 * Group: INI File settings
23 * subversion only supports comments starting with "#"
25 *************************************************************************)
28 let comment = IniFile.comment_noindent "#" "#"
31 An empty line or a non-indented empty comment *)
32 let empty = IniFile.empty_noindent
35 let sep = IniFile.sep IniFile.sep_default IniFile.sep_default
37 (************************************************************************
40 * subversion doesn't support indented entries
42 *************************************************************************)
44 (* Variable: comma_list_re *)
45 let comma_list_re = "password-stores"
47 (* Variable: space_list_re *)
48 let space_list_re = "global-ignores" | "preserved-conflict-file-exts"
50 (* Variable: std_re *)
51 let std_re = /[^ \t\r\n\/=#]+/ - (comma_list_re | space_list_re)
55 Similar to a <IniFile.entry_multiline_nocomment> entry,
58 IniFile.entry_multiline_generic (key std_re) sep "#" comment IniFile.eol
62 let comma_list_re = "password-stores"
63 in let space_list_re = "global-ignores" | "preserved-conflict-file-exts"
64 in let std_re = /[^ \t\r\n\/=#]+/ - (comma_list_re | space_list_re)
66 | IniFile.entry_list_nocomment comma_list_re sep Rx.word Sep.comma
67 | IniFile.entry_list_nocomment space_list_re sep Rx.no_spaces (del /(\r?\n)?[ \t]+/ " ")
71 (************************************************************************
74 * subversion doesn't allow anonymous entries (outside sections)
76 *************************************************************************)
79 let title = IniFile.title IniFile.entry_re
82 Use the non-indented <empty> *)
83 let record = IniFile.record_noempty title (entry|empty)
85 (************************************************************************
86 * Group: LENS & FILTER
87 *************************************************************************)
90 let lns = IniFile.lns record comment
92 (* Variable: filter *)
93 let filter = incl "/etc/subversion/config"
94 . incl "/etc/subversion/servers"
96 let xfm = transform lns filter