Parses postgresql.conf
Author: Raphael Pinson raphink@gmail.com
| Postgresql | Parses postgresql.conf |
| Reference | http://www.postgresql.org |
| License | This file is licenced under the LGPL v2+, like the rest of Augeas. |
| Lens Usage | To be documented |
| Configuration files | This lens applies to postgresql.conf. |
| Examples | The Test_Postgresql file contains various examples and tests. |
| Augeas Lenses | |
| sep | Key and values are separated by either spaces or an equal sign |
| Augeas Variables | |
| word_opt_quot_re | Strings that don’t require quotes |
| Augeas Lenses | |
| word_opt_quot | Storing a word_opt_quot_re, with or without quotes |
| Augeas Variables | |
| number_re | A relative decimal number, optionally with unit |
| Augeas Lenses | |
| number | Storing number_re, with or without quotes |
| word_quot | Anything other than word_opt_quot or number Quotes are mandatory |
| entry_gen | Builder to construct entries |
| entry | |
| lns | |
| Augeas Variables | |
| filter |
This lens applies to postgresql.conf. See filter.
The Test_Postgresql file contains various examples and tests.
let word_opt_quot = Quote.do_squote_opt (store word_opt_quot_re)
Storing a word_opt_quot_re, with or without quotes
let number = Quote.do_squote_opt (store number_re)
Storing number_re, with or without quotes
let word_quot = let esc_squot = /\\\\'/ in let no_quot = /[^#'\n]/ in let forbidden = word_opt_quot_re | number_re in let value = (no_quot|esc_squot)* - forbidden in Quote.do_squote (store value)
Anything other than word_opt_quot or number Quotes are mandatory
Key and values are separated by either spaces or an equal sign
let sep = del /([ \t]+)|([ \t]*=[ \t]*)/ " = "
Strings that don’t require quotes
let word_opt_quot_re = /[A-Za-z][A-Za-z0-9_]*/
Storing a word_opt_quot_re, with or without quotes
let word_opt_quot = Quote.do_squote_opt (store word_opt_quot_re)
A relative decimal number, optionally with unit
let number_re = Rx.reldecimal . /[kMG]?B|[m]?s|min|h|d/?
Storing number_re, with or without quotes
let number = Quote.do_squote_opt (store number_re)
Anything other than word_opt_quot or number Quotes are mandatory
let word_quot = let esc_squot = /\\\\'/ in let no_quot = /[^#'\n]/ in let forbidden = word_opt_quot_re | number_re in let value = (no_quot|esc_squot)* - forbidden in Quote.do_squote (store value)
Builder to construct entries
let entry_gen (lns:lens) = Util.indent . Build.key_value_line_comment Rx.word sep lns Util.comment_eol
let entry = entry_gen number | entry_gen word_opt_quot | entry_gen word_quot (* anything else *)
let lns = (Util.empty | Util.comment | entry)*