Mercurial > hg > decoupage
annotate decoupage/formatters.py @ 107:450aff4c97e3
py35 compat
author | Jeff Hammel <k0scist@gmail.com> |
---|---|
date | Fri, 31 Mar 2017 17:06:59 -0700 |
parents | c382bdd01751 |
children |
rev | line source |
---|---|
9
ec2d0d850b83
add ability to print formatters with decoupage-formatters console_script
k0s <k0scist@gmail.com>
parents:
1
diff
changeset
|
1 #!/usr/bin/env python |
ec2d0d850b83
add ability to print formatters with decoupage-formatters console_script
k0s <k0scist@gmail.com>
parents:
1
diff
changeset
|
2 |
67
fdb77c57bd22
make sort formatter more extensible and add a random method
Jeff Hammel <jhammel@mozilla.com>
parents:
65
diff
changeset
|
3 import random |
9
ec2d0d850b83
add ability to print formatters with decoupage-formatters console_script
k0s <k0scist@gmail.com>
parents:
1
diff
changeset
|
4 import sys |
79
a8a74f6bcf93
add some dates and fix some bugs!
Jeff Hammel <jhammel@mozilla.com>
parents:
77
diff
changeset
|
5 from datetime import datetime |
0
fa2005f769eb
adding decoupage from http://my-svn.assembla.com/svn/arbez/decoupage r355
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
6 from fnmatch import fnmatch |
9
ec2d0d850b83
add ability to print formatters with decoupage-formatters console_script
k0s <k0scist@gmail.com>
parents:
1
diff
changeset
|
7 from pkg_resources import iter_entry_points |
0
fa2005f769eb
adding decoupage from http://my-svn.assembla.com/svn/arbez/decoupage r355
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
8 |
1
93ab6d1968bd
adding comments about what this file contains
jhammel@jhammel-laptop
parents:
0
diff
changeset
|
9 ### abstract base classes for formatters |
93ab6d1968bd
adding comments about what this file contains
jhammel@jhammel-laptop
parents:
0
diff
changeset
|
10 |
0
fa2005f769eb
adding decoupage from http://my-svn.assembla.com/svn/arbez/decoupage r355
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
11 class FormatterBase(object): |
fa2005f769eb
adding decoupage from http://my-svn.assembla.com/svn/arbez/decoupage r355
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
12 """ |
68 | 13 abstract base class if you want to use __init__ methods |
14 in the form of | |
0
fa2005f769eb
adding decoupage from http://my-svn.assembla.com/svn/arbez/decoupage r355
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
15 'arg1, arg2, arg3, kw1=foo, kw2=bar, kw3=baz |
fa2005f769eb
adding decoupage from http://my-svn.assembla.com/svn/arbez/decoupage r355
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
16 """ |
fa2005f769eb
adding decoupage from http://my-svn.assembla.com/svn/arbez/decoupage r355
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
17 |
10 | 18 defaults = {} # default values for attrs to be set on the instance |
68 | 19 |
0
fa2005f769eb
adding decoupage from http://my-svn.assembla.com/svn/arbez/decoupage r355
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
20 def __init__(self, string): |
70
262fb90a54b4
make template loading lenient and other fixes; bump version
Jeff Hammel <jhammel@mozilla.com>
parents:
68
diff
changeset
|
21 self._string = string |
10 | 22 args = [ i.strip() for i in string.split(',')] |
0
fa2005f769eb
adding decoupage from http://my-svn.assembla.com/svn/arbez/decoupage r355
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
23 for index, arg in enumerate(args): |
fa2005f769eb
adding decoupage from http://my-svn.assembla.com/svn/arbez/decoupage r355
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
24 if '=' in arg: |
fa2005f769eb
adding decoupage from http://my-svn.assembla.com/svn/arbez/decoupage r355
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
25 break |
fa2005f769eb
adding decoupage from http://my-svn.assembla.com/svn/arbez/decoupage r355
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
26 else: |
fa2005f769eb
adding decoupage from http://my-svn.assembla.com/svn/arbez/decoupage r355
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
27 self.args = args |
10 | 28 for key, default in self.defaults.items(): |
29 setattr(self, key, default) | |
0
fa2005f769eb
adding decoupage from http://my-svn.assembla.com/svn/arbez/decoupage r355
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
30 return |
fa2005f769eb
adding decoupage from http://my-svn.assembla.com/svn/arbez/decoupage r355
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
31 self.args = args[:index] |
fa2005f769eb
adding decoupage from http://my-svn.assembla.com/svn/arbez/decoupage r355
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
32 self.kw = dict([i.split('=', 1) for i in args[index:]]) |
10 | 33 for key, default in self.defaults.items(): |
34 value = self.kw.pop(key, default) | |
35 setattr(self, key, value) | |
0
fa2005f769eb
adding decoupage from http://my-svn.assembla.com/svn/arbez/decoupage r355
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
36 |
1
93ab6d1968bd
adding comments about what this file contains
jhammel@jhammel-laptop
parents:
0
diff
changeset
|
37 |
93ab6d1968bd
adding comments about what this file contains
jhammel@jhammel-laptop
parents:
0
diff
changeset
|
38 ### formatters |
93ab6d1968bd
adding comments about what this file contains
jhammel@jhammel-laptop
parents:
0
diff
changeset
|
39 |
0
fa2005f769eb
adding decoupage from http://my-svn.assembla.com/svn/arbez/decoupage r355
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
40 class Ignore(object): |
27 | 41 """ |
68 | 42 ignore files of a glob patterns. |
28 | 43 These files will not be linked to in the template. |
27 | 44 e.g. /ignore = .* *.pdf # don't list dotfiles and PDFs |
45 """ | |
0
fa2005f769eb
adding decoupage from http://my-svn.assembla.com/svn/arbez/decoupage r355
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
46 |
fa2005f769eb
adding decoupage from http://my-svn.assembla.com/svn/arbez/decoupage r355
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
47 def __init__(self, ignore): |
12
9f91acf9874c
* split on space in formatters to be consist with everything else
k0s <k0scist@gmail.com>
parents:
10
diff
changeset
|
48 self.match = ignore.split() |
0
fa2005f769eb
adding decoupage from http://my-svn.assembla.com/svn/arbez/decoupage r355
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
49 |
fa2005f769eb
adding decoupage from http://my-svn.assembla.com/svn/arbez/decoupage r355
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
50 def __call__(self, request, data): |
fa2005f769eb
adding decoupage from http://my-svn.assembla.com/svn/arbez/decoupage r355
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
51 _files = [] |
fa2005f769eb
adding decoupage from http://my-svn.assembla.com/svn/arbez/decoupage r355
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
52 for f in data['files']: |
fa2005f769eb
adding decoupage from http://my-svn.assembla.com/svn/arbez/decoupage r355
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
53 for pattern in self.match: |
fa2005f769eb
adding decoupage from http://my-svn.assembla.com/svn/arbez/decoupage r355
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
54 if fnmatch(f['name'], pattern): |
fa2005f769eb
adding decoupage from http://my-svn.assembla.com/svn/arbez/decoupage r355
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
55 break |
fa2005f769eb
adding decoupage from http://my-svn.assembla.com/svn/arbez/decoupage r355
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
56 else: |
fa2005f769eb
adding decoupage from http://my-svn.assembla.com/svn/arbez/decoupage r355
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
57 _files.append(f) |
fa2005f769eb
adding decoupage from http://my-svn.assembla.com/svn/arbez/decoupage r355
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
58 data['files'] = _files |
fa2005f769eb
adding decoupage from http://my-svn.assembla.com/svn/arbez/decoupage r355
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
59 |
fa2005f769eb
adding decoupage from http://my-svn.assembla.com/svn/arbez/decoupage r355
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
60 |
fa2005f769eb
adding decoupage from http://my-svn.assembla.com/svn/arbez/decoupage r355
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
61 class All(object): |
fa2005f769eb
adding decoupage from http://my-svn.assembla.com/svn/arbez/decoupage r355
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
62 """ |
68 | 63 only pass files of a certain pattern; |
0
fa2005f769eb
adding decoupage from http://my-svn.assembla.com/svn/arbez/decoupage r355
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
64 the inverse of ignore |
12
9f91acf9874c
* split on space in formatters to be consist with everything else
k0s <k0scist@gmail.com>
parents:
10
diff
changeset
|
65 calling all with no arguments means only files with descriptions are used |
0
fa2005f769eb
adding decoupage from http://my-svn.assembla.com/svn/arbez/decoupage r355
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
66 """ |
68 | 67 |
0
fa2005f769eb
adding decoupage from http://my-svn.assembla.com/svn/arbez/decoupage r355
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
68 def __init__(self, pattern): |
12
9f91acf9874c
* split on space in formatters to be consist with everything else
k0s <k0scist@gmail.com>
parents:
10
diff
changeset
|
69 self.match = pattern.split() |
0
fa2005f769eb
adding decoupage from http://my-svn.assembla.com/svn/arbez/decoupage r355
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
70 |
fa2005f769eb
adding decoupage from http://my-svn.assembla.com/svn/arbez/decoupage r355
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
71 def __call__(self, request, data): |
fa2005f769eb
adding decoupage from http://my-svn.assembla.com/svn/arbez/decoupage r355
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
72 _files = [] |
fa2005f769eb
adding decoupage from http://my-svn.assembla.com/svn/arbez/decoupage r355
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
73 for f in data['files']: |
fa2005f769eb
adding decoupage from http://my-svn.assembla.com/svn/arbez/decoupage r355
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
74 if self.match: |
fa2005f769eb
adding decoupage from http://my-svn.assembla.com/svn/arbez/decoupage r355
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
75 for pattern in self.match: |
fa2005f769eb
adding decoupage from http://my-svn.assembla.com/svn/arbez/decoupage r355
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
76 if fnmatch(f['name'], pattern): |
fa2005f769eb
adding decoupage from http://my-svn.assembla.com/svn/arbez/decoupage r355
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
77 _files.append(f) |
fa2005f769eb
adding decoupage from http://my-svn.assembla.com/svn/arbez/decoupage r355
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
78 break |
fa2005f769eb
adding decoupage from http://my-svn.assembla.com/svn/arbez/decoupage r355
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
79 else: |
79
a8a74f6bcf93
add some dates and fix some bugs!
Jeff Hammel <jhammel@mozilla.com>
parents:
77
diff
changeset
|
80 # use only files where the title or description is not None |
a8a74f6bcf93
add some dates and fix some bugs!
Jeff Hammel <jhammel@mozilla.com>
parents:
77
diff
changeset
|
81 if (f['description'] is not None) or (f.get('title') is not None): |
0
fa2005f769eb
adding decoupage from http://my-svn.assembla.com/svn/arbez/decoupage r355
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
82 _files.append(f) |
fa2005f769eb
adding decoupage from http://my-svn.assembla.com/svn/arbez/decoupage r355
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
83 data['files'] = _files |
68 | 84 |
79
a8a74f6bcf93
add some dates and fix some bugs!
Jeff Hammel <jhammel@mozilla.com>
parents:
77
diff
changeset
|
85 |
67
fdb77c57bd22
make sort formatter more extensible and add a random method
Jeff Hammel <jhammel@mozilla.com>
parents:
65
diff
changeset
|
86 class Sort(FormatterBase): |
27 | 87 """ |
68 | 88 determines how to sort the files in a directory; |
27 | 89 right now only by case-insensitive alphabetically |
28 | 90 * reverse : reverse the order of the sorting |
27 | 91 """ |
67
fdb77c57bd22
make sort formatter more extensible and add a random method
Jeff Hammel <jhammel@mozilla.com>
parents:
65
diff
changeset
|
92 defaults = {'order': 'name'} |
68 | 93 |
85 | 94 def __init__(self, pattern=''): |
67
fdb77c57bd22
make sort formatter more extensible and add a random method
Jeff Hammel <jhammel@mozilla.com>
parents:
65
diff
changeset
|
95 FormatterBase.__init__(self, pattern) |
fdb77c57bd22
make sort formatter more extensible and add a random method
Jeff Hammel <jhammel@mozilla.com>
parents:
65
diff
changeset
|
96 self.orders = {'name': self.name, |
fdb77c57bd22
make sort formatter more extensible and add a random method
Jeff Hammel <jhammel@mozilla.com>
parents:
65
diff
changeset
|
97 'random': self.random, |
fdb77c57bd22
make sort formatter more extensible and add a random method
Jeff Hammel <jhammel@mozilla.com>
parents:
65
diff
changeset
|
98 } |
68 | 99 # TODO: date |
100 | |
22 | 101 def __call__(self, request, data): |
102 | |
67
fdb77c57bd22
make sort formatter more extensible and add a random method
Jeff Hammel <jhammel@mozilla.com>
parents:
65
diff
changeset
|
103 sort = self.orders.get(request.GET.get('order', self.order), self.name) |
fdb77c57bd22
make sort formatter more extensible and add a random method
Jeff Hammel <jhammel@mozilla.com>
parents:
65
diff
changeset
|
104 data['files'] = sort(data['files']) |
22 | 105 |
106 if 'reverse' in self.args: | |
23
d1b1019d9254
unfold the list out of the reverseiterator which otherwise gets consumed and funky
egj@socialplanning.org
parents:
22
diff
changeset
|
107 data['files'] = list(reversed(data['files'])) |
67
fdb77c57bd22
make sort formatter more extensible and add a random method
Jeff Hammel <jhammel@mozilla.com>
parents:
65
diff
changeset
|
108 |
fdb77c57bd22
make sort formatter more extensible and add a random method
Jeff Hammel <jhammel@mozilla.com>
parents:
65
diff
changeset
|
109 def name(self, files): |
fdb77c57bd22
make sort formatter more extensible and add a random method
Jeff Hammel <jhammel@mozilla.com>
parents:
65
diff
changeset
|
110 return sorted(files, key=lambda x: x['name'].lower()) |
fdb77c57bd22
make sort formatter more extensible and add a random method
Jeff Hammel <jhammel@mozilla.com>
parents:
65
diff
changeset
|
111 |
fdb77c57bd22
make sort formatter more extensible and add a random method
Jeff Hammel <jhammel@mozilla.com>
parents:
65
diff
changeset
|
112 def random(self, files): |
fdb77c57bd22
make sort formatter more extensible and add a random method
Jeff Hammel <jhammel@mozilla.com>
parents:
65
diff
changeset
|
113 random.shuffle(files) |
fdb77c57bd22
make sort formatter more extensible and add a random method
Jeff Hammel <jhammel@mozilla.com>
parents:
65
diff
changeset
|
114 return files |
fdb77c57bd22
make sort formatter more extensible and add a random method
Jeff Hammel <jhammel@mozilla.com>
parents:
65
diff
changeset
|
115 |
0
fa2005f769eb
adding decoupage from http://my-svn.assembla.com/svn/arbez/decoupage r355
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
116 |
45
650e1b62a628
add order formatter (untested)
Jeff Hammel <jhammel@mozilla.com>
parents:
39
diff
changeset
|
117 class Order(object): |
650e1b62a628
add order formatter (untested)
Jeff Hammel <jhammel@mozilla.com>
parents:
39
diff
changeset
|
118 """ |
650e1b62a628
add order formatter (untested)
Jeff Hammel <jhammel@mozilla.com>
parents:
39
diff
changeset
|
119 put the files in a particular order |
650e1b62a628
add order formatter (untested)
Jeff Hammel <jhammel@mozilla.com>
parents:
39
diff
changeset
|
120 """ |
650e1b62a628
add order formatter (untested)
Jeff Hammel <jhammel@mozilla.com>
parents:
39
diff
changeset
|
121 def __init__(self, pattern): |
650e1b62a628
add order formatter (untested)
Jeff Hammel <jhammel@mozilla.com>
parents:
39
diff
changeset
|
122 if '=' in pattern: |
650e1b62a628
add order formatter (untested)
Jeff Hammel <jhammel@mozilla.com>
parents:
39
diff
changeset
|
123 key, value = pattern.split('=', 1) |
650e1b62a628
add order formatter (untested)
Jeff Hammel <jhammel@mozilla.com>
parents:
39
diff
changeset
|
124 assert key == 'file' |
650e1b62a628
add order formatter (untested)
Jeff Hammel <jhammel@mozilla.com>
parents:
39
diff
changeset
|
125 self.file = value |
650e1b62a628
add order formatter (untested)
Jeff Hammel <jhammel@mozilla.com>
parents:
39
diff
changeset
|
126 else: |
650e1b62a628
add order formatter (untested)
Jeff Hammel <jhammel@mozilla.com>
parents:
39
diff
changeset
|
127 self.order = [i.strip() for i in pattern.split(',')] |
68 | 128 |
45
650e1b62a628
add order formatter (untested)
Jeff Hammel <jhammel@mozilla.com>
parents:
39
diff
changeset
|
129 def __call__(self, request, data): |
650e1b62a628
add order formatter (untested)
Jeff Hammel <jhammel@mozilla.com>
parents:
39
diff
changeset
|
130 |
650e1b62a628
add order formatter (untested)
Jeff Hammel <jhammel@mozilla.com>
parents:
39
diff
changeset
|
131 if self.file: |
650e1b62a628
add order formatter (untested)
Jeff Hammel <jhammel@mozilla.com>
parents:
39
diff
changeset
|
132 raise NotImplementedError |
650e1b62a628
add order formatter (untested)
Jeff Hammel <jhammel@mozilla.com>
parents:
39
diff
changeset
|
133 |
650e1b62a628
add order formatter (untested)
Jeff Hammel <jhammel@mozilla.com>
parents:
39
diff
changeset
|
134 files = [] |
650e1b62a628
add order formatter (untested)
Jeff Hammel <jhammel@mozilla.com>
parents:
39
diff
changeset
|
135 file_hash = dict([(i['name'], i) for i in data['files']]) |
650e1b62a628
add order formatter (untested)
Jeff Hammel <jhammel@mozilla.com>
parents:
39
diff
changeset
|
136 for f in self.order: |
650e1b62a628
add order formatter (untested)
Jeff Hammel <jhammel@mozilla.com>
parents:
39
diff
changeset
|
137 files.append(file_hash.get(f, None)) |
650e1b62a628
add order formatter (untested)
Jeff Hammel <jhammel@mozilla.com>
parents:
39
diff
changeset
|
138 files = [ i for i in files if i is not None ] |
650e1b62a628
add order formatter (untested)
Jeff Hammel <jhammel@mozilla.com>
parents:
39
diff
changeset
|
139 |
88 | 140 class DirectoryIndicator(FormatterBase): |
141 """indicate a directory""" | |
142 indicator = '/' | |
143 def __init__(self, indicator): | |
144 self.indicator = indicator.strip() or self.indicator | |
145 def __call__(self, request, data): | |
146 for f in data['files']: | |
147 if f.get('type') == 'directory': | |
148 title = f.get('title') | |
149 if title is not None: | |
150 f['title'] = '%s %s' % (title, self.indicator) | |
151 else: | |
152 description = f.get('description') or f['name'] | |
153 f['description'] = '%s %s' % (description, self.indicator) | |
45
650e1b62a628
add order formatter (untested)
Jeff Hammel <jhammel@mozilla.com>
parents:
39
diff
changeset
|
154 |
0
fa2005f769eb
adding decoupage from http://my-svn.assembla.com/svn/arbez/decoupage r355
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
155 class FilenameDescription(FormatterBase): |
28 | 156 """ |
157 obtain the description from the filename | |
158 the file extension (if any) will be dropped and | |
159 spaces will be substituted for underscores | |
160 """ | |
88 | 161 |
28 | 162 # TODO : deal with CamelCaseFilenames |
0
fa2005f769eb
adding decoupage from http://my-svn.assembla.com/svn/arbez/decoupage r355
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
163 |
51
8002dcdb8e82
add "-" to list of FilenameDescription separators
Jeff Hammel <jhammel@mozilla.com>
parents:
45
diff
changeset
|
164 separators = ['_', '-'] # space substitute separators |
53
9c15bde43ae6
dont capitalize unimportant words
Jeff Hammel <jhammel@mozilla.com>
parents:
51
diff
changeset
|
165 lesser_words = [ 'or', 'a', 'the', 'on', 'of' ] # unimportant words |
51
8002dcdb8e82
add "-" to list of FilenameDescription separators
Jeff Hammel <jhammel@mozilla.com>
parents:
45
diff
changeset
|
166 |
0
fa2005f769eb
adding decoupage from http://my-svn.assembla.com/svn/arbez/decoupage r355
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
167 def __call__(self, request, data): |
fa2005f769eb
adding decoupage from http://my-svn.assembla.com/svn/arbez/decoupage r355
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
168 for f in data['files']: |
fa2005f769eb
adding decoupage from http://my-svn.assembla.com/svn/arbez/decoupage r355
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
169 if f['description'] is None: |
fa2005f769eb
adding decoupage from http://my-svn.assembla.com/svn/arbez/decoupage r355
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
170 description = f['name'] |
28 | 171 if '.' in description: |
172 description = description.rsplit('.', 1)[0] | |
17
eab191e0b9b3
meaningful descriptions from filenames
k0s <k0scist@gmail.com>
parents:
16
diff
changeset
|
173 decription = description.strip('_') |
51
8002dcdb8e82
add "-" to list of FilenameDescription separators
Jeff Hammel <jhammel@mozilla.com>
parents:
45
diff
changeset
|
174 for separator in self.separators: |
8002dcdb8e82
add "-" to list of FilenameDescription separators
Jeff Hammel <jhammel@mozilla.com>
parents:
45
diff
changeset
|
175 if separator in description: |
53
9c15bde43ae6
dont capitalize unimportant words
Jeff Hammel <jhammel@mozilla.com>
parents:
51
diff
changeset
|
176 description = ' '.join([(i in self.lesser_words) and i or i.title() |
9c15bde43ae6
dont capitalize unimportant words
Jeff Hammel <jhammel@mozilla.com>
parents:
51
diff
changeset
|
177 for i in description.split(separator)]) |
9c15bde43ae6
dont capitalize unimportant words
Jeff Hammel <jhammel@mozilla.com>
parents:
51
diff
changeset
|
178 description = description[0].upper() + description[1:] |
0
fa2005f769eb
adding decoupage from http://my-svn.assembla.com/svn/arbez/decoupage r355
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
179 f['description'] = description |
fa2005f769eb
adding decoupage from http://my-svn.assembla.com/svn/arbez/decoupage r355
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
180 |
fa2005f769eb
adding decoupage from http://my-svn.assembla.com/svn/arbez/decoupage r355
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
181 |
fa2005f769eb
adding decoupage from http://my-svn.assembla.com/svn/arbez/decoupage r355
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
182 class TitleDescription(FormatterBase): |
28 | 183 """ |
68 | 184 splits a description into a title and a description via a separator in |
185 the description. The template will now have an additional variable, | |
28 | 186 'title', per file |
187 Arguments: | |
188 * separator: what separator to use (':' by default) | |
189 """ | |
190 # XXX what about setting the page title? | |
9
ec2d0d850b83
add ability to print formatters with decoupage-formatters console_script
k0s <k0scist@gmail.com>
parents:
1
diff
changeset
|
191 |
0
fa2005f769eb
adding decoupage from http://my-svn.assembla.com/svn/arbez/decoupage r355
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
192 defaults = { 'separator': ':' } |
68 | 193 |
0
fa2005f769eb
adding decoupage from http://my-svn.assembla.com/svn/arbez/decoupage r355
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
194 def __call__(self, request, data): |
70
262fb90a54b4
make template loading lenient and other fixes; bump version
Jeff Hammel <jhammel@mozilla.com>
parents:
68
diff
changeset
|
195 |
262fb90a54b4
make template loading lenient and other fixes; bump version
Jeff Hammel <jhammel@mozilla.com>
parents:
68
diff
changeset
|
196 # title webpage |
262fb90a54b4
make template loading lenient and other fixes; bump version
Jeff Hammel <jhammel@mozilla.com>
parents:
68
diff
changeset
|
197 title = self._string |
262fb90a54b4
make template loading lenient and other fixes; bump version
Jeff Hammel <jhammel@mozilla.com>
parents:
68
diff
changeset
|
198 if ':' in title: |
262fb90a54b4
make template loading lenient and other fixes; bump version
Jeff Hammel <jhammel@mozilla.com>
parents:
68
diff
changeset
|
199 _title, url = [i.strip() for i in title.split(':', 1)] |
262fb90a54b4
make template loading lenient and other fixes; bump version
Jeff Hammel <jhammel@mozilla.com>
parents:
68
diff
changeset
|
200 if '://' in url: |
262fb90a54b4
make template loading lenient and other fixes; bump version
Jeff Hammel <jhammel@mozilla.com>
parents:
68
diff
changeset
|
201 # XXX could also use urlparse |
262fb90a54b4
make template loading lenient and other fixes; bump version
Jeff Hammel <jhammel@mozilla.com>
parents:
68
diff
changeset
|
202 title = _title |
262fb90a54b4
make template loading lenient and other fixes; bump version
Jeff Hammel <jhammel@mozilla.com>
parents:
68
diff
changeset
|
203 data['link'] = url |
262fb90a54b4
make template loading lenient and other fixes; bump version
Jeff Hammel <jhammel@mozilla.com>
parents:
68
diff
changeset
|
204 data['title'] = title |
262fb90a54b4
make template loading lenient and other fixes; bump version
Jeff Hammel <jhammel@mozilla.com>
parents:
68
diff
changeset
|
205 |
262fb90a54b4
make template loading lenient and other fixes; bump version
Jeff Hammel <jhammel@mozilla.com>
parents:
68
diff
changeset
|
206 # title files |
0
fa2005f769eb
adding decoupage from http://my-svn.assembla.com/svn/arbez/decoupage r355
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
207 for f in data['files']: |
fa2005f769eb
adding decoupage from http://my-svn.assembla.com/svn/arbez/decoupage r355
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
208 if f['description'] and self.separator in f['description']: |
fa2005f769eb
adding decoupage from http://my-svn.assembla.com/svn/arbez/decoupage r355
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
209 title, description = f['description'].split(self.separator, 1) |
39
677e2fe1239c
using a blank title will have the title be the filename
Jeff Hammel <jhammel@mozilla.com>
parents:
35
diff
changeset
|
210 title = title.strip() |
677e2fe1239c
using a blank title will have the title be the filename
Jeff Hammel <jhammel@mozilla.com>
parents:
35
diff
changeset
|
211 description = description.strip() |
677e2fe1239c
using a blank title will have the title be the filename
Jeff Hammel <jhammel@mozilla.com>
parents:
35
diff
changeset
|
212 if not title: |
677e2fe1239c
using a blank title will have the title be the filename
Jeff Hammel <jhammel@mozilla.com>
parents:
35
diff
changeset
|
213 title = f['name'] |
0
fa2005f769eb
adding decoupage from http://my-svn.assembla.com/svn/arbez/decoupage r355
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
214 f['title'] = title |
fa2005f769eb
adding decoupage from http://my-svn.assembla.com/svn/arbez/decoupage r355
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
215 f['description'] = description |
fa2005f769eb
adding decoupage from http://my-svn.assembla.com/svn/arbez/decoupage r355
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
216 else: |
fa2005f769eb
adding decoupage from http://my-svn.assembla.com/svn/arbez/decoupage r355
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
217 f['title'] = f['description'] |
fa2005f769eb
adding decoupage from http://my-svn.assembla.com/svn/arbez/decoupage r355
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
218 f['description'] = None |
10 | 219 |
79
a8a74f6bcf93
add some dates and fix some bugs!
Jeff Hammel <jhammel@mozilla.com>
parents:
77
diff
changeset
|
220 class Datestamp(FormatterBase): |
a8a74f6bcf93
add some dates and fix some bugs!
Jeff Hammel <jhammel@mozilla.com>
parents:
77
diff
changeset
|
221 """ |
a8a74f6bcf93
add some dates and fix some bugs!
Jeff Hammel <jhammel@mozilla.com>
parents:
77
diff
changeset
|
222 datestamps for modified times |
a8a74f6bcf93
add some dates and fix some bugs!
Jeff Hammel <jhammel@mozilla.com>
parents:
77
diff
changeset
|
223 """ |
a8a74f6bcf93
add some dates and fix some bugs!
Jeff Hammel <jhammel@mozilla.com>
parents:
77
diff
changeset
|
224 # TODO: |
a8a74f6bcf93
add some dates and fix some bugs!
Jeff Hammel <jhammel@mozilla.com>
parents:
77
diff
changeset
|
225 # - currently we only do modified; TODO: created/modified/etc |
a8a74f6bcf93
add some dates and fix some bugs!
Jeff Hammel <jhammel@mozilla.com>
parents:
77
diff
changeset
|
226 # - use modified dateutil from bitsyblog; |
a8a74f6bcf93
add some dates and fix some bugs!
Jeff Hammel <jhammel@mozilla.com>
parents:
77
diff
changeset
|
227 # - e.g. javascript for things like e.g. "Yesterday" |
a8a74f6bcf93
add some dates and fix some bugs!
Jeff Hammel <jhammel@mozilla.com>
parents:
77
diff
changeset
|
228 key = 'modified' |
a8a74f6bcf93
add some dates and fix some bugs!
Jeff Hammel <jhammel@mozilla.com>
parents:
77
diff
changeset
|
229 |
a8a74f6bcf93
add some dates and fix some bugs!
Jeff Hammel <jhammel@mozilla.com>
parents:
77
diff
changeset
|
230 def __init__(self, string): |
a8a74f6bcf93
add some dates and fix some bugs!
Jeff Hammel <jhammel@mozilla.com>
parents:
77
diff
changeset
|
231 FormatterBase.__init__(self, string) |
a8a74f6bcf93
add some dates and fix some bugs!
Jeff Hammel <jhammel@mozilla.com>
parents:
77
diff
changeset
|
232 |
a8a74f6bcf93
add some dates and fix some bugs!
Jeff Hammel <jhammel@mozilla.com>
parents:
77
diff
changeset
|
233 # check formatting string now v later |
a8a74f6bcf93
add some dates and fix some bugs!
Jeff Hammel <jhammel@mozilla.com>
parents:
77
diff
changeset
|
234 datetime.now().strftime(self._string) |
a8a74f6bcf93
add some dates and fix some bugs!
Jeff Hammel <jhammel@mozilla.com>
parents:
77
diff
changeset
|
235 |
a8a74f6bcf93
add some dates and fix some bugs!
Jeff Hammel <jhammel@mozilla.com>
parents:
77
diff
changeset
|
236 def __call__(self, request, data): |
a8a74f6bcf93
add some dates and fix some bugs!
Jeff Hammel <jhammel@mozilla.com>
parents:
77
diff
changeset
|
237 for f in data['files']: |
a8a74f6bcf93
add some dates and fix some bugs!
Jeff Hammel <jhammel@mozilla.com>
parents:
77
diff
changeset
|
238 _datetime = f.get(self.key) |
80 | 239 if not _datetime: |
240 continue | |
79
a8a74f6bcf93
add some dates and fix some bugs!
Jeff Hammel <jhammel@mozilla.com>
parents:
77
diff
changeset
|
241 try: |
a8a74f6bcf93
add some dates and fix some bugs!
Jeff Hammel <jhammel@mozilla.com>
parents:
77
diff
changeset
|
242 datestamp = _datetime.strftime(self._string) |
a8a74f6bcf93
add some dates and fix some bugs!
Jeff Hammel <jhammel@mozilla.com>
parents:
77
diff
changeset
|
243 f['datestamp'] = datestamp |
a8a74f6bcf93
add some dates and fix some bugs!
Jeff Hammel <jhammel@mozilla.com>
parents:
77
diff
changeset
|
244 except: |
a8a74f6bcf93
add some dates and fix some bugs!
Jeff Hammel <jhammel@mozilla.com>
parents:
77
diff
changeset
|
245 raise # TODO: handle more better |
a8a74f6bcf93
add some dates and fix some bugs!
Jeff Hammel <jhammel@mozilla.com>
parents:
77
diff
changeset
|
246 |
32
983c13e1b71f
included a links formatter; restructure index template
k0s <k0scist@gmail.com>
parents:
24
diff
changeset
|
247 class Links(FormatterBase): |
983c13e1b71f
included a links formatter; restructure index template
k0s <k0scist@gmail.com>
parents:
24
diff
changeset
|
248 """ |
983c13e1b71f
included a links formatter; restructure index template
k0s <k0scist@gmail.com>
parents:
24
diff
changeset
|
249 allow list of links per item: |
983c13e1b71f
included a links formatter; restructure index template
k0s <k0scist@gmail.com>
parents:
24
diff
changeset
|
250 foo.html = description of foo; [PDF]=foo.pdf; [TXT]=foo.txt |
983c13e1b71f
included a links formatter; restructure index template
k0s <k0scist@gmail.com>
parents:
24
diff
changeset
|
251 """ |
68 | 252 |
77
ebf3d3c39cb7
fix this muthafuckin assertion
Jeff Hammel <jhammel@mozilla.com>
parents:
70
diff
changeset
|
253 fatal = False |
79
a8a74f6bcf93
add some dates and fix some bugs!
Jeff Hammel <jhammel@mozilla.com>
parents:
77
diff
changeset
|
254 defaults = {'separator': ';'} |
32
983c13e1b71f
included a links formatter; restructure index template
k0s <k0scist@gmail.com>
parents:
24
diff
changeset
|
255 |
983c13e1b71f
included a links formatter; restructure index template
k0s <k0scist@gmail.com>
parents:
24
diff
changeset
|
256 def __call__(self, request, data): |
983c13e1b71f
included a links formatter; restructure index template
k0s <k0scist@gmail.com>
parents:
24
diff
changeset
|
257 for f in data['files']: |
983c13e1b71f
included a links formatter; restructure index template
k0s <k0scist@gmail.com>
parents:
24
diff
changeset
|
258 if f['description'] and self.separator in f['description']: |
77
ebf3d3c39cb7
fix this muthafuckin assertion
Jeff Hammel <jhammel@mozilla.com>
parents:
70
diff
changeset
|
259 description, links = f['description'].split(self.separator, 1) |
ebf3d3c39cb7
fix this muthafuckin assertion
Jeff Hammel <jhammel@mozilla.com>
parents:
70
diff
changeset
|
260 links = links.rstrip().split(self.separator) |
ebf3d3c39cb7
fix this muthafuckin assertion
Jeff Hammel <jhammel@mozilla.com>
parents:
70
diff
changeset
|
261 |
ebf3d3c39cb7
fix this muthafuckin assertion
Jeff Hammel <jhammel@mozilla.com>
parents:
70
diff
changeset
|
262 if not min(['=' in link for link in links]): |
ebf3d3c39cb7
fix this muthafuckin assertion
Jeff Hammel <jhammel@mozilla.com>
parents:
70
diff
changeset
|
263 message = """%s |
ebf3d3c39cb7
fix this muthafuckin assertion
Jeff Hammel <jhammel@mozilla.com>
parents:
70
diff
changeset
|
264 |
ebf3d3c39cb7
fix this muthafuckin assertion
Jeff Hammel <jhammel@mozilla.com>
parents:
70
diff
changeset
|
265 %s: misformatted description: %s (separator: %s)""" % (f, |
ebf3d3c39cb7
fix this muthafuckin assertion
Jeff Hammel <jhammel@mozilla.com>
parents:
70
diff
changeset
|
266 self.__class__.__name__, |
ebf3d3c39cb7
fix this muthafuckin assertion
Jeff Hammel <jhammel@mozilla.com>
parents:
70
diff
changeset
|
267 description, |
ebf3d3c39cb7
fix this muthafuckin assertion
Jeff Hammel <jhammel@mozilla.com>
parents:
70
diff
changeset
|
268 self.separator) |
ebf3d3c39cb7
fix this muthafuckin assertion
Jeff Hammel <jhammel@mozilla.com>
parents:
70
diff
changeset
|
269 if self.fatal: |
ebf3d3c39cb7
fix this muthafuckin assertion
Jeff Hammel <jhammel@mozilla.com>
parents:
70
diff
changeset
|
270 raise AssertionError(message) |
ebf3d3c39cb7
fix this muthafuckin assertion
Jeff Hammel <jhammel@mozilla.com>
parents:
70
diff
changeset
|
271 else: |
ebf3d3c39cb7
fix this muthafuckin assertion
Jeff Hammel <jhammel@mozilla.com>
parents:
70
diff
changeset
|
272 print >> sys.stderr, message |
ebf3d3c39cb7
fix this muthafuckin assertion
Jeff Hammel <jhammel@mozilla.com>
parents:
70
diff
changeset
|
273 continue |
ebf3d3c39cb7
fix this muthafuckin assertion
Jeff Hammel <jhammel@mozilla.com>
parents:
70
diff
changeset
|
274 |
ebf3d3c39cb7
fix this muthafuckin assertion
Jeff Hammel <jhammel@mozilla.com>
parents:
70
diff
changeset
|
275 f['description'] = description |
ebf3d3c39cb7
fix this muthafuckin assertion
Jeff Hammel <jhammel@mozilla.com>
parents:
70
diff
changeset
|
276 |
ebf3d3c39cb7
fix this muthafuckin assertion
Jeff Hammel <jhammel@mozilla.com>
parents:
70
diff
changeset
|
277 links = [link.split('=', 1) for link in links] |
ebf3d3c39cb7
fix this muthafuckin assertion
Jeff Hammel <jhammel@mozilla.com>
parents:
70
diff
changeset
|
278 f['links'] = [{'text': text, 'link': link} |
67
fdb77c57bd22
make sort formatter more extensible and add a random method
Jeff Hammel <jhammel@mozilla.com>
parents:
65
diff
changeset
|
279 for text, link in links] |
32
983c13e1b71f
included a links formatter; restructure index template
k0s <k0scist@gmail.com>
parents:
24
diff
changeset
|
280 |
35
20e3d138dc98
better way of doing up; this breaks old behaviour so incrementing version
k0s <k0scist@gmail.com>
parents:
34
diff
changeset
|
281 |
20e3d138dc98
better way of doing up; this breaks old behaviour so incrementing version
k0s <k0scist@gmail.com>
parents:
34
diff
changeset
|
282 class Up(object): |
20e3d138dc98
better way of doing up; this breaks old behaviour so incrementing version
k0s <k0scist@gmail.com>
parents:
34
diff
changeset
|
283 """ |
20e3d138dc98
better way of doing up; this breaks old behaviour so incrementing version
k0s <k0scist@gmail.com>
parents:
34
diff
changeset
|
284 provides an up link to the path above: |
20e3d138dc98
better way of doing up; this breaks old behaviour so incrementing version
k0s <k0scist@gmail.com>
parents:
34
diff
changeset
|
285 /up = .. |
20e3d138dc98
better way of doing up; this breaks old behaviour so incrementing version
k0s <k0scist@gmail.com>
parents:
34
diff
changeset
|
286 """ |
20e3d138dc98
better way of doing up; this breaks old behaviour so incrementing version
k0s <k0scist@gmail.com>
parents:
34
diff
changeset
|
287 |
20e3d138dc98
better way of doing up; this breaks old behaviour so incrementing version
k0s <k0scist@gmail.com>
parents:
34
diff
changeset
|
288 def __init__(self, arg): |
20e3d138dc98
better way of doing up; this breaks old behaviour so incrementing version
k0s <k0scist@gmail.com>
parents:
34
diff
changeset
|
289 self.up = arg.strip() |
68 | 290 |
35
20e3d138dc98
better way of doing up; this breaks old behaviour so incrementing version
k0s <k0scist@gmail.com>
parents:
34
diff
changeset
|
291 def __call__(self, request, data): |
20e3d138dc98
better way of doing up; this breaks old behaviour so incrementing version
k0s <k0scist@gmail.com>
parents:
34
diff
changeset
|
292 path = request.path_info |
20e3d138dc98
better way of doing up; this breaks old behaviour so incrementing version
k0s <k0scist@gmail.com>
parents:
34
diff
changeset
|
293 if (path != '/') and self.up: |
20e3d138dc98
better way of doing up; this breaks old behaviour so incrementing version
k0s <k0scist@gmail.com>
parents:
34
diff
changeset
|
294 data['files'].insert(0, {'path': '..', |
65 | 295 'type': 'directory', |
35
20e3d138dc98
better way of doing up; this breaks old behaviour so incrementing version
k0s <k0scist@gmail.com>
parents:
34
diff
changeset
|
296 'name': path.rsplit('/', 1)[0] + '/', |
20e3d138dc98
better way of doing up; this breaks old behaviour so incrementing version
k0s <k0scist@gmail.com>
parents:
34
diff
changeset
|
297 'description': self.up}) |
20e3d138dc98
better way of doing up; this breaks old behaviour so incrementing version
k0s <k0scist@gmail.com>
parents:
34
diff
changeset
|
298 |
16
985b3a7e0e88
add formatters to include css and genshi templates
k0s <k0scist@gmail.com>
parents:
12
diff
changeset
|
299 class CSS(object): |
28 | 300 """specify CSS used (whitespace separated list)""" |
16
985b3a7e0e88
add formatters to include css and genshi templates
k0s <k0scist@gmail.com>
parents:
12
diff
changeset
|
301 |
985b3a7e0e88
add formatters to include css and genshi templates
k0s <k0scist@gmail.com>
parents:
12
diff
changeset
|
302 def __init__(self, arg): |
985b3a7e0e88
add formatters to include css and genshi templates
k0s <k0scist@gmail.com>
parents:
12
diff
changeset
|
303 self.css = arg.split() |
985b3a7e0e88
add formatters to include css and genshi templates
k0s <k0scist@gmail.com>
parents:
12
diff
changeset
|
304 def __call__(self, request, data): |
24 | 305 data['css'] = self.css |
16
985b3a7e0e88
add formatters to include css and genshi templates
k0s <k0scist@gmail.com>
parents:
12
diff
changeset
|
306 |
33
e384d4569ac3
include components necessary to make decoupage feel almost like a framework
k0s <k0scist@gmail.com>
parents:
32
diff
changeset
|
307 class JavaScript(object): |
e384d4569ac3
include components necessary to make decoupage feel almost like a framework
k0s <k0scist@gmail.com>
parents:
32
diff
changeset
|
308 """specify JS for the page""" |
e384d4569ac3
include components necessary to make decoupage feel almost like a framework
k0s <k0scist@gmail.com>
parents:
32
diff
changeset
|
309 |
e384d4569ac3
include components necessary to make decoupage feel almost like a framework
k0s <k0scist@gmail.com>
parents:
32
diff
changeset
|
310 def __init__(self, arg): |
e384d4569ac3
include components necessary to make decoupage feel almost like a framework
k0s <k0scist@gmail.com>
parents:
32
diff
changeset
|
311 self.scripts = arg.split() |
e384d4569ac3
include components necessary to make decoupage feel almost like a framework
k0s <k0scist@gmail.com>
parents:
32
diff
changeset
|
312 def __call__(self, request, data): |
e384d4569ac3
include components necessary to make decoupage feel almost like a framework
k0s <k0scist@gmail.com>
parents:
32
diff
changeset
|
313 data['scripts'] = self.scripts |
e384d4569ac3
include components necessary to make decoupage feel almost like a framework
k0s <k0scist@gmail.com>
parents:
32
diff
changeset
|
314 |
e384d4569ac3
include components necessary to make decoupage feel almost like a framework
k0s <k0scist@gmail.com>
parents:
32
diff
changeset
|
315 class Favicon(object): |
e384d4569ac3
include components necessary to make decoupage feel almost like a framework
k0s <k0scist@gmail.com>
parents:
32
diff
changeset
|
316 """specify favicons for the page""" |
e384d4569ac3
include components necessary to make decoupage feel almost like a framework
k0s <k0scist@gmail.com>
parents:
32
diff
changeset
|
317 |
e384d4569ac3
include components necessary to make decoupage feel almost like a framework
k0s <k0scist@gmail.com>
parents:
32
diff
changeset
|
318 def __init__(self, icon): |
e384d4569ac3
include components necessary to make decoupage feel almost like a framework
k0s <k0scist@gmail.com>
parents:
32
diff
changeset
|
319 self.icon = icon |
e384d4569ac3
include components necessary to make decoupage feel almost like a framework
k0s <k0scist@gmail.com>
parents:
32
diff
changeset
|
320 def __call__(self, request, data): |
e384d4569ac3
include components necessary to make decoupage feel almost like a framework
k0s <k0scist@gmail.com>
parents:
32
diff
changeset
|
321 data['icon'] = self.icon |
e384d4569ac3
include components necessary to make decoupage feel almost like a framework
k0s <k0scist@gmail.com>
parents:
32
diff
changeset
|
322 |
16
985b3a7e0e88
add formatters to include css and genshi templates
k0s <k0scist@gmail.com>
parents:
12
diff
changeset
|
323 class Include(object): |
985b3a7e0e88
add formatters to include css and genshi templates
k0s <k0scist@gmail.com>
parents:
12
diff
changeset
|
324 """include a file at the top of the body""" |
985b3a7e0e88
add formatters to include css and genshi templates
k0s <k0scist@gmail.com>
parents:
12
diff
changeset
|
325 |
985b3a7e0e88
add formatters to include css and genshi templates
k0s <k0scist@gmail.com>
parents:
12
diff
changeset
|
326 def __init__(self, arg): |
985b3a7e0e88
add formatters to include css and genshi templates
k0s <k0scist@gmail.com>
parents:
12
diff
changeset
|
327 self.include = arg |
985b3a7e0e88
add formatters to include css and genshi templates
k0s <k0scist@gmail.com>
parents:
12
diff
changeset
|
328 def __call__(self, request, data): |
985b3a7e0e88
add formatters to include css and genshi templates
k0s <k0scist@gmail.com>
parents:
12
diff
changeset
|
329 data['include'] = self.include |
985b3a7e0e88
add formatters to include css and genshi templates
k0s <k0scist@gmail.com>
parents:
12
diff
changeset
|
330 |
88 | 331 |
332 ### general purpose functions for formatters | |
68 | 333 |
9
ec2d0d850b83
add ability to print formatters with decoupage-formatters console_script
k0s <k0scist@gmail.com>
parents:
1
diff
changeset
|
334 def formatters(): |
ec2d0d850b83
add ability to print formatters with decoupage-formatters console_script
k0s <k0scist@gmail.com>
parents:
1
diff
changeset
|
335 formatters = {} |
ec2d0d850b83
add ability to print formatters with decoupage-formatters console_script
k0s <k0scist@gmail.com>
parents:
1
diff
changeset
|
336 for entry_point in iter_entry_points('decoupage.formatters'): |
ec2d0d850b83
add ability to print formatters with decoupage-formatters console_script
k0s <k0scist@gmail.com>
parents:
1
diff
changeset
|
337 try: |
ec2d0d850b83
add ability to print formatters with decoupage-formatters console_script
k0s <k0scist@gmail.com>
parents:
1
diff
changeset
|
338 formatter = entry_point.load() |
ec2d0d850b83
add ability to print formatters with decoupage-formatters console_script
k0s <k0scist@gmail.com>
parents:
1
diff
changeset
|
339 except: |
ec2d0d850b83
add ability to print formatters with decoupage-formatters console_script
k0s <k0scist@gmail.com>
parents:
1
diff
changeset
|
340 continue |
ec2d0d850b83
add ability to print formatters with decoupage-formatters console_script
k0s <k0scist@gmail.com>
parents:
1
diff
changeset
|
341 formatters[entry_point.name] = formatter |
ec2d0d850b83
add ability to print formatters with decoupage-formatters console_script
k0s <k0scist@gmail.com>
parents:
1
diff
changeset
|
342 return formatters |
ec2d0d850b83
add ability to print formatters with decoupage-formatters console_script
k0s <k0scist@gmail.com>
parents:
1
diff
changeset
|
343 |
107 | 344 |
9
ec2d0d850b83
add ability to print formatters with decoupage-formatters console_script
k0s <k0scist@gmail.com>
parents:
1
diff
changeset
|
345 def main(args=sys.argv[1:]): |
107 | 346 """CLI""" |
347 | |
9
ec2d0d850b83
add ability to print formatters with decoupage-formatters console_script
k0s <k0scist@gmail.com>
parents:
1
diff
changeset
|
348 for name, formatter in formatters().items(): |
107 | 349 description = '' |
350 if formatter.__doc__: | |
351 description = ': {}'.format(formatter.__doc__) | |
352 print ('{name}{description}'.format(name=name, | |
353 description=description)) | |
354 | |
9
ec2d0d850b83
add ability to print formatters with decoupage-formatters console_script
k0s <k0scist@gmail.com>
parents:
1
diff
changeset
|
355 |
ec2d0d850b83
add ability to print formatters with decoupage-formatters console_script
k0s <k0scist@gmail.com>
parents:
1
diff
changeset
|
356 if __name__ == '__main__': |
ec2d0d850b83
add ability to print formatters with decoupage-formatters console_script
k0s <k0scist@gmail.com>
parents:
1
diff
changeset
|
357 main() |