Changeset 1986 for trunk/LeMillTool.py


Ignore:
Timestamp:
09/11/07 11:29:42 (12 years ago)
Author:
jukka
Message:

Parsing works fine, except kupu's view of page is ugly.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/LeMillTool.py

    r1982 r1986  
    5959    |(?P<tex>\\\(.*?\\\)) # tex should be written inside \( ... \)  
    6060    |(?P<tex_equation>\\begin\{(?P<tex_tag>.*?)\}(?P<tex_string>.*?)\\end\{(?P=tex_tag)\}) # detect \begin{smthing}...\end{smthing} 
    61     |(?P<linebreak>(?<!>)$) # detect linebreaks, unless they're after closed tag, f.ex !'<br/>  \n'    
     61    |(?P<paragraph>(?<!>)\n.\n) # two linebreaks in a row make a paragraph. 
     62    |(?P<linebreak>(?<!>)[\n]) # detect linebreaks, unless they're after closed tag, f.ex !'<br/>  \n'    
    6263    |(?P<awordtoolong>[^ \t\n\r\f\v<>]{41}) # detect >40 char words, 
    63     |(?P<endfile>\Z) # detect end of a string, so open tags can be closed  
    64     """, re.IGNORECASE | re.VERBOSE | re.MULTILINE) 
     64    """, re.IGNORECASE | re.VERBOSE | re.MULTILINE | re.DOTALL) 
    6565 
    6666# whitelist is for html-tags only 
     
    150150        def url(match): 
    151151            url=match.group('url') 
    152             if open_tags: 
    153                 return url 
    154152            if len(url)>50: 
    155153                link_text=self.shorten_url(url) 
     
    200198            full_tag=match.group('tex_equation') 
    201199            tex_tag=match.group('tex_tag') 
    202             tex_string=match.group('tex_string') 
     200            if tex_tag[-1]!='*':  # adding * will remove equation numbering 
     201                tex_string=match.group('tex_string') 
     202                full_tag='\\begin{%s*}%s\\end{%s*}' % (tex_tag, tex_string, tex_tag) 
    203203            lt=getToolByName(self, 'latex_tool') 
    204             print lt.getImageFor(full_tag, 17) 
    205204            img=''' 
    206             <table width="100%"> 
     205            <table width="100%%"> 
    207206                <tr> 
    208207                    <td align="center"> 
     
    211210                </tr> 
    212211            </table> 
    213             ''' % str(lt.getImageFor(full_tag, 17))            
     212            ''' % lt.getImageFor(full_tag, 17) 
     213            return img        
     214 
     215        def paragraph(match): 
     216            full_tag=match.group('paragraph') 
     217            print 'paragraph!' 
     218            taggy='' 
     219            if open_tags and open_tags[-1]=='p': 
     220                print 'close previous p' 
     221                open_tags.remove('p') 
     222                taggy='</p>\n' 
     223            if not open_tags: 
     224                print 'empty open_tags, starting new p' 
     225                open_tags.append('p') 
     226                taggy='%s<p>' % taggy 
     227            return taggy 
     228             
    214229     
    215230        def linebreak(match): 
    216231            full_tag=match.group('linebreak') 
    217             if open_tags or match.group('tex') or match.group('tex_equation'): 
     232            print 'linebreak!' 
     233            if (open_tags and not 'p' in open_tags) or match.group('tex') or match.group('tex_equation'): 
     234                print 'lb escaped because inside open tags.' 
    218235                return full_tag 
    219236            else: 
     
    224241            return self.shorten_url(full_tag)             
    225242 
    226         def endfile(match): 
     243        def close_all_tags(): 
    227244            """ close tags that are left open """ 
    228             full_tag=match.group('endfile') 
    229             closed_tags=full_tag # -> /Z 
     245            closed_tags=''  
    230246            for tag in open_tags: 
    231                 closed_tags='</%s>%s' % (tag, closed_tags) # </b>/Z -> </p></b>/Z  
     247                closed_tags='</%s>%s' % (tag, closed_tags) # </b> -> </p></b> 
    232248            return closed_tags 
    233249 
     
    250266            elif match.group('tex_equation'): 
    251267                return tex_equation(match) 
     268            elif match.group('paragraph'): 
     269                return paragraph(match) 
    252270            elif match.group('linebreak'): 
    253271                return linebreak(match) 
    254272            elif match.group('awordtoolong'): 
    255273                return awordtoolong(match) 
    256             elif match.group('endfile'): 
    257                 return endfile(match) 
    258274     
    259275        open_tags=[]         
    260         return pattern.sub(replacements, text) 
     276        return '%s%s' %(pattern.sub(replacements, text), close_all_tags()) 
    261277 
    262278 
Note: See TracChangeset for help on using the changeset viewer.