From daa856073672aa361d83ff2803252335405b79ec Mon Sep 17 00:00:00 2001 From: Christopher Harvey Date: Thu, 8 Jul 2010 08:57:41 -0400 Subject: Added new lenses for future use. --- lenses/packagemask.aug | 39 +++++++++++++++++++++++++++++++++++++++ lenses/packageuse.aug | 25 +++++++++++++++++++++++++ 2 files changed, 64 insertions(+) create mode 100644 lenses/packagemask.aug create mode 100644 lenses/packageuse.aug 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 diff --git a/lenses/packageuse.aug b/lenses/packageuse.aug new file mode 100644 index 0000000..10a4e27 --- /dev/null +++ b/lenses/packageuse.aug @@ -0,0 +1,25 @@ +(* Parsing /etc/portage/package.use *) + +module Packageuse = + 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 word = /[^# \n\t]+/ + let record = [ seq "packageuse" . indent . + [ label "package" . store word ] . sep_tab . + [ label "use" . store word ] . + [ label "use" . sep_spc . store word ]* + . (comment|eol) ] + + let lns = ( empty | comment | record ) * + let filter = (incl "/etc/portage/package.use") + . (incl "/etc/portage/package.use/*") + let xfm = transform lns filter -- cgit v1.2.3-65-gdbad