Source code for Bcfg2.Server.Plugins.Cfg.CfgCatFilter
""" Handle .cat files, which append lines to and remove lines from
plaintext files """
from Bcfg2.Server.Plugins.Cfg import CfgFilter
[docs]class CfgCatFilter(CfgFilter):
    """ CfgCatFilter appends lines to and remove lines from plaintext
    :ref:`server-plugins-generators-Cfg` files"""
    #: Handle .cat files
    __extensions__ = ['cat']
    #: .cat files are deprecated
    deprecated = True
[docs]    def modify_data(self, entry, metadata, data):
        datalines = data.strip().split('\n')
        for line in self.data.split('\n'):
            if not line:
                continue
            if line.startswith('+'):
                datalines.append(line[1:])
            elif line.startswith('-'):
                if line[1:] in datalines:
                    datalines.remove(line[1:])
        return "\n".join(datalines) + "\n" 
    modify_data.__doc__ = CfgFilter.modify_data.__doc__