# HG changeset patch # User Raphael Pinson <[EMAIL PROTECTED]> # Date 1218628615 -7200 # Node ID b22b3b7537c7992bce8eaea6e69f721763e883a7 # Parent 7ac7473e10636235227b7c98acff5b99ca794821 Reformat inifile.aug Ignore empty comments
diff -r 7ac7473e1063 -r b22b3b7537c7 lenses/inifile.aug --- a/lenses/inifile.aug Wed Aug 13 12:58:02 2008 +0200 +++ b/lenses/inifile.aug Wed Aug 13 13:56:55 2008 +0200 @@ -5,48 +5,95 @@ module IniFile = - (* Define useful shortcuts *) - let eol = del /[ \t]*\n/ "\n" - let value_sep = del /[ \t]*=/ " = " - let value_sepwithcolon = del /[ \t]*(=|:)/ " = " - let value_to_eol = del /[ \t]*/ " " . store /([^ \t\n].*[^ \t\n]|[^ \t\n])/ - let value_to_comment = del /[ \t]*/ " " . store /[^;# \t\n][^;#\n]*[^;# \t\n]|[^;# \t\n]/ +(************************************************************************ + * USEFUL PRIMITIVES + *************************************************************************) +let eol = Util.eol - (* Define comment and empty strings *) - (* Some implementations of INI file allow "#" as a comment sign *) - let comment_generic (pattern:regexp) = [ label "comment" . del pattern "; " . value_to_eol? . eol ] - let comment = comment_generic /[ \t]*(#|;)/ - let comment_nosharp = comment_generic /[ \t]*;/ +let sep_gen (pat:regexp) (default:string) + = Util.del_opt_ws " " . del pat default +let value_sep = sep_gen "=" "=" +let value_sepwithcolon = sep_gen /[:=]/ "=" - let empty = [ del /[ \t]*\n/ "" ] +let value_to_eol = Util.del_opt_ws " " + . store /([^ \t\n].*[^ \t\n]|[^ \t\n])/ +let value_to_comment = Util.del_opt_ws " " + . store /[^;# \t\n][^;#\n]*[^;# \t\n]|[^;# \t\n]/ - (* Define entry function *) - (* Some implementations of INI file allow ";" as separator *) - let entry_generic (kw:regexp) (sep:lens) (comment:lens) = [ key kw . sep . value_to_comment? . (comment|eol) ] - let entry (kw:regexp) = entry_generic kw value_sepwithcolon comment - let entry_setcomment (kw:regexp) (comment:lens) = entry_generic kw value_sepwithcolon comment - let entry_nocolon (kw:regexp) = entry_generic kw value_sep comment - let entry_nocolon_setcomment (kw:regexp) (comment:lens) = entry_generic kw value_sep comment +(* Define comment and empty strings *) +(* Some implementations of INI file allow "#" as a comment sign *) +let comment_generic (pat:regexp) (default:string) + = [ label "comment" . sep_gen pat default + . value_to_eol . eol ] +let comment = comment_generic /[#;]/ ";" +let comment_nosharp = comment_generic ";" ";" - (* Define record *) +let empty = Util.empty - let title = Util.del_str "[" . store /[^]]+/ . Util.del_str "]". eol - let record (label_name:string) (entry:lens) = [ label label_name . title . (entry | comment | empty)* ] - let record_setcomment (label_name:string) (entry:lens) (comment:lens) = [ label label_name . title . (entry | comment | empty)* ] - (* Some implementations of INI File do not allow empty lines *) - let record_noempty (label_name:string) (entry:lens) = [ label label_name . title . (entry | comment)* ] - let record_noempty_setcomment (label_name:string) (entry:lens) (comment:lens) = [ label label_name . title . (entry | comment)* ] - (* Generic INI file lens *) - let lns (record:lens) = ( comment | empty )* . record* - (* Let the user choose the type of comment they want *) - let lns_setcomment (record:lens) (comment:lens) = ( comment | empty )* . record* +(************************************************************************ + * ENTRY + *************************************************************************) - (* Some implementations of INI File do not allow empty lines *) - let lns_noempty (record:lens) = comment* . record* - (* Let the user choose the type of comment they want *) - let lns_noempty_setcomment (record:lens) (comment:lens) = comment* . record* +(* Some implementations of INI file allow ";" as separator *) +let entry_generic (kw:regexp) (sep:lens) (comment:lens) + = [ key kw . sep . value_to_comment? . (comment|eol) ] +let entry (kw:regexp) + = entry_generic kw value_sepwithcolon comment +let entry_setcomment (kw:regexp) (comment:lens) + = entry_generic kw value_sepwithcolon comment +let entry_nocolon (kw:regexp) + = entry_generic kw value_sep comment +let entry_nocolon_setcomment (kw:regexp) (comment:lens) + = entry_generic kw value_sep comment + + +(************************************************************************ + * RECORD + *************************************************************************) + +let title = Util.del_str "[" . store /[^]]+/ + . Util.del_str "]". eol + +let record (label_name:string) (entry:lens) + = [ label label_name . title + . (entry | comment | empty)* ] + +let record_setcomment (label_name:string) (entry:lens) + (comment:lens) = [ label label_name . title + . (entry | comment | empty)* ] + +(* Some implementations of INI File do not allow empty lines *) +let record_noempty (label_name:string) (entry:lens) + = [ label label_name . title + . (entry | comment)* ] + +let record_noempty_setcomment (label_name:string) (entry:lens) + (comment:lens) = [ label label_name . title + . (entry | comment)* ] + + +(************************************************************************ + * LENS + *************************************************************************) + + +(* Generic INI file lens *) +let lns (record:lens) = ( comment | empty )* . record* + +(* Let the user choose the type of comment they want *) +let lns_setcomment (record:lens) (comment:lens) + = ( comment | empty )* . record* + +(* Some implementations of INI File do not allow empty lines *) +let lns_noempty (record:lens) = comment* . record* + +(* Let the user choose the type of comment they want *) +let lns_noempty_setcomment (record:lens) (comment:lens) + = comment* . record* + + _______________________________________________ augeas-devel mailing list [email protected] https://www.redhat.com/mailman/listinfo/augeas-devel
