comparison piecrust/page.py @ 5:474c9882decf

Upgrade to Python 3.
author Ludovic Chabant <ludovic@chabant.com>
date Mon, 11 Aug 2014 22:36:47 -0700
parents f485ba500df3
children f5ca5c5bed85
comparison
equal deleted inserted replaced
4:7dc71c2dc9a8 5:474c9882decf
133 return '%s [%s]' % (self.content, self.fmt or '<default>') 133 return '%s [%s]' % (self.content, self.fmt or '<default>')
134 134
135 135
136 def json_load_segments(data): 136 def json_load_segments(data):
137 segments = {} 137 segments = {}
138 for key, seg_data in data.iteritems(): 138 for key, seg_data in data.items():
139 seg = ContentSegment() 139 seg = ContentSegment()
140 for p_data in seg_data: 140 for p_data in seg_data:
141 part = ContentSegmentPart(p_data['c'], p_data['f'], p_data['l']) 141 part = ContentSegmentPart(p_data['c'], p_data['f'], p_data['l'])
142 seg.parts.append(part) 142 seg.parts.append(part)
143 segments[key] = seg 143 segments[key] = seg
144 return segments 144 return segments
145 145
146 146
147 def json_save_segments(segments): 147 def json_save_segments(segments):
148 data = {} 148 data = {}
149 for key, seg in segments.iteritems(): 149 for key, seg in segments.items():
150 seg_data = [] 150 seg_data = []
151 for part in seg.parts: 151 for part in seg.parts:
152 p_data = {'c': part.content, 'f': part.fmt, 'l': part.line} 152 p_data = {'c': part.content, 'f': part.fmt, 'l': part.line}
153 seg_data.append(p_data) 153 seg_data.append(p_data)
154 data[key] = seg_data 154 data[key] = seg_data
160 return _do_load_page(app, path) 160 return _do_load_page(app, path)
161 except Exception as e: 161 except Exception as e:
162 logger.exception("Error loading page: %s" % 162 logger.exception("Error loading page: %s" %
163 os.path.relpath(path, app.root_dir)) 163 os.path.relpath(path, app.root_dir))
164 _, __, traceback = sys.exc_info() 164 _, __, traceback = sys.exc_info()
165 raise PageLoadingError(path, e), None, traceback 165 raise PageLoadingError(path, e).with_traceback(traceback)
166 166
167 167
168 def _do_load_page(app, path): 168 def _do_load_page(app, path):
169 exec_info = app.env.exec_info_stack.current_page_info 169 exec_info = app.env.exec_info_stack.current_page_info
170 if exec_info is None: 170 if exec_info is None:
195 name, ext = os.path.splitext(path) 195 name, ext = os.path.splitext(path)
196 header['format'] = auto_formats.get(ext, None) 196 header['format'] = auto_formats.get(ext, None)
197 197
198 config = PageConfiguration(header) 198 config = PageConfiguration(header)
199 content = parse_segments(raw, offset) 199 content = parse_segments(raw, offset)
200 config.set('segments', list(content.iterkeys())) 200 config.set('segments', list(content.keys()))
201 201
202 # Save to the cache. 202 # Save to the cache.
203 cache_data = { 203 cache_data = {
204 'config': config.get(), 204 'config': config.get(),
205 'content': json_save_segments(content)} 205 'content': json_save_segments(content)}