On Mon, Aug 27, 2012 at 11:01 AM, Roland Mainz <roland.ma...@nrubsig.org> wrote: > Below is another testcase for .sh.match and typeset -m: > -- snip -- > > function parse_attr > { > typeset move_mode=$1 > typeset attrdata="$2" > integer i > > typeset dummy="${attrdata//~(Ex-p)(?: > [[:space:]]+ > ( # four different types of name=value syntax > (?:([:_[:alnum:]-]+)=([^\"\'[:space:]]+?))| > (?:([:_[:alnum:]-]+)=\"([^\"]*?)\")| > (?:([:_[:alnum:]-]+)=\'([^\']*?)\')| > (?:([:_[:alnum:]-]+)) > ) > )/D}" > > case ${move_mode} in > 'plain') > nameref m=.sh.match > ;; > 'move') > typeset -m m=.sh.match > ;; > 'move_to_compound') > compound mc > typeset -m mc.m=.sh.match > nameref m=mc.m > ;; > 'move_to_nameref_compound') > compound mc > nameref mcn=mc > typeset -m mcn.m=.sh.match > nameref m=mcn.m > ;; > *) > print -u2 -f '# wrong move_mode=%q\n' "${move_mode}" > return 1 > ;; > esac > > for (( i=0 ; i < fmax(1, ${#m[0][@]}) ; i++ )) ; do > [[ -v m[2][i] && -v m[3][i] ]] && printf '%q=%q\n' > "${m[2][i]}" "${m[3][i]}" > [[ -v m[4][i] && -v m[5][i] ]] && printf '%q=%q\n' > "${m[4][i]}" "${m[5][i]}" > [[ -v m[6][i] && -v m[7][i] ]] && printf '%q=%q\n' > "${m[6][i]}" "${m[7][i]}" > done > print "Nummatches=${#m[0][@]}" > return 0 > } > > for s in 'plain' 'move' 'move_to_compound' 'move_to_nameref_compound' ; do > parse_attr "$s" $' aname=avalue x=y' > done > -- snip -- > ... in theory it should print: > -- snip -- > aname=a > x=y > Nummatches=2 > aname=a > x=y > Nummatches=2 > aname=a > x=y > Nummatches=2 > aname=a > x=y > Nummatches=2 > -- snip -- > ... but ast-ksh.2012-08-24 currently prints this: > -- snip -- > aname=a > x=y > Nummatches=2 > ' aname=a'=' aname=a' > ' x=y'=' x=y' > Nummatches=2 > ' aname=a'=' aname=a' > ' x=y'=' x=y' > Nummatches=2 > ' aname=a'=' aname=a' > ' x=y'=' x=y' > Nummatches=2 > -- snip --
... this testcase still doesn't work in ast-ksh.2012-08-31 (main issue seems to be that "typeset -m ..." and nameref's bite each other... ;-( ---- Bye, Roland -- __ . . __ (o.\ \/ /.o) roland.ma...@nrubsig.org \__\/\/__/ MPEG specialist, C&&JAVA&&Sun&&Unix programmer /O /==\ O\ TEL +49 641 3992797 (;O/ \/ \O;) _______________________________________________ ast-developers mailing list ast-developers@research.att.com https://mailman.research.att.com/mailman/listinfo/ast-developers