def display_buffer(self, start=None, end=None, raw=False): if raw: self.caller.msg(self.get_buffer()) return # Generate a title string title = '{CText Editor' if self.key: title += ' {C[{c%s{C]' % self.key title = evennia_color.evennia_color_trunc_dots(title, 78) # Generate a footer statistic string nlines = len(self.text_buffer) if self.maxlines and nlines > self.maxlines: slines = '{r%d{C/%d' % (nlines, self.maxlines) elif self.maxlines: slines = '{C%d/%d' % (nlines, self.maxlines) else: slines = '{C%d' % (nlines) nwords = len([ word for word in re.split(r'\s+', '\n'.join(self.text_buffer)) if word != '']) if self.maxwords and nwords > self.maxwords: swords = '{r%d{C/%d' % (nwords, self.maxwords) elif self.maxwords: swords = '{C%d/%d' % (nwords, self.maxwords) else: swords = '{C%d' % (nwords) nchars = len('\n'.join(self.text_buffer)) if self.maxchars and nchars > self.maxchars: schars = '{r%d{C/%d' % (nchars, self.maxchars) elif self.maxchars: schars = '{C%d/%d' % (nchars, self.maxchars) else: schars = '{C%d' % (nchars) footer_info = '{C[l:%s {Cw:%s {Cc:%s{C]' % (slines, swords, schars) # Combine the strings into a header and footer header = evennia_color.EvenniaColorCanvas() header.evennia_import('{w------------------------------------------------------------------------------') header.draw_string(header.width() / 2 - (evennia_color.evennia_color_len(title) / 2), 0, title) footer = evennia_color.EvenniaColorCanvas() footer.evennia_import('{w---------------------------------------------------------------{b[{c:h{b for help]{w--') footer.draw_string(3, 0, footer_info) self.caller.msg(header.evennia_export()) if self.text_buffer == []: self.caller.msg(' {rEmpty Buffer') else: for lineno, line in enumerate(self.text_buffer): if self.color: self.caller.msg('{c%5s {n%s' % (lineno + 1, line)) else: self.caller.msg('{c%5s {n%s' % (lineno + 1, line.replace('%', '%%').replace('{', '{{'))) self.caller.msg(footer.evennia_export())