Changeset 757

Show
Ignore:
Timestamp:
08/25/11 13:29:53 (9 months ago)
Author:
mgalloy
Message:

Handling blank lines before and after a code block so extra margin (deleted in last commit) is no longer needed.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/src/parser/docparrstmarkupparser__define.pro

    r702 r757  
    242242  code = 0B 
    243243  nextIsCode = 0B 
     244  lastWasCodeStart = 0B 
    244245   
    245246  para = obj_new('MGtmTag', type='paragraph') 
     
    299300    endif 
    300301     
     302    lastWasCodeStart = nextIsCode 
    301303    nextIsCode = strmid(cleanline, 1, /reverse_offset) eq '::' 
    302304     
     
    305307    directivePos = stregex(cleanline, '\.\. [[:alpha:]]+:: [[:alnum:] _/.\-]+', $ 
    306308                           length=directiveLen) 
    307      
     309                            
    308310    if ((~code || (currentIndent gt -1 && currentIndent le indent)) $ 
    309311          && directivePos ne -1L) then begin 
     
    313315    endif else begin 
    314316      if (code && (currentIndent eq -1 || currentIndent gt indent)) then begin 
    315         listing->addChild, obj_new('MGtmText', $ 
    316                                    text=self->_processText(strmid(cleanline, $ 
    317                                                                   indent), $ 
    318                                                            code=code)) 
    319         listing->addChild, obj_new('MGtmTag', type='newline') 
    320       endif else begin      
     317        listing_text = self->_processText(strmid(cleanline, indent), code=code) 
     318        if ((~lastWasCodeStart $ 
     319                || (strcompress(listing_text, /remove_all) ne '')) $ 
     320              && ((strcompress(listing_text, /remove_all) ne '') $ 
     321                || (l lt (n_elements(lines) - 1L)))) then begin 
     322          listing->addChild, obj_new('MGtmText', text=listing_text)                                                                                                                      
     323          listing->addChild, obj_new('MGtmTag', type='newline') 
     324        endif 
     325      endif else begin 
     326        if (code && obj_valid(listing)) then begin 
     327          blankLine = listing->getChild(/last) 
     328          listing->removeChild, /last 
     329          obj_destroy, blankLine 
     330        endif 
     331         
    321332        code = 0B 
     333 
    322334        if (header_level gt 0L) then begin 
    323335          header_level = 0