Ticket #2232: oneliner_simplify_blocks.3.patch
| File oneliner_simplify_blocks.3.patch, 12.8 KB (added by cboos, 7 years ago) |
|---|
-
trac/ticket/web_ui.py
294 294 message = util.escape(message) 295 295 else: 296 296 href = self.env.href.ticket(id) 297 message = util.shorten_line(message)298 297 if status != 'new': 299 298 message = ': '.join(filter(None, [ 300 299 resolution, 301 wiki_to_oneliner(message, self.env, db) 300 wiki_to_oneliner(message, self.env, db, 301 shorten=True) 302 302 ])) 303 303 else: 304 message = util.escape( message)304 message = util.escape(util.shorten_line(message)) 305 305 yield kinds[status], href, title, t, author, message 306 306 307 307 # Internal methods … … 486 486 message = '' 487 487 if len(field_changes) > 0: 488 488 message = ', '.join(field_changes) + ' changed.<br />' 489 message += wiki_to_oneliner( util.shorten_line(comment),490 s elf.env, db, absurls=absurls)489 message += wiki_to_oneliner(comment, self.env, db, 490 shorten=True, absurls=absurls) 491 491 yield 'editedticket', href, title, t, author, message -
trac/ticket/roadmap.py
318 318 absurls=True) 319 319 else: 320 320 href = self.env.href.milestone(name) 321 message = wiki_to_oneliner( shorten_line(description),322 s elf.env, db)321 message = wiki_to_oneliner(description, self.env, db, 322 shorten=True) 323 323 yield 'milestone', href, title, completed, None, message 324 324 325 325 # IRequestHandler methods -
trac/versioncontrol/web_ui/util.py
17 17 import re 18 18 import urllib 19 19 20 from trac.util import escape, format_datetime, pretty_timedelta, shorten_line, \20 from trac.util import escape, format_datetime, pretty_timedelta, shorten_line, \ 21 21 TracError 22 22 from trac.wiki import wiki_to_html, wiki_to_oneliner 23 23 … … 29 29 changes = {} 30 30 for rev in revs: 31 31 changeset = repos.get_changeset(rev) 32 message = changeset.message 33 shortlog = shorten_line(message) 32 message = changeset.message or '--' 34 33 files = None 35 34 if format == 'changelog': 36 35 files = [change[0] for change in changeset.get_changes()] 37 36 elif message: 38 37 if not full: 39 message = wiki_to_oneliner(shortlog, env, db) 38 message = wiki_to_oneliner(message, env, db, 39 shorten=True) 40 40 else: 41 41 message = wiki_to_html(message, env, req, db, 42 42 absurls=(format == 'rss'), … … 48 48 'date': format_datetime(changeset.date), 49 49 'age': pretty_timedelta(changeset.date), 50 50 'author': changeset.author or 'anonymous', 51 'shortlog': shortlog,52 51 'message': message, 52 'shortlog': util.shorten_line(message), 53 53 'files': files 54 54 } 55 55 return changes -
trac/versioncontrol/web_ui/changeset.py
117 117 if chgset.date < start: 118 118 return 119 119 if chgset.date < stop: 120 excerpt = util.shorten_line(chgset.message or '--')120 message = chgset.message or '--' 121 121 if format == 'rss': 122 title = 'Changeset <em>[%s]</em>: %s' % ( 123 util.escape(chgset.rev), util.escape(excerpt)) 122 title = 'Changeset <em>[%s]</em>: %s' \ 123 % (util.escape(chgset.rev), 124 util.escape(util.shorten_line(message))) 124 125 href = self.env.abs_href.changeset(chgset.rev) 125 message = wiki_to_html( chgset.message or '--', self.env,126 db,absurls=True)126 message = wiki_to_html(message, self.env, db, 127 absurls=True) 127 128 else: 128 title = 'Changeset <em>[%s]</em> by %s' % ( 129 util.escape(chgset.rev), util.escape(chgset.author)) 129 title = 'Changeset <em>[%s]</em> by %s' \ 130 % (util.escape(chgset.rev), 131 util.escape(chgset.author)) 130 132 href = self.env.href.changeset(chgset.rev) 131 message = wiki_to_oneliner(excerpt, self.env, db) 133 message = wiki_to_oneliner(message, self.env, db, 134 shorten=True) 132 135 if show_files: 133 136 files = [] 134 137 for chg in chgset.get_changes(): -
trac/Search.py
20 20 21 21 from trac.core import * 22 22 from trac.perm import IPermissionRequestor 23 from trac.util import TracError, escape, format_datetime , shorten_line23 from trac.util import TracError, escape, format_datetime 24 24 from trac.web import IRequestHandler 25 25 from trac.web.chrome import add_link, add_stylesheet, INavigationContributor 26 26 from trac.wiki import IWikiSyntaxProvider -
trac/Timeline.py
22 22 23 23 from trac.core import * 24 24 from trac.perm import IPermissionRequestor 25 from trac.util import enum, escape, format_date, format_time, http_date, \ 26 shorten_line 25 from trac.util import enum, escape, format_date, format_time, http_date 27 26 from trac.web import IRequestHandler 28 27 from trac.web.chrome import add_link, add_stylesheet, INavigationContributor 29 28 -
trac/wiki/web_ui.py
141 141 absurls=True) 142 142 else: 143 143 href = self.env.href.wiki(name) 144 comment = wiki_to_oneliner( shorten_line(comment), self.env,145 db)144 comment = wiki_to_oneliner(comment, self.env, db, 145 shorten=True) 146 146 yield 'wiki', href, title, t, author, comment 147 147 148 148 # Internal methods -
trac/wiki/tests/wiki-tests.txt
394 394 <pre class="wiki">Preformatted text. 395 395 </pre> 396 396 ------------------------------ 397 […] 398 ============================== 397 399 {{{ 398 Preformatted text. 400 Outer block. 401 {{{ 402 Inner block. 399 403 }}} 404 }}} 405 ------------------------------ 406 <pre class="wiki">Outer block. 407 {{{ 408 Inner block. 409 }}} 410 </pre> 411 ------------------------------ 412 […] 400 413 ============================== 414 Block 401 415 {{{ 402 #!default 403 Preformatted text. 416 number one 404 417 }}} 418 and block 419 {{{ 420 number two 421 }}} 405 422 ------------------------------ 406 <pre class="wiki">Preformatted text. 423 <p> 424 Block 425 </p> 426 <pre class="wiki">number one 407 427 </pre> 428 <p> 429 and block 430 </p> 431 <pre class="wiki">number two 432 </pre> 408 433 ------------------------------ 434 Block […] 435 and block […] 436 ============================== 409 437 {{{ 410 438 #!default 411 439 Preformatted text. 412 440 }}} 441 ------------------------------ 442 <pre class="wiki">Preformatted text. 443 </pre> 444 ------------------------------ 445 […] 413 446 ============================== 414 447 {{{ 415 448 #!/bin/sh … … 420 453 echo "foo" 421 454 </pre> 422 455 ------------------------------ 423 {{{ 424 #!/bin/sh 425 echo "foo" 426 }}} 456 […] 427 457 ============================== 428 458 {{{ 429 459 #!html … … 432 462 ------------------------------ 433 463 <p>Hello World</p> 434 464 ------------------------------ 435 {{{ 436 #!html 437 <p>Hello World</p> 438 }}} 465 […] 439 466 ============================== 440 467 {{{ 441 468 #!html … … 448 475 </pre> 449 476 </div> 450 477 ------------------------------ 451 {{{ 452 #!html 453 <script>alert("");</script> 454 }}} 478 […] 455 479 ============================== 456 480 {{{ 457 481 #!html … … 464 488 </pre> 465 489 </div> 466 490 ------------------------------ 467 {{{ 468 #!html 469 <div onclick="alert(<i>)">Click me</div> 470 }}}</i> 491 […] 471 492 ============================== 472 493 ^superscript^, ,,subscript,,, normal. 473 494 ------------------------------ … … 536 557 </p> 537 558 ------------------------------ 538 559 Test comment blocks 539 {{{540 #!comment541 This is simply removed from the output542 }}}543 560 ============================== 544 561 Inline [[comment(This should not be seen)]] comment 545 562 ------------------------------ … … 629 646 </i></strong></p> 630 647 ------------------------------ 631 648 ============================== 649 {{{verbatim}}} 650 {{{ 651 {{{in `block` 652 }}} 653 `{{{this is verbatim}}}` and {{{`that` should also `be` verbatim}}} 654 ------------------------------ 655 <p> 656 <tt>verbatim</tt> 657 </p> 658 <pre class="wiki">{{{in `block` 659 </pre> 660 <p> 661 <tt>{{{this is verbatim}}}</tt> and <tt>`that` should also `be` verbatim</tt> 662 </p> 663 ------------------------------ 664 <tt>verbatim</tt> 665 {{{ 666 {{{in <tt>block</tt> 667 }}} 668 <tt>{{{this is verbatim}}}</tt> and <tt>`that` should also `be` verbatim</tt> 669 ============================== 632 670 term:: definition 633 671 ------------------------------ 634 672 <dl><dt>term</dt><dd>definition -
trac/wiki/formatter.py
637 637 """ 638 638 flavor = 'oneliner' 639 639 640 _non_nested_block_re = re.compile(r"(?:^|\n)\{\{\{(?:\n(#![\w+-/]+))?" 641 r"(?:\n([^{}]|\{(?!\{\{)|\}(?!\}\}))+)+" 642 r"\}\}\}") 643 640 644 def __init__(self, env, absurls=0, db=None): 641 645 Formatter.__init__(self, env, None, absurls, db) 642 646 … … 658 662 args = fullmatch.group('macroargs') 659 663 return '[[%s%s]]' % (name, args and '(...)' or '') 660 664 661 def format(self, text, out ):665 def format(self, text, out, shorten=False): 662 666 if not text: 663 667 return 664 668 self.out = out 665 669 self._open_tags = [] 666 670 667 result = re.sub(self.rules, self.replace, util.escape(text.strip(), False)) 671 result = text.strip() 672 673 # Simplify code blocks 674 def simplify(fullmatch): 675 processor = fullmatch.group(1) 676 if processor == '#!comment': 677 return '' 678 elif '\n' in fullmatch.group(): 679 return ' ![...]' 680 else: 681 return '`%s`' % match[3:-3] 682 683 old = '' 684 while old != result: 685 old = result 686 result = re.sub(self._non_nested_block_re, simplify, old) 687 688 if shorten: 689 result = util.shorten_line(result) 690 691 result = re.sub(self.rules, self.replace, util.escape(result, False)) 692 result = result.replace('[...]', '[…]') 693 if result.endswith('...'): 694 result = result[:-4] + ' …' 695 668 696 # Close all open 'one line'-tags 669 697 result += self.close_tag(None) 670 698 out.write(result) … … 723 751 Formatter(env, req, absurls, db).format(wikitext, out, escape_newlines) 724 752 return out.getvalue() 725 753 726 def wiki_to_oneliner(wikitext, env, db=None, absurls=0):754 def wiki_to_oneliner(wikitext, env, db=None, shorten=False, absurls=0): 727 755 out = StringIO() 728 OneLinerFormatter(env, absurls, db).format(wikitext, out )756 OneLinerFormatter(env, absurls, db).format(wikitext, out, shorten) 729 757 return out.getvalue() 730 758 731 759 def wiki_to_outline(wikitext, env, db=None, absurls=0, max_depth=None,
