diff options
author | Christopher Harvey <chris@basementcode.com> | 2010-07-08 08:57:41 -0400 |
---|---|---|
committer | Christopher Harvey <chris@basementcode.com> | 2010-07-08 08:57:41 -0400 |
commit | daa856073672aa361d83ff2803252335405b79ec (patch) | |
tree | 86fb7b26f09c20882980def4a6a46fcda56e3c2c /lenses/packagemask.aug | |
parent | Changed the code that adds new nodes to the tree, so that it respects the ord... (diff) | |
download | ventoo-daa856073672aa361d83ff2803252335405b79ec.tar.gz ventoo-daa856073672aa361d83ff2803252335405b79ec.tar.bz2 ventoo-daa856073672aa361d83ff2803252335405b79ec.zip |
Added new lenses for future use.
Diffstat (limited to 'lenses/packagemask.aug')
-rw-r--r-- | lenses/packagemask.aug | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/lenses/packagemask.aug b/lenses/packagemask.aug new file mode 100644 index 0000000..b61c215 --- /dev/null +++ b/lenses/packagemask.aug @@ -0,0 +1,39 @@ +(* Parsing /etc/portage/package.mask *) + +(* + It is still far from perfect, but at least it doesn't give "ambiguous concat" + anymore and work for packages without digits in package name. +*) + +module Packagemask = + autoload xfm + + let sep_spc = Util.del_ws_spc + let sep_tab = Util.del_ws_tab + + let eol = del /[ \t]*\n/ "\n" + let indent = del /[ \t]*/ "" + + let comment = Util.comment + let empty = [ del /[ \t]*#?[ \t]*\n/ "\n" ] + + let operator = /[<>]?=?/ + + let package = /[a-z_\/-]+([a-z0-9_\/-]*[a-z_-])?/ + let version = /[0-9]+(\.[0-9]+)*(-r[0-9]+)?/ + let sep_version = del /-/ "-" + + let word = /[^#<>= \n\t]+/ + + let record = [ seq "packagemask" . indent + . [ label "operator" . store operator ] + . [ label "package" . store package ] + . [ sep_version . label "version" . store version ]? + . (comment|eol) + ] + + let lns = ( empty | comment | record ) * + + let filter = (incl "/etc/portage/package.mask") + . (incl "/etc/portage/package.mask/*") + let xfm = transform lns filter |