"VfidZddlmZddlmZddlmZmZddlmZm Z m Z ddl m Z m Z GddeZGd d eZd S) z RichText definition copy) NUMERIC_TYPES) InlineFontText)StrictStringTyped)Element whitespacec\eZdZdZeeZeZdZ dZ dZ dZ dZ dS) TextBlockzv Represents text string in a specific format This class is used as part of constructing a rich text strings. ) expected_typec"||_||_dSN)fonttext)selfrrs Fc:\PYTHON\DbComparer\venv\Lib\site-packages\openpyxl/cell/rich_text.py__init__zTextBlock.__init__s  cB|j|jko|j|jkSr)rr)rothers r__eq__zTextBlock.__eq__syEJ&B49 +BBrc|jS)zJust retun the text)rrs r__str__zTextBlock.__str__"s yrct|jtkr|jpd}|jjd|jd|S)Ndefaultz text=z, font=)rr __class____name__r)rrs r__repr__zTextBlock.__repr__'sAyJLL(6TYC).)IIII4IIIrctd}||jdtd}|j|_t ||||S)NrrPr)tagnamet)r appendrto_treerr )relr's rr)zTextBlock.to_tree,se S\\ $)##E#22333 CLL1  !  rN)r! __module__ __qualname____doc__r rrr rrrrr"r)rrrrs 5z * * *D 688D CCC JJJ rrceZdZdZfdZedZedZedZfdZ fdZ dZ fd Z fd Z fd Zd Zd ZdZdZxZS) CellRichTextaRepresents a rich text string. Initialize with a list made of pure strings or :class:`TextBlock` elements Can index object to access or modify individual rich text elements it also supports the + and += operators between rich text strings There are no user methods for this class operations which modify the string will generally call an optimization pass afterwards, that merges text blocks with identical formats, consecutive pure text strings, and remove empty strings and empty text blocks c^t|dkr]|d}t|ttfrt|n8t||g}nt|t|dS)Nr) len isinstancelisttupler0_check_rich_text_check_elementsuperr)rargsr s rrzCellRichText.__init__Is t99>>7D$u .. --d3333++D111v  ) )$ / / / rcnt|tttfst d|dS)NzIllegal CellRichText element )r4strrr TypeError)clsvalues rr8zCellRichText._check_elementVs?%#y-!@AA ECECCDD D E ErcD|D]}t|dSr)r0r8)r> rich_textr's rr7zCellRichText._check_rich_text\s2 + +A  ' ' * * * * + +rcptj|}|jr|jddfSg}|jD]k}d}|jr|jdd}|jr)|t|j|V||l||S)Nx005F_)r from_treer'replacer$r%r(r)r>nodersr$r's rrEzCellRichText.from_treeas~d## 6 3FNN8R002 2   AAs .CKK"--u 15!,,---- s1vv rcd}tt}|D]}t|tr|sn|js#t |t |krAt|tr||z }^|j|jkr|xj|jz c_|r|||}|r||t td||Sr) r0r6r4r<rtyperr(r9 __setitem__slice)rlast_tlr'r s r_optzCellRichText._optss  ! !  A!S!! V F||tAww&&a%%aKFF**KK16)KK !   FF   HHV    E$KK+++ rct|tdt |D|S)Nc,g|]}t|Sr.r.0es r z)CellRichText.__iadd__..s555a$q''555r)r0r7r9__iadd__r5rOrargr s rrVzCellRichText.__iadd__sR%%c*** 55499555666yy{{rctdt|t|zDS)Nc,g|]}t|Sr.rrRs rrUz(CellRichText.__add__..sEEET!WWEEEr)r0r5rO)rrXs r__add__zCellRichText.__add__s<EEd4jj499.DEEEFFKKMMMrct|t|||dSr)r0r8r9rKrO)rindxvalr s rrKzCellRichText.__setitem__sB##C((( D#&&& rc~t|t|dSr)r0r8r9r(rWs rr(zCellRichText.appends3##C((( src~t|t|dSr)r0r7r9extendrWs rrazCellRichText.extends3%%c*** srcfddd|DS)NzCellRichText([{}])z, c34K|]}t|VdSr)reprrSrHs r z(CellRichText.__repr__..s(5L5L!d1gg5L5L5L5L5L5Lr)formatjoinrs rr"zCellRichText.__repr__s1#**4995L5Lt5L5L5L+M+MNNNrc@dd|DS)NrDc,g|]}t|Sr.r<res rrUz(CellRichText.__str__..s---1A---r)rhrs rrzCellRichText.__str__s#ww-----...rcd|DS)zv Returns a list of the strings contained. The main reason for this is to make editing easier. c,g|]}t|Sr.rkres rrUz(CellRichText.as_list..s%%%1A%%%rr.rs ras_listzCellRichText.as_lists &%%%%%rcdtd}|D]}t|tr(||?td}td}||_t ||||||S)z4 Return the full XML representation isr$r')r r4rr(r)rr )r containerobjr*r's rr)zCellRichText.to_treesDMM  % %C#y)) %  ////S\\CLL1  !   $$$$r)r!r+r,r-r classmethodr8r7rErOrVr[rKr(rar"rrnr) __classcell__)r s@rr0r0<sd       EE[E ++[+  [ "4NNN   OOO///&&&rr0N)r-ropenpyxl.compatropenpyxl.cell.textrropenpyxl.descriptorsrr r openpyxl.xml.functionsr r rr5r0r.rrrys))))))//////// 76666666""""""""VMMMMM4MMMMMr