Sindbad~EG File Manager
3
�'�Y�!�$@spdZddlZddlZddlmZddlmZddlm Z ddl
mZmZm
Z
yeZWnek
rpeefZYnXyddlmZWn ek
r�ddlmZYnXyddlmZWn ek
r�ddlmZYnXGd d
�d
e�ZyddlmZWnek
�rYnXGdd
�d
e�Ze�Zdd�Zddd�Zddd�Zddd�Zd dd�Z d!dd�Z!dd�Z"e�Z#dS)"z?
An interface to html5lib that mimics the lxml.html interface.
�N)�
HTMLParser)�TreeBuilder)�etree)�Element�XHTML_NAMESPACE�_contains_block_level_tag)�urlopen)�urlparsec@seZdZdZddd�ZdS)rz*An html5lib HTML parser with lxml as tree.FcKstj|f|td�|��dS)N)�strict�tree)�_HTMLParser�__init__r)�selfr
�kwargs�r�#/usr/lib64/python3.6/html5parser.pyr
szHTMLParser.__init__N)F)�__name__�
__module__�__qualname__�__doc__r
rrrrrsr)�XHTMLParserc@seZdZdZddd�ZdS)rz+An html5lib XHTML Parser with lxml as tree.FcKstj|f|td�|��dS)N)r
r)�_XHTMLParserr
r)rr
rrrrr
*szXHTMLParser.__init__N)F)rrrrr
rrrrr'srcCs(|j|�}|dk r|S|jdt|f�S)Nz{%s}%s)�findr)r�tag�elemrrr� _find_tag0s
rcCsZt|t�std��|dkrt}i}|dkr8t|t�r8d}|dk rH||d<|j|f|�j�S)z�
Parse a whole document into a string.
If `guess_charset` is true, or if the input is not Unicode but a
byte string, the `chardet` library will perform charset guessing
on the string.
zstring requiredNT�
useChardet)�
isinstance�_strings� TypeError�html_parser�bytes�parseZgetroot)�html�
guess_charset�parser�optionsrrr�document_fromstring7s
r'FcCs�t|t�std��|dkrt}i}|dkr8t|t�r8d}|dk rH||d<|j|df|�}|r�t|dt�r�|r�|dj�r�tjd|d��|d=|S)a`Parses several HTML elements, returning a list of elements.
The first item in the list may be a string. If no_leading_text is true,
then it will be an error if there is leading text, and it will always be
a list of only elements.
If `guess_charset` is true, the `chardet` library will perform charset
guessing on the string.
zstring requiredNFr�divrzThere is leading text: %r) rrrr r!Z
parseFragment�stripr�ParserError)r#�no_leading_textr$r%r&Zchildrenrrr�fragments_fromstringOs"
r,cCs�t|t�std��t|�}t||||d�}|rvt|t�s>d}t|�}|rrt|dt�rh|d|_|d=|j|�|S|s�tj d��t
|�dkr�tj d��|d}|jr�|jj�r�tj d|j��d |_|S)
a�Parses a single HTML element; it is an error if there is more than
one element, or if anything but whitespace precedes or follows the
element.
If 'create_parent' is true (or is a tag name) then a parent node
will be created to encapsulate the HTML in a single element. In
this case, leading or trailing text is allowed.
If `guess_charset` is true, the `chardet` library will perform charset
guessing on the string.
zstring required)r$r%r+r(rzNo elements found�zMultiple elements foundzElement followed by text: %rN)
rrr�boolr,r�text�extendrr*�len�tailr))r#Z
create_parentr$r%Zaccept_leading_text�elementsZnew_root�resultrrr�fragment_fromstringqs2
r5cCs�t|t�std��t|||d�}|dd�}t|t�rB|jdd�}|j�j�}|jd�sb|jd�rf|St |d �}t
|�r||St |d
�}t
|�dkr�|js�|jj�r�|dj
s�|dj
j�r�|dSt|�r�d
|_nd|_|S)a�Parse the html, returning a single element/document.
This tries to minimally parse the chunk of text, without knowing if it
is a fragment or a document.
'base_url' will set the document's base_url attribute (and the tree's
docinfo.URL)
If `guess_charset` is true, or if the input is not Unicode but a
byte string, the `chardet` library will perform charset guessing
on the string.
zstring required)r%r$N�2�ascii�replacez<htmlz <!doctype�head�bodyr-rr(�span���r<)rrrr'r!�decode�lstrip�lower�
startswithrr1r/r)r2rr)r#r$r%�doc�startr9r:rrr�
fromstring�s*
rCcCsz|dkrt}t|t�s(|}|dkr\d}n4t|�rFt|�}|dkr\d}nt|d�}|dkr\d}i}|rl||d<|j|f|�S)a*Parse a filename, URL, or file-like object into an HTML document
tree. Note: this returns a tree, not an element. Use
``parse(...).getroot()`` to get the document root.
If ``guess_charset`` is true, the ``useChardet`` option is passed into
html5lib to enable character detection. This option is on by default
when parsing from URLs, off by default when parsing from file(-like)
objects (which tend to return Unicode more often than not), and on by
default when parsing from a file path (which is read in binary mode).
NFT�rbr)r rr�_looks_like_urlr�openr")Zfilename_url_or_filer$r%�fpr&rrrr"�s"
r"cCs@t|�d}|sdStjdkr8|tjkr8t|�dkr8dSdSdS)NrFZwin32r-T)r �sys�platform�stringZ
ascii_lettersr1)�str�schemerrrrE�s
rE)NN)FNN)FNN)NN)NN)$rrHrJZhtml5librrZ html5lib.treebuilders.etree_lxmlrZlxmlrZ lxml.htmlrrrZ
basestringr� NameErrorr!rKZurllib2r�ImportErrorZurllib.requestr Zurllib.parserrZxhtml_parserrr'r,r5rCr"rEr rrrr�<module>sF
!
+
6
$
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists