Ticket #9696 (new enhancement)

Opened 4 months ago

Last modified 4 months ago

[Patch] Don't force the trailing hashes to be added

Reported by: rjollos Assigned to: martin_s
Priority: normal Component: NumberedHeadlinesPlugin
Severity: normal Keywords:
Cc: hasienda Trac Release: 0.12

Description (Last modified by rjollos)

As described in t:WikiFormatting#Headings, it is no longer required that trailing = be added (since 0.12.0, as far as I can tell). The same should be true for the hash symbols used by the NumberedHeadlinesPlugin.

I'm investigating whether a quick patch can be produced.

Attachments

t9696-r10976-rev2.patch (2.5 kB) - added by rjollos on 01/18/12 04:12:08.
t9696-r10976.patch (1.1 kB) - added by rjollos on 01/18/12 04:12:56.

Change History

01/17/12 01:58:29 changed by rjollos

  • description changed.

01/17/12 21:05:38 changed by rjollos

  • summary changed from Don't force the trailing hashes to be added to [Patch] Don't force the trailing hashes to be added.

The patch below is based on formatter.py in 0.12.2. I'll also attach this as a patch file.

I'd propose making a 0.12 branch for the plugin. Let me know if I need to make any changes to the patch. I'll follow up quickly. In the meantime, I'll be using this on my production system and let you know if I find any issues.

  • 0.11/tracnumberedheadlines/plugin.py

    old new  
    5353 
    5454    NUM_HEADLINE = \ 
    5555        r"(?P<nheading>^\s*(?P<nhdepth>#+)\s" \ 
    56         r"(?P<nheadnum>\s*[0-9.]+\s)?.*\s(?P=nhdepth)\s*" \ 
     56        r"(?P<nheadnum>\s*[0-9.]+\s)?.*\s*" \ 
    5757        r"(?P<nhanchor>=%s)?(?:\s|$))" % XML_NAME 
    5858 
    5959    outline_counters = WeakKeyDictionary() 
     
    6969        shorten = False 
    7070        match = match.strip() 
    7171 
     72        hdepth = fullmatch.group('nhdepth') 
    7273        depth = min(len(fullmatch.group('nhdepth')), 6) 
    7374 
    7475        try: 
     
    100101 
    101102        num    = fullmatch.group('nheadnum') or '' 
    102103        anchor = fullmatch.group('nhanchor') or '' 
    103         heading_text = match[depth+1+len(num):-depth-1-len(anchor)].strip() 
    104  
     104        heading_text = match[depth+1+len(num):].strip() 
     105        if heading_text.endswith(hdepth): 
     106            heading_text = heading_text[:-depth] 
     107             
    105108        num = num.strip() 
    106109        if num and num[-1] == '.': 
    107110          num = num[:-1] 

01/18/12 02:52:19 changed by rjollos

  • cc set to hasienda.

Also, I have commit access to all of the repository, so if you approve of this change, I can push it to the repository to save you some time.

01/18/12 04:08:31 changed by rjollos

Here is a patch that includes the previous patch and also makes some additional changes to mirror the implementation in formatter.py.

  • A level 7 heading ======= heading ======== isn't recognized by Trac. Previously, the NumberedHeadlinesPlugin would treat a level 7 numbered heading as a level 6 numbered heading. With the change below, it isn't recognized, which I think leads to more predicable behavior for the editor of a wiki page.
  • A regular expression is used to capture the heading text.
  • Renamed variable heading_text to htext.
  • 0.11/tracnumberedheadlines/plugin.py

    old new  
    5252    XML_NAME = r"[\w:](?<!\d)[\w:.-]*?" # See http://www.w3.org/TR/REC-xml/#id  
    5353 
    5454    NUM_HEADLINE = \ 
    55         r"(?P<nheading>^\s*(?P<nhdepth>#+)\s" \ 
    56         r"(?P<nheadnum>\s*[0-9.]+\s)?.*\s(?P=nhdepth)\s*" \ 
    57         r"(?P<nhanchor>=%s)?(?:\s|$))" % XML_NAME 
     55        r"(?P<nheading>^\s*(?P<nhdepth>#{1,6})\s" \ 
     56        r"(?P<nheadnum>\s*[0-9.]+\s)?(?P<nhtext>.*?)" \ 
     57        r"(?P<nhanchor>=%s)?\s*$)" % XML_NAME 
    5858 
    5959    outline_counters = WeakKeyDictionary() 
    6060 
     
    6868    def _parse_heading(self, formatter, match, fullmatch): 
    6969        shorten = False 
    7070        match = match.strip() 
    71  
    72         depth = min(len(fullmatch.group('nhdepth')), 6) 
     71         
     72        hdepth = fullmatch.group('nhdepth') 
     73        depth = len(hdepth) 
    7374 
    7475        try: 
    7576          formatter.close_table() 
     
    100101 
    101102        num    = fullmatch.group('nheadnum') or '' 
    102103        anchor = fullmatch.group('nhanchor') or '' 
    103         heading_text = match[depth+1+len(num):-depth-1-len(anchor)].strip() 
    104  
     104        htext  = fullmatch.group('nhtext').strip() 
     105        if htext.endswith(hdepth): 
     106            htext = htext[:-depth] 
     107             
    105108        num = num.strip() 
    106109        if num and num[-1] == '.': 
    107110          num = num[:-1] 
     
    117120              n = n + 1 
    118121            counters[depth-len(numbers[n:]):] = numbers[n:] 
    119122 
    120         if not heading_text: 
     123        if not htext: 
    121124          return tag() 
    122125 
    123126        heading = format_to_oneliner(formatter.env, formatter.context,  
    124             heading_text, False) 
     127            htext, False) 
    125128 
    126129        if anchor: 
    127130            anchor = anchor[1:] 
     
    144147        while s < len(counters) and counters[s] == 0: 
    145148          s = s + 1 
    146149 
    147         oheading_text = heading_text 
    148         heading_text = '.'.join(map(str, counters[s:]) + [" "]) + heading_text 
     150        oheading_text = htext 
     151        htext = '.'.join(map(str, counters[s:]) + [" "]) + htext 
    149152 
    150153        if self.number_outline: 
    151           oheading_text = heading_text 
     154          oheading_text = htext 
    152155 
    153156        heading = format_to_oneliner(formatter.env, formatter.context,  
    154             heading_text, False) 
     157            htext, False) 
    155158        oheading = format_to_oneliner(formatter.env, formatter.context,  
    156159            oheading_text, False) 

01/18/12 04:12:08 changed by rjollos

  • attachment t9696-r10976-rev2.patch added.

01/18/12 04:12:56 changed by rjollos

  • attachment t9696-r10976.patch added.

01/30/12 04:25:09 changed by rjollos

Just wanted to checkin and see if the author of the plugin is still around, and if there would be any objections to pushing this patch to the repository.


Add/Change #9696 ([Patch] Don't force the trailing hashes to be added)




Change Properties
Action