def url(self, name, value=None, id=None, **attrs): kw = {'type': 'text', 'maxlength': 150, 'class_': 'url'} kw.update(attrs) value = self.value(name, value) if value and value.startswith('http://'): value = value[len('http://'):] return literal('http://') + tags.text(name, value, id, **kw)
def excerpt(text, phrase, radius=100, excerpt_string="..."): """Extract an excerpt from the ``text``, or '' if the phrase isn't found. ``phrase`` Phrase to excerpt from ``text`` ``radius`` How many surrounding characters to include ``excerpt_string`` Characters surrounding entire excerpt Example:: >>> excerpt("hello my world", "my", 3) '...lo my wo...' """ if not text or not phrase: return text pat = re.compile("(.{0,%s}%s.{0,%s})" % (radius, re.escape(phrase), radius), re.I) match = pat.search(text) if not match: return "" excerpt = match.expand(r"\1") if match.start(1) > 0: excerpt = excerpt_string + excerpt if match.end(1) < len(text): excerpt = excerpt + excerpt_string if hasattr(text, "__html__"): return literal(excerpt) else: return excerpt
def url(self, name, value=None, id=None, **attrs): kw = {'type': 'text', 'maxlength': 150, 'class_': 'url'} kw.update(attrs) value = self.value(name, value) if value and value.startswith('http://'): value = value[len('http://'):] return literal(u'http://') + tags.text(name, value, id, **kw)
def excerpt(text, phrase, radius=100, excerpt_string="..."): """Extract an excerpt from the ``text``, or '' if the phrase isn't found. ``phrase`` Phrase to excerpt from ``text`` ``radius`` How many surrounding characters to include ``excerpt_string`` Characters surrounding entire excerpt Example:: >>> excerpt("hello my world", "my", 3) '...lo my wo...' """ if not text or not phrase: return text pat = re.compile( '(.{0,%s}%s.{0,%s})' % (radius, re.escape(phrase), radius), re.I) match = pat.search(text) if not match: return "" excerpt = match.expand(r'\1') if match.start(1) > 0: excerpt = excerpt_string + excerpt if match.end(1) < len(text): excerpt = excerpt + excerpt_string if hasattr(text, '__html__'): return literal(excerpt) else: return excerpt
def default_header_ordered_column_format( self, column_number, column_name, header_label ): dir_char = "▲" if self.order_dir == "asc" else "▼" header_label = HTML( header_label, HTML.tag("span", literal(dir_char), class_="marker") ) if column_name == "_numbered": column_name = "numbered" class_name = "c%s ordering %s %s" % (column_number, self.order_dir, column_name) return HTML.tag("td", header_label, class_=class_name)
def colour(self, name, value=None, id=None, **attrs): kw = {'maxlength': 50, 'size': 20, 'class_': 'colour'} kw.update(attrs) kw['size'] = min((kw['maxlength'], kw['size'])) id = id or name value = self.value(name, value) if value and value[0] == '#': value = value[1:] return literal('#') + tags.text(name, value, id, **kw)
def test_compose_attrs(html5_attribute_table): separators = [ ('space-separated', ' '), ('comma-separated', ', '), ('list of integers', ','), ('list of floating-point numbers', ','), ('media query list', ', '), ('css declarations', '; '), ] html5_compose_attrs = {} for row in html5_attribute_table: value = row.value.lower() for description, separator in separators: if description in value: html5_compose_attrs[row.attribute] = literal(separator) break assert html5_compose_attrs['style'] == literal('; '), \ "scraped results do not look sane" assert html5_compose_attrs['class'] == literal(' '), \ "scraped results do not look sane" assert HTML.compose_attrs == html5_compose_attrs
def colour(self, name, value=None, id=None, **attrs): kw = {"maxlength": 50, "size": 20} kw.update(attrs) if kw["size"] is not None: kw["size"] = min((kw["maxlength"], kw["size"])) kw["class_"] = self._fix_class(attrs, "colour") id = id or name value = self.value(name, value) if value and value[0] == "#": value = value[1:] return literal("#") + tags.text(name, value, self._fix_id(id), **kw)
def document(self): """Render the error document""" # TODO: this will break - adjust to flask response resp = request.environ.get("pylons.original_response") if resp is not None: unicode_body = str2unicode(resp.body) content = literal(unicode_body) else: message = request.GET.get("message", request.POST.get("message", "")) content = escape(message) code = request.GET.get("code", request.POST.get("code", str(resp.status_int))) page = error_document_template % dict( prefix=request.environ.get("SCRIPT_NAME", ""), code=escape(code), message=content, ) return page
def markdown(text): """Parses a given string using Markdown.""" return literal(md_parser(text))