view MoinMoin/filter/ @ 3675:f048227cabc3

search index filters: redirect stderr to logging system
author Thomas Waldmann <tw AT waldmann-edv DOT de>
date Sat, 07 Jun 2008 18:47:58 +0200
parents bb2e053067fb
children 4e904da48c4c
line wrap: on
line source

# -*- coding: iso-8859-1 -*-
    MoinMoin - Filter Package

    @copyright: 2006-2008 MoinMoin:ThomasWaldmann
    @license: GNU GPL, see COPYING for details.

import os

from MoinMoin import log
logging = log.getLogger(__name__)

from MoinMoin.util import pysupport

modules = pysupport.getPackageModules(__file__)

standard_codings = ['utf-8', 'iso-8859-15', 'iso-8859-1', ]

def execfilter(cmd, filename, codings=standard_codings):
    """ use cmd to get plaintext content of filename
        to decode to unicode, we use the first coding of codings list that
        does not throw an exception or force ascii
    filter_cmd = cmd % filename
    child_stdin, child_stdout, child_stderr = os.popen3(filter_cmd)
    data =
    errors =
    logging.debug("cmd: %s stderr: %s" % (filter_cmd, errors))
    for c in codings:
            return data.decode(c)
        except UnicodeError:
    return data.decode('ascii', 'replace')