
    gr                     x    d dl Z d dlZddlmZ dZ e j                  d      Zd Zd Z	ddZ
 G d	 d
e      Zd Zy)    N   )_BaseHTMLProcessor),fileftpgopherh323hdlhttphttpsimapmagnetmailtommsnewsnntpprosperorsyncrtsprtspusftpshttpsipsipssnewssvnzsvn+sshtelnetwaisaimcalltocvsfacetimefeedgitgtalkircircsirc6itmsr   msnimskypesshsmbr   ymsgz&^([A-Za-z][A-Za-z0-9+-.]*://)(/*)(.*?)c                     t         j                  d|      }	 t        j                  j	                  | |      }|S # t
        $ r d}Y |S w xY w)Nz\1\3 )	_urifixersuburllibparseurljoin
ValueError)baseuris     B/var/www/html/venv/lib/python3.12/site-packages/feedparser/urls.py_urljoinr9   4   sO    
--
%Cll""4- J  Js    : A	A	c                 &   t        t        j                  j                  |             }	 |d   j	                  d       | S # t
        $ r |d   j                  dd      }g }d}t        |      dk(  r|j                         }|d   j                  d      D ]1  }|j                  |j	                  d      j                  d	             3 dj                  |      |d<   |r|dxx   d|z   z  cc<   t        j                  j                  |      cY S w xY w)
zConvert a URL to IDN notationr   ascii:r/      r   .idnazutf-8)listr2   r3   urlsplitencodeUnicodeEncodeErrorrsplitlenpopsplitappenddecodejoin
urlunsplit)urlpartshostnewhostporths         r8   convert_to_idnrR   =   s    
 &&s+,Ea  
  .QxsA&t9>88:Das# 	=ANN188F+227;<	=88G$a!Hd
"H||&&u--.s   A   CDDc                 0   t         st        | |xs d      S | s|xs dS |s0	 t        j                  j	                  |       d   }|r|t         v r| S yt        | |      }|j                         j                  dd      d   t         vry|S # t
        $ r Y yw xY w)Nr/   r   r<   r   )ACCEPTABLE_URI_SCHEMESr9   r2   r3   urlparser5   striprG   )r6   relschemer7   s       r8   make_safe_absolute_urirY   V   s    !ciR((yb	\\**403F #99K
4
C
yy{a #+AAJ  		s   "B	 		BBc                   2     e Zd Zh dZd Zd Z fdZ xZS )RelativeURIResolver>   ahrefqcitedelra   imgsrcre   usemapre   longdescinsra   arear^   body
backgroundformactionheadprofilelinkr^   audiorf   framerf   r}   rj   inputrf   r   rh   videorf   r   posterappletcodebaseiframerf   r   rj   objectdatar   rh   r   classidr   r   scriptrf   sourcerf   
blockquotera   c                 @    t        j                  | ||       || _        y N)r   __init__baseuri)selfr   encoding_types       r8   r   zRelativeURIResolver.__init__   s    ##D(E:    c                 J    t        | j                  |j                               S r   )rY   r   rV   )r   r7   s     r8   resolve_urizRelativeURIResolver.resolve_uri   s    %dllCIIK@@r   c                     | j                  |      }|D cg c].  \  }}|||f| j                  v xr | j                  |      xs |f0 }}}t        t        |   ||       y c c}}w r   )normalize_attrsrelative_urisr   superr[   unknown_starttag)r   tagattrskeyvalue	__class__s        r8   r   z$RelativeURIResolver.unknown_starttag   so    $$U+rwxdndgin#c
d&8&88Ud>N>Nu>U^Y^_xx!49#uE ys   3A#)__name__
__module____qualname__r   r   r   r   __classcell__)r   s   @r8   r[   r[   j   s"    M@AF Fr   r[   c                 ^    t        |||      }|j                  |        |j                         S r   )r[   r"   output)html_sourcebase_urir   type_ps        r8   resolve_relative_urisr      s(    Hh6AFF;88:r   r   )reurllib.parser2   htmlr   rT   compiler0   r9   rR   rY   r[   r    r   r8   <module>r      sO   8 
  $  BJJ?@	2(+F, +F\r   