/usr/share/augeas/lenses/dist/erlang.aug is in augeas-lenses 1.2.0-0ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 | (*
Module: Erlang
Parses Erlang configuration files
Author: Raphael Pinson <raphael.pinson@camptocamp.com>
About: Reference
This lens tries to keep as close as possible to `http://www.erlang.org/doc/man/config.html` where possible.
About: License
This file is licenced under the LGPL v2+, like the rest of Augeas.
About: Lens Usage
To be documented
About: Configuration files
This lens applies to Erlang configuration files. See <filter>.
About: Examples
The <Test_Erlang> file contains various examples and tests.
*)
module Erlang =
(* Group: Spacing Functions *)
(* View: lspace
Add spaces to the left of char *)
let lspace (char:string) = del (/[ \t\n]*/ . char) char
(* View: rspace
Add spaces to the right of char *)
let rspace (char:string) = del (char . /[ \t\n]*/ ) char
(* View: lrspace
Add spaces to the left or right of char *)
let lrspace (char:string) = del (/[ \t\n]*/ . char . /[ \t\n]*/ ) char
(* Group: Separators *)
(* Variable: lbrace
Left square bracket *)
let lbrace = "{"
(* Variable: rbrace
Right square bracket *)
let rbrace = "}"
(* Variable: lbrack
Left curly brackets *)
let lbrack = "["
(* Variable: rbrack
Right curly brackets *)
let rbrack = "]"
(* Variable: lglob
Left glob separator *)
let lglob = "<<\""
(* Variable: rglob
Right glob separator *)
let rglob = "\">>"
(* Variable: comma *)
let comma = ","
(* Group: Value types *)
(* View: opt_list
An optional list of elements, in square brackets *)
let opt_list (lns:lens) = rspace lbrack
. Build.opt_list lns (lrspace comma)
. lspace rbrack
(* View: integer
Store a <Rx.integer> *)
let integer = store Rx.integer
(* View: decimal
Store a decimal value *)
let decimal = store /[0-9]+(.[0-9]+)?/
(* View: quoted
Store a quoted value *)
let quoted = Quote.do_quote (store /[^,\n}{]+/)
(* View: bare
Store a bare <Rx.word> *)
let bare = store Rx.word
(* View: boolean
Store a boolean value *)
let boolean = store /true|false/
(* View: path
Store a path (<quoted>) *)
let path = quoted
(* View: glob
Store a glob *)
let glob = Util.del_str lglob . store /[^\n"]+/ . Util.del_str rglob
(* View: make_value
Make a "value" subnode for arrays/tuples *)
let make_value (lns:lens) = [ label "value" . lns ]
(* Group: Store types *)
(* View: value
A single value *)
let value (kw:regexp) (sto:lens) =
[ rspace lbrace
. key kw
. lrspace comma
. sto
. lspace rbrace ]
(* View: value
A tuple of values *)
let tuple (one:lens) (two:lens) =
[ rspace lbrace
. label "tuple"
. [ label "value" . one ]
. lrspace comma
. [ label "value" . two ]
. lspace rbrace ]
(* View: list
A list of lenses *)
let list (kw:regexp) (lns:lens) =
[ rspace lbrace
. key kw
. lrspace comma
. opt_list lns
. lspace rbrace ]
(* View: value_list
A <list> of seq entries *)
let value_list (kw:regexp) (sto:lens) =
list kw (make_value sto)
(* View: application *)
let application (name:regexp) (parameter:lens) =
list name parameter
(* View: comment *)
let comment = Util.comment_generic /%[ \t]*/ "% "
(* View: config
A top-level config *)
let config (app:lens) =
(Util.empty | comment)*
. rspace lbrack
. Build.opt_list app (lrspace comma)
. lrspace rbrack
. Util.del_str "." . Util.eol
. (Util.empty | comment)*
|