Blame lenses/pylonspaste.aug

Packit Service a2ae7a
(*
Packit Service a2ae7a
Module: PylonsPaste
Packit Service a2ae7a
 Parses Pylons Paste ini configuration files.
Packit Service a2ae7a
Packit Service a2ae7a
Author: Andrew Colin Kissa <andrew@topdog.za.net>
Packit Service a2ae7a
 Baruwa Enterprise Edition http://www.baruwa.com
Packit Service a2ae7a
Packit Service a2ae7a
About: License
Packit Service a2ae7a
 This file is licensed under the LGPL v2+.
Packit Service a2ae7a
Packit Service a2ae7a
About: Configuration files
Packit Service a2ae7a
 This lens applies to /etc/baruwa See <filter>.
Packit Service a2ae7a
*)
Packit Service a2ae7a
Packit Service a2ae7a
module Pylonspaste =
Packit Service a2ae7a
autoload xfm
Packit Service a2ae7a
Packit Service a2ae7a
(************************************************************************
Packit Service a2ae7a
 * Group: USEFUL PRIMITIVES
Packit Service a2ae7a
 *************************************************************************)
Packit Service a2ae7a
Packit Service a2ae7a
let comment  = IniFile.comment IniFile.comment_re IniFile.comment_default
Packit Service a2ae7a
Packit Service a2ae7a
let sep = IniFile.sep "=" "="
Packit Service a2ae7a
Packit Service a2ae7a
let eol = Util.eol
Packit Service a2ae7a
Packit Service a2ae7a
let optspace = del /\n/ "\n"
Packit Service a2ae7a
Packit Service a2ae7a
let entry_re = ( /[A-Za-z][:#A-Za-z0-9._-]+/)
Packit Service a2ae7a
Packit Service a2ae7a
let plugin_re = /[A-Za-z][;:#A-Za-z0-9._-]+/
Packit Service a2ae7a
Packit Service a2ae7a
let plugins_kw = /plugins/
Packit Service a2ae7a
Packit Service a2ae7a
let debug_kw = /debug/
Packit Service a2ae7a
Packit Service a2ae7a
let normal_opts = entry_re - (debug_kw|plugins_kw)
Packit Service a2ae7a
Packit Service a2ae7a
let del_opt_ws =  del /[\t ]*/ ""
Packit Service a2ae7a
Packit Service a2ae7a
let new_ln_sep = optspace . del_opt_ws . store plugin_re
Packit Service a2ae7a
Packit Service a2ae7a
let plugins_multiline = sep . counter "items" . [ seq "items" . new_ln_sep]*
Packit Service a2ae7a
Packit Service a2ae7a
let sto_multiline = optspace . Sep.opt_space . store (Rx.space_in . (/[ \t]*\n/ . Rx.space . Rx.space_in)*)
Packit Service a2ae7a
Packit Service a2ae7a
(************************************************************************
Packit Service a2ae7a
 * Group:                       ENTRY
Packit Service a2ae7a
 *************************************************************************)
Packit Service a2ae7a
Packit Service a2ae7a
let set_option = Util.del_str "set "
Packit Service a2ae7a
let no_inline_comment_entry (kw:regexp) (sep:lens) (comment:lens) =
Packit Service a2ae7a
                         [ set_option . key debug_kw . sep . IniFile.sto_to_eol . eol ]
Packit Service a2ae7a
                         | [ key plugins_kw . plugins_multiline . eol]
Packit Service a2ae7a
                         | [ key kw . sep . IniFile.sto_to_eol? . eol ]
Packit Service a2ae7a
                         | comment
Packit Service a2ae7a
Packit Service a2ae7a
let entry   = no_inline_comment_entry normal_opts sep comment
Packit Service a2ae7a
Packit Service a2ae7a
(************************************************************************
Packit Service a2ae7a
 *                        RECORD
Packit Service a2ae7a
 *************************************************************************)
Packit Service a2ae7a
Packit Service a2ae7a
let title   = IniFile.title IniFile.record_re
Packit Service a2ae7a
Packit Service a2ae7a
let record  = IniFile.record title entry
Packit Service a2ae7a
Packit Service a2ae7a
(************************************************************************
Packit Service a2ae7a
 * Group:                        LENS & FILTER
Packit Service a2ae7a
 *************************************************************************)
Packit Service a2ae7a
Packit Service a2ae7a
let lns = IniFile.lns record comment
Packit Service a2ae7a
Packit Service a2ae7a
let filter = incl "/etc/baruwa/*.ini"
Packit Service a2ae7a
Packit Service a2ae7a
let xfm = transform lns filter
Packit Service a2ae7a