Bump to 1.14.1
[platform/upstream/augeas.git] / lenses / subversion.aug
1 (*
2 Module: Subversion
3   Parses subversion's INI files
4
5 Authors:
6    Marc Fournier <marc.fournier@camptocamp.com>
7    Raphael Pinson <raphael.pinson@camptocamp.com>
8
9 About: License
10    This file is licenced under the LGPL v2+, like the rest of Augeas.
11
12 About: Examples
13    The <Test_Subversion> file contains various examples and tests.
14
15 *)
16
17 module Subversion =
18 autoload xfm
19
20 (************************************************************************
21  * Group: INI File settings
22  *
23  * subversion only supports comments starting with "#"
24  *
25  *************************************************************************)
26
27 (* View: comment *)
28 let comment  = IniFile.comment_noindent "#" "#"
29
30 (* View: empty
31      An empty line or a non-indented empty comment *)
32 let empty = IniFile.empty_noindent
33
34 (* View: sep *)
35 let sep      = IniFile.sep IniFile.sep_default IniFile.sep_default
36
37 (************************************************************************
38  * Group:                  ENTRY
39  *
40  * subversion doesn't support indented entries
41  *
42  *************************************************************************)
43
44 (* Variable: comma_list_re *)
45 let comma_list_re = "password-stores"
46
47 (* Variable: space_list_re *)
48 let space_list_re = "global-ignores" | "preserved-conflict-file-exts"
49
50 (* Variable: std_re *)
51 let std_re = /[^ \t\r\n\/=#]+/ - (comma_list_re | space_list_re)
52
53 (* View: entry_std
54     A standard entry
55     Similar to a <IniFile.entry_multiline_nocomment> entry,
56     but allows ';' *)
57 let entry_std =
58   IniFile.entry_multiline_generic (key std_re) sep "#" comment IniFile.eol
59
60 (* View: entry *)
61 let entry    =
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)
65   in entry_std
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]+/ " ")
68
69
70
71 (************************************************************************
72  * Group:                    TITLE
73  *
74  * subversion doesn't allow anonymous entries (outside sections)
75  *
76  *************************************************************************)
77
78 (* View: title *)
79 let title    = IniFile.title IniFile.entry_re
80
81 (* View: record
82      Use the non-indented <empty> *)
83 let record   = IniFile.record_noempty title (entry|empty)
84
85 (************************************************************************
86  * Group:                   LENS & FILTER
87  *************************************************************************)
88
89 (* View: lns *)
90 let lns      = IniFile.lns record comment
91
92 (* Variable: filter *)
93 let filter   = incl "/etc/subversion/config"
94              . incl "/etc/subversion/servers"
95
96 let xfm      = transform lns filter