[augeas-devel] shellvars - regex parsing help

Adam Stokes ajs at redhat.com
Mon Jan 18 21:47:33 UTC 2010


----- "Adam Stokes" <ajs at redhat.com> wrote:

> ----- "David Lutterkort" <lutter at redhat.com> wrote:
> 
> > On Thu, 2010-01-14 at 12:03 -0500, Adam Stokes wrote:
> 
> > 
> > The expression after the '-' is not right: you have
> >         /([ \t]key_re . [ \t]*=[ \t]*.*[ \t\n])/
> > 
> > That's one literal regexp; you're missing a bunch of '/' to
> end/start
> > regular expression literals.
> > 
> > I think what you mean is
> >         /[ \t]*/ . key_re . /[ \t]*=[ \t]*.*/
> >         
> > David
> 
> Once setting this as above augparse takes about 5 minutes longer to
> run through the test module:
> 
> shellvars.aug :
> 
>   let key_re  = /[A-Za-z0-9_]+(\[[0-9]+\])?/ - "unset" - "export"
>   let eq      = Util.del_str "="
>   let empty   = Util.empty
>   (*  let comment = Util.comment *)
>    let comment =
>       let line_re = /([^ \t\n].*[^ \t\n]|[^ \t\n])/ - /[ \t]*/ .
> key_re . /[ \t]*=[ \t]*.*/ in
>       [ label "#comment" . del /#[ \t]*/ "# " . store line_re . del
> /\n/ "\n" ]
> 
> 
> /etc/sysconfig/nfs
> 
> # THIS IS A COMMENT FOR MOUNTD
> # TESTINGVAR=VAL
> # MOUNTD_PORT=892
> 
> t.aug:
> 
> module T =
>     let s = Sys.read_file "/etc/sysconfig/nfs"
>     test Shellvars.lns get "# THIS IS A COMMENT FOR MOUNTD\n" =
>       { "#comment" = "THIS IS A COMMENT FOR MOUNTD" }
>     test Shellvars.lns get "# TESTINGVAR=VAL\n" =
>       {"TESTINGVAR" = "VAL"}
>     test Shellvars.lns get "# MOUNTD_PORT=892\n" =
>       {"MOUNTD_PORT" = "892"}
> 
> error reported by augparse:
> 
> [root at jak dist]# augparse t.aug 
> t.aug:5.4-6.28:exception thrown in test
> t.aug:5.9-.47:exception: Iterated lens matched less than it should
>     Lens: /usr/share/augeas/lenses/dist/shellvars.aug:48.12-.53:
>     Error encountered at 1:0 (0 characters into string)
>                                <|=|# TESTINGVAR=VAL\n>         
> 
>     Tree generated so far:
>     
> 
> t.aug:7.4-8.29:exception thrown in test
> t.aug:7.9-.48:exception: Iterated lens matched less than it should
>     Lens: /usr/share/augeas/lenses/dist/shellvars.aug:48.12-.53:
>     Error encountered at 1:0 (0 characters into string)
>                                <|=|# MOUNTD_PORT=892\n>        
> 
>     Tree generated so far:
>     
> 
> No error
> 

just updated to augeas 0.7 and here is the return for t.aug:

Test failure:t.aug:5.4-6.28:
 Expected:
{ 
  { "TESTINGVAR" = "VAL" }
}

 Actual:
{ 
  { "#comment" = "TESTINGVAR=VAL" }
}

No error

So i guess the regex still needs work

-- 
        __          __                
.-----.|  |_.-----.|  |--.-----.-----.
|__ --||   _|  _  ||    <|  -__|__ --|
|_____||____|_____||__|__|_____|_____|
 .----------------------------------.
(   ajs at redhat.com || 919.754.4187   )
 `----------------------------------'




More information about the augeas-devel mailing list