1## 2# Copyright (c) 2007-2011 Cyrus Daboo. All rights reserved. 3# 4# Licensed under the Apache License, Version 2.0 (the "License"); 5# you may not use this file except in compliance with the License. 6# You may obtain a copy of the License at 7# 8# http://www.apache.org/licenses/LICENSE-2.0 9# 10# Unless required by applicable law or agreed to in writing, software 11# distributed under the License is distributed on an "AS IS" BASIS, 12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13# See the License for the specific language governing permissions and 14# limitations under the License. 15## 16 17# vCard ADR value 18 19from pycalendar import utils 20from pycalendar.valueutils import ValueMixin 21 22class N(ValueMixin): 23 """ 24 mValue is a tuple of seven str or tuples of str 25 """ 26 27 # This is the order of fields in the vCard property value 28 ( 29 LAST, 30 FIRST, 31 MIDDLE, 32 PREFIX, 33 SUFFIX, 34 MAXITEMS 35 ) = range(6) 36 37 def __init__(self, last="", first="", middle="", prefix="", suffix=""): 38 self.mValue = (last, first, middle, prefix, suffix) 39 40 def duplicate(self): 41 return N(*self.mValue) 42 43 def __hash__(self): 44 return hash(self.mValue) 45 46 def __repr__(self): 47 return "N %s" % (self.getText(),) 48 49 def __eq__( self, comp ): 50 return self.mValue == comp.mValue 51 52 def getFirst(self): 53 return self.mValue[N.FIRST] 54 55 def setFirst(self, value): 56 self.mValue[N.FIRST] = value 57 58 def getLast(self): 59 return self.mValue[N.LAST] 60 61 def setLast(self, value): 62 self.mValue[N.LAST] = value 63 64 def getMiddle(self): 65 return self.mValue[N.MIDDLE] 66 67 def setMiddle(self, value): 68 self.mValue[N.MIDDLE] = value 69 70 def getPrefix(self): 71 return self.mValue[N.PREFIX] 72 73 def setPrefix(self, value): 74 self.mValue[N.PREFIX] = value 75 76 def getSuffix(self): 77 return self.mValue[N.SUFFIX] 78 79 def setSuffix(self, value): 80 self.mValue[N.SUFFIX] = value 81 82 def getFullName(self): 83 84 def _stringOrList(item): 85 return item if isinstance(item, basestring) else " ".join(item) 86 87 results = [] 88 for i in (N.PREFIX, N.FIRST, N.MIDDLE, N.LAST, N.SUFFIX): 89 result = _stringOrList(self.mValue[i]) 90 if result: 91 results.append(result) 92 93 return " ".join(results) 94 95 def parse(self, data): 96 self.mValue = utils.parseDoubleNestedList(data, N.MAXITEMS) 97 98 def generate(self, os): 99 utils.generateDoubleNestedList(os, self.mValue) 100 101 def getValue(self): 102 return self.mValue 103 104 def setValue(self, value): 105 self.mValue = value 106