When I make a dictionary by parsing "legacy-icon-mapping.xml"(which is a
part of
icon-naming-utils[http://tango.freedesktop.org/Tango_Icon_Library]) with
the following script, the three keys of the dictionary are collapsed if
the "buffer_text" attribute is False.
=====================
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from __future__ import with_statement
import sys
from xml.parsers.expat import ParserCreate
import codecs
class Database:
"""Make a dictionary which is accessible by Databese.dict"""
def __init__(self, buffer_text):
self.cnt = None
self.name = None
self.data = None
self.dict = {}
p = ParserCreate()
p.buffer_text = buffer_text
p.StartElementHandler = self.start_element
p.EndElementHandler = self.end_element
p.CharacterDataHandler = self.char_data
with open("/usr/share/icon-naming-utils/legacy-icon-mapping.xml",
'r') as f:
p.ParseFile(f)
def start_element(self, name, attrs):
if name == 'context':
self.cnt = attrs["dir"]
if name == 'icon':
self.name = attrs["name"]
def end_element(self, name):
if name == 'link':
self.dict[self.data] = (self.cnt, self.name)
def char_data(self, data):
self.data = data.strip()
def print_set(aset):
for e in aset:
print '\t' + e
if __name__ == '__main__':
sys.stdout = codecs.getwriter('utf_8')(sys.stdout)
map_false_dict = Database(False).dict
map_true_dict = Database(True).dict
print "The keys which exist if buffer_text=False but don't exist if
buffer_text=True are"
print_set(set(map_false_dict.keys()) - set(map_true_dict.keys()))
print "The keys which exist if buffer_text=True but don't exist if
buffer_text=False are"
print_set(set(map_true_dict.keys()) - set(map_false_dict.keys()))
=====================
The result of running this script is
======================
The keys which exist if buffer_text=False but don't exist if
buffer_text=True are
rt-descending
ock_text_right
lc
The keys which exist if buffer_text=True but don't exist if
buffer_text=False are
stock_text_right
gnome-mime-application-vnd.stardivision.calc
gtk-sort-descending
======================
I confirmed it in Python-2.5.2 on Fedora 10.
|