Package Pyblio :: Package Format :: Module Misc
[hide private]
[frames] | no frames]

Source Code for Module Pyblio.Format.Misc

 1  # This file is part of pybliographer 
 2  #  
 3  # Copyright (C) 1998-2006 Frederic GOBRY 
 4  # Email : gobry@pybliographer.org 
 5  #           
 6  # This program is free software; you can redistribute it and/or 
 7  # modify it under the terms of the GNU General Public License 
 8  # as published by the Free Software Foundation; either version 2  
 9  # of the License, or (at your option) any later version. 
10  #    
11  # This program is distributed in the hope that it will be useful, 
12  # but WITHOUT ANY WARRANTY; without even the implied warranty of 
13  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
14  # GNU General Public License for more details.  
15  #  
16  # You should have received a copy of the GNU General Public License 
17  # along with this program; if not, write to the Free Software 
18  # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA. 
19  # 
20   
21  """ 
22  Miscellanous formatting helpers. 
23  """ 
24   
25  from Pyblio.Format.DSL import lazy 
26   
27 -def plural(record, sequence, zero=None, one=None, two=None, more=''):
28 """ 29 Generate different outputs depending on the number of items in a sequence. 30 31 >>> editor = initialsLast(all('editor')) + plural('editor', 32 one=', editor', 33 more=', editors') 34 35 @param sequence: 36 The sequence whose item count will be used to generate the output. 37 @type sequence: 38 list 39 40 @param zero: 41 value returned when the sequence is empty 42 @param one: 43 value returned when the sequence has one item 44 @param two: 45 value returned when the sequence has two items 46 @param more: 47 value returned when the sequence has more than two items 48 49 @note when a given parameter is not provided but should be returned, 50 then the default is to use the value of the L{more} parameter. 51 """ 52 53 l = len (sequence(record)) 54 55 if l == 0 and zero is not None: 56 return zero(record) 57 elif l == 1 and one is not None: 58 return one(record) 59 elif l == 2 and two is not None: 60 return two(record) 61 else: 62 return more(record)
63 64 plural = lazy (plural) 65