def parse_into_pages(self, raw): """Given a bytestring, return a list of pages. Subclasses extend this to implement additional semantics. """ pages = list(split_and_escape(raw)) npages = len(pages) # Check for too few pages. if npages < self.min_pages: type_name = self.__class__.__name__[:-len('resource')] msg = "%s resources must have at least %s pages; %s has %s." msg %= ( type_name , ORDINALS[self.min_pages] , self.fs , ORDINALS[npages] ) raise SyntaxError(msg) # Check for too many pages. This is user error. if self.max_pages is not None and npages > self.max_pages: type_name = self.__class__.__name__[:-len('resource')] msg = "%s resources must have at most %s pages; %s has %s." msg %= ( type_name , ORDINALS[self.max_pages] , self.fs , ORDINALS[npages] ) raise SyntaxError(msg) return pages
def compile_email_spt(fpath): r = {} with open(fpath) as f: pages = list(split_and_escape(f.read())) for i, page in enumerate(pages, 1): tmpl = b'\n' * page.offset + page.content content_type, renderer = parse_specline(page.header) key = 'subject' if i == 1 else content_type r[key] = SimplateLoader(fpath, tmpl).load(jinja_env, fpath) return r
def extract_spt(fileobj, *args, **kw): pages = list(split_and_escape(fileobj.read())) npages = len(pages) for i, page in enumerate(pages, 1): f = BytesIO(b'\n' * page.offset + page.content) content_type, renderer = parse_specline(page.header) extractor = None if (i == npages and not page.header) or content_type == 'text/html' or renderer == 'jinja2': extractor = jinja2.ext.babel_extract elif i < 3: extractor = extract_python if extractor: for match in extractor(f, *args, **kw): yield match
def extract_spt(fileobj, *args, **kw): pages = list(split_and_escape(fileobj.read())) npages = len(pages) for i, page in enumerate(pages, 1): f = BytesIO(b'\n' * page.offset + page.content) content_type, renderer = parse_specline(page.header) extractor = None if (i == npages and not page.header) or content_type in ('text/html', 'text/plain'): extractor = jinja2.ext.babel_extract elif i < 3: extractor = extract_python if extractor: for match in extractor(f, *args, **kw): yield match