Coverage for pdfrw/pdfrw/objects/pdfarray.py: 62%

Shortcuts on this page

r m x   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

47 statements  

1# A part of pdfrw (https://github.com/pmaupin/pdfrw) 

2# Copyright (C) 2006-2015 Patrick Maupin, Austin, Texas 

3# MIT license -- See LICENSE.txt for details 

4 

5from .pdfindirect import PdfIndirect 

6from .pdfobject import PdfObject 

7 

8 

9def _resolved(): 

10 pass 

11 

12 

13class PdfArray(list): 

14 ''' A PdfArray maps the PDF file array object into a Python list. 

15 It has an indirect attribute which defaults to False. 

16 ''' 

17 indirect = False 

18 

19 def __init__(self, source=[]): 

20 self._resolve = self._resolver 

21 self.extend(source) 

22 

23 def _resolver(self, isinstance=isinstance, enumerate=enumerate, 

24 listiter=list.__iter__, PdfIndirect=PdfIndirect, 

25 resolved=_resolved, PdfNull=PdfObject('null')): 

26 for index, value in enumerate(list.__iter__(self)): 

27 if isinstance(value, PdfIndirect): 

28 value = value.real_value() 

29 if value is None: 

30 value = PdfNull 

31 self[index] = value 

32 self._resolve = resolved 

33 

34 def __getitem__(self, index, listget=list.__getitem__): 

35 self._resolve() 

36 return listget(self, index) 

37 

38 try: 

39 def __getslice__(self, i, j, listget=list.__getslice__): 

40 self._resolve() 

41 return listget(self, i, j) 

42 except AttributeError: 

43 pass 

44 

45 def __iter__(self, listiter=list.__iter__): 

46 self._resolve() 

47 return listiter(self) 

48 

49 def count(self, item): 

50 self._resolve() 

51 return list.count(self, item) 

52 

53 def index(self, item): 

54 self._resolve() 

55 return list.index(self, item) 

56 

57 def remove(self, item): 

58 self._resolve() 

59 return list.remove(self, item) 

60 

61 def sort(self, *args, **kw): 

62 self._resolve() 

63 return list.sort(self, *args, **kw) 

64 

65 def pop(self, *args): 

66 self._resolve() 

67 return list.pop(self, *args) 

68 

69 def __reversed__(self): 

70 self._resolve() 

71 return list.__reversed__(self)