~sebzur/os.num2word/main

« back to all changes in this revision

Viewing changes to orderedmapping.py

  • Committer: Sebastian Żurek
  • Date: 2008-09-07 12:41:03 UTC
  • Revision ID: sebzur@gmail.com-20080907124103-qqgwshcd0428dmbh
num2word dir created and all the files were moved into its. __init__.py added  - it is required by OpenSynergy plugins import framework (all the plugins *must* be Python packages)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
'''
2
 
Module: orderedmapping.py
3
 
Version: 1.0
4
 
 
5
 
Author:
6
 
   Taro Ogawa (tso@users.sourceforge.org)
7
 
   
8
 
Copyright:
9
 
    Copyright (c) 2003, Taro Ogawa.  All Rights Reserved.
10
 
 
11
 
Licence:
12
 
    This module is distributed under the Lesser General Public Licence.
13
 
    http://www.opensource.org/licenses/lgpl-license.php
14
 
'''
15
 
from __future__ import generators
16
 
class OrderedMapping(dict):
17
 
    def __init__(self, *pairs):
18
 
        self.order = []
19
 
        for key, val in pairs:
20
 
            self[key] = val
21
 
            
22
 
    def __setitem__(self, key, val):
23
 
        if key not in self:
24
 
            self.order.append(key)
25
 
        super(OrderedMapping, self).__setitem__(key, val)
26
 
 
27
 
    def __iter__(self):
28
 
        for item in self.order:
29
 
            yield item
30
 
 
31
 
    def __repr__(self):
32
 
        out = ["%s: %s"%(repr(item), repr(self[item])) for item in self]
33
 
        out = ", ".join(out)
34
 
        return "{%s}"%out