05 Aralık 2009 Cumartesi günü (saat 18:27:04) Gürer Özen şunları yazmıştı:

> Ekte buna göre yaptım. Mantık şöyle (rekürsif olarak):

Daha da temizlenmiş ve hızlı hali, 20 satır.

#!/usr/bin/python
# -*- coding: utf-8 -*-

import sys
import piksemel

#
# Filter code
#

def dom_filter_int(dom, target):
    for tag in dom.tags():
        dont = tag.getAttribute("notFor")
        if dont:
            dont = set(dont.split(","))
            if not target.isdisjoint(dont):
                tag.hide()
                continue
            tag.setAttribute("notFor", None)
        want = tag.getAttribute("for")
        if want:
            want = set(want.split(","))
            if target.isdisjoint(want):
                tag.hide()
                continue
            tag.setAttribute("for", None)
        dom_filter_int(tag, target)

def dom_filter(dom, target):
    dom_filter_int(dom, set(target))
    return dom

#
#
#

def test(filename, target):
    dom = piksemel.parse(filename)
    dom_filter(dom, target)
    print dom.toPrettyString()

filename = sys.argv[1]
target = []
if len(sys.argv) > 2:
    target = sys.argv[2].split(",")

test(filename, target)

_______________________________________________
Gelistirici mailing list
Gelistirici@pardus.org.tr
http://liste.pardus.org.tr/mailman/listinfo/gelistirici

Cevap