Bump to 1.14.1
[platform/upstream/augeas.git] / lenses / shellvars_list.aug
index 7f5fa2c..105939c 100644 (file)
@@ -9,43 +9,48 @@ module Shellvars_list =
   let key_re = /[A-Za-z0-9_]+/
   let eq      = Util.del_str "="
   let comment = Util.comment
+  let comment_or_eol = Util.comment_or_eol
   let empty   = Util.empty
   let indent  = Util.indent
 
   let sqword = /[^ '\t\n]+/
   let dqword = /([^ "\\\t\n]|\\\\.)+/
-  let uqword = /([^ "'\\\t\n]|\\\\.)+/
+  let uqword = /([^ `"'\\\t\n]|\\\\.)+/
+  let bqword = /`[^`\n]*`/
+  let space_or_nl = /[ \t\n]+/
+  let space_or_cl = space_or_nl | Rx.cl
 
   (* lists values of the form ...  val1 val2 val3  ... *)
-  let list(word:regexp) =
+  let list (word:regexp) (sep:regexp) =
     let list_value = store word in
       indent .
       [ label "value" . list_value ] .
-      [ del /[ \t\n]+/ " "  . label "value" . list_value ]* . indent
+      [ del sep " "  . label "value" . list_value ]* . indent
 
 
   (* handle single quoted lists *)
-  let squote_arr = [ label "quote" . store /'/ ] . (list sqword)? . del /'/ "'"
+  let squote_arr = [ label "quote" . store /'/ ]
+                   . (list sqword space_or_nl)? . del /'/ "'"
 
-  (* similarly handle double qouted lists *)
-  let dquote_arr = [ label "quote" . store /"/ ] . (list dqword)? . del /"/ "\""
+  (* similarly handle double quoted lists *)
+  let dquote_arr = [ label "quote" . store /"/ ]
+                   . (list dqword space_or_cl)? . del /"/ "\""
 
   (* handle unquoted single value *)
-  let unquot_val = [ label "quote" . store "" ] . [label "value"  . store uqword+]?
+  let unquot_val = [ label "quote" . store "" ]
+                 . [ label "value"  . store (uqword+ | bqword)]?
 
 
   (* lens for key value pairs *)
-  let kv = [ key key_re . eq . ( squote_arr | dquote_arr | unquot_val ) .  eol ]
+  let kv = [ key key_re . eq .
+             ( (squote_arr | dquote_arr) . comment_or_eol
+             | unquot_val . eol )
+           ]
 
   let lns = ( comment | empty | kv )*
 
-  let sc_incl (n:string) = (incl ("/etc/sysconfig/" . n))
-  let filter_sysconfig =
-      sc_incl "bootloader" .
-      sc_incl "kernel"
-
-  let filter = filter_sysconfig
-             . Util.stdexcl
+  let filter = incl "/etc/sysconfig/bootloader"
+             . incl "/etc/sysconfig/kernel"
 
   let xfm = transform lns filter