[augeas-devel] Towards generic modules
Raphaël Pinson
raphink at gmail.com
Tue Jul 22 08:54:38 UTC 2008
Hi guys,
I'm experimenting with generic modules. My first one is for Ini files.
==============================================================
module IniFile =
(* Define useful shortcuts *)
let eol = Util.del_str "\n"
let del_to_eol = del /[^\n]*/ ""
let value_sep = del /[ \t]*=[ \t]*/ "="
let value_to_eol = store /([^ \t\n][^\n]*)?/
(* Define entry function *)
let entry (kw:regexp) = [ key kw . value_sep . value_to_eol . eol ]
(* Define comment and empty strings *)
let comment = [ label "comment" . del /#[ \t]*/ "#" . store /([^
\t\n][^\n]*)?/ . eol ]
let empty = [ del /[ \t]*/ "" . eol ]
(* Define record *)
let title = Util.del_str "[" . store /[^]= ]+/ . Util.del_str "]". eol
let record (label_name:string) (entry:lens) = [ label label_name . title
. entry* ]
==============================================================
which allows me to rewrite dput.aug as :
==============================================================
module Dput =
autoload xfm
let settings = IniFile.entry "allow_non-us_software"
| IniFile.entry "allow_unsigned_uploads"
| IniFile.entry "check_version"
| IniFile.entry "default_host_main"
| IniFile.entry "default_host_non-us"
| IniFile.entry "fqdn"
| IniFile.entry "hash"
| IniFile.entry "incoming"
| IniFile.entry "login"
| IniFile.entry "method"
| IniFile.entry "passive_ftp"
| IniFile.entry "post_upload_command"
| IniFile.entry "pre_upload_command"
| IniFile.entry "run_dinstall"
| IniFile.entry "run_lintian"
| IniFile.entry "scp_compress"
let record = IniFile.record "target" settings
let lns = ( IniFile.comment | record | IniFile.empty )*
let filter = (incl "/etc/dput.cf")
. (incl "~/.dput.cf")
. Util.stdexcl
let xfm = transform lns filter
==============================================================
Obviously, this is a work in progress, which might not yet support all kinds
of generic IniFiles syntax. All comments and contributions are welcome.
Cheers,
Raphaël
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/augeas-devel/attachments/20080722/d46cff0d/attachment.htm>
More information about the augeas-devel
mailing list