(* Module: Subversion Parses subversion's INI files Authors: Marc Fournier Raphael Pinson About: License This file is licenced under the LGPL v2+, like the rest of Augeas. About: Examples The file contains various examples and tests. *) module Subversion = autoload xfm (************************************************************************ * Group: INI File settings * * subversion only supports comments starting with "#" * *************************************************************************) (* View: comment *) let comment = IniFile.comment_noindent "#" "#" (* View: sep *) let sep = IniFile.sep IniFile.sep_default IniFile.sep_default (************************************************************************ * Group: ENTRY * * subversion doesn't support indented entries * *************************************************************************) (* View: entry *) let entry = let comma_list_re = "password-stores" in let space_list_re = "global-ignores" | "preserved-conflict-file-exts" in let std_re = /[^ \t\n\/=#]+/ - comma_list_re - space_list_re in IniFile.entry_multiline_nocomment std_re sep comment | IniFile.entry_list_nocomment comma_list_re sep Rx.word Sep.comma | IniFile.entry_list_nocomment space_list_re sep Rx.no_spaces (del /\n?[ \t]+/ " ") (************************************************************************ * Group: TITLE * * subversion doesn't allow anonymous entries (outside sections) * *************************************************************************) (* View: title *) let title = IniFile.title IniFile.entry_re (* View: record *) let record = IniFile.record title entry (************************************************************************ * Group: LENS & FILTER *************************************************************************) (* View: lns *) let lns = IniFile.lns record comment (* Variable: filter *) let filter = incl "/etc/subversion/config" . incl "/etc/subversion/servers" let xfm = transform lns filter