U
    
d
                     @   st   d dl Z d dlZd dlmZ d dlmZ d dlmZ d dlm	Z	m
Z
mZ dZe ZG dd dZed	krpe
eZdS )
    N)VERSION)flatatt)static)format_html	html_safe	mark_safe)JSr   c                   @   sX   e Zd ZdZdefddZdd Zdd Zed	kr<d
d Z	ndd Z
dd Zdd ZdS )r   a  
    Use this to insert a script tag via ``forms.Media`` containing additional
    attributes (such as ``id`` and ``data-*`` for CSP-compatible data
    injection.)::

        forms.Media(js=[
            JS('asset.js', {
                'id': 'asset-script',
                'data-answer': '"42"',
            }),
        ])

    The rendered media tag (via ``{{ media.js }}`` or ``{{ media }}`` will
    now contain a script tag as follows, without line breaks::

        <script type="text/javascript" src="/static/asset.js"
            data-answer="&quot;42&quot;" id="asset-script"></script>

    The attributes are automatically escaped. The data attributes may now be
    accessed inside ``asset.js``::

        var answer = document.querySelector('#asset-script').dataset.answer;
    Nc                 C   s,   || _ |pi | _|tk	r(tjdtdd d S )NzsJS automatically determines whether it received an absolute path or not. Stop passing the 'static' argument please.   )
stacklevel)jsattrs	_sentinelwarningswarnDeprecationWarning)selfr   r   r    r   //tmp/pip-unpacked-wheel-6yj6ukq3/js_asset/js.py__init__)   s    
zJS.__init__c                 C   s   dS )NTr   )r   _r   r   r   
startswith4   s    zJS.startswithc                 C   s    d| j  dtj| jdd dS )NzJS(z, T	sort_keys))r   jsondumpsr   r   r   r   r   __repr__8   s    zJS.__repr__      c                 C   s.   t d| jdr| jnt| jtt| jS )Nz<script src="{}"{}></script>zhttp://zhttps:///)r   r   r   r   r   r   r   r   r   r   r   __str__=   s    
z
JS.__str__c                 C   sD   | j dr| j nt| j }| jr@td|tt| jd d S |S )Nr!   z{}"{})r   r   r   r   r   r   r   )r   r   r   r   r   __html__H   s    
 zJS.__html__c                 C   s4   t |tr"| j|jko | j|jkS | j|ko2| j S )N)
isinstancer   r   r   )r   otherr   r   r   __eq__T   s    
z	JS.__eq__c                 C   s   t | jtj| jddfS )NTr   )hashr   r   r   r   r   r   r   r   __hash__Y   s    zJS.__hash__)__name__
__module____qualname____doc__r   r   r   r   r   r#   r%   r(   r*   r   r   r   r   r      s   
r   r   )r   r   Zdjangor   Zdjango.forms.utilsr   Zdjango.templatetags.staticr   Zdjango.utils.htmlr   r   r   __all__objectr   r   r   r   r   r   <module>   s   M