a
    6`M                     @   s*   d Z ddlZddlmZ G dd dZdS )a  
Python Markdown

A Python implementation of John Gruber's Markdown.

Documentation: https://python-markdown.github.io/
GitHub: https://github.com/Python-Markdown/markdown/
PyPI: https://pypi.org/project/Markdown/

Started by Manfred Stienstra (http://www.dwerg.net/).
Maintained for a few years by Yuri Takhteyev (http://www.freewisdom.org).
Currently maintained by Waylan Limberg (https://github.com/waylan),
Dmitry Shachnev (https://github.com/mitya57) and Isaac Muse (https://github.com/facelessuser).

Copyright 2007-2018 The Python Markdown Project (v. 1.7 and later)
Copyright 2004, 2005, 2006 Yuri Takhteyev (v. 0.2-1.6b)
Copyright 2004 Manfred Stienstra (the original version)

License: BSD (see LICENSE.md for details).
    N   )parseBoolValuec                   @   sV   e Zd ZdZi Zdd ZdddZdd Zd	d
 Zdd Z	dd Z
dd Zdd ZdS )	Extensionz( Base class for extensions to subclass. c                 K   s   |  | dS )z( Initiate Extension and set up configs. N)
setConfigs)selfkwargs r   >/usr/lib/python3/dist-packages/markdown/extensions/__init__.py__init__&   s    zExtension.__init__ c                 C   s    || j v r| j | d S |S dS )z8 Return a setting for the given key or an empty string. r   Nconfig)r   keydefaultr   r   r	   	getConfig*   s    
zExtension.getConfigc                    s    fdd j  D S )z( Return all configs settings as a dict. c                    s   i | ]}|  |qS r   )r   .0r   r   r   r	   
<dictcomp>3       z(Extension.getConfigs.<locals>.<dictcomp>r   keysr   r   r   r	   
getConfigs1   s    zExtension.getConfigsc                    s    fdd j  D S )z5 Return all config descriptions as a list of tuples. c                    s   g | ]}| j | d  fqS )   r   r   r   r   r	   
<listcomp>7   r   z+Extension.getConfigInfo.<locals>.<listcomp>r   r   r   r   r	   getConfigInfo5   s    zExtension.getConfigInfoc                 C   sL   t | j| d trt|}| j| d du r:t|dd}|| j| d< dS )z8 Set a config setting for `key` with the given `value`. r   NT)Zpreserve_none)
isinstancer   boolr   )r   r   valuer   r   r	   	setConfig9   s
    zExtension.setConfigc                 C   s0   t |dr| }|D ]\}}| || qdS )z> Set multiple config settings given a dict or list of tuples. itemsN)hasattrr    r   )r   r    r   r   r   r   r	   r   A   s    
zExtension.setConfigsc              
   G   s|   |d }z|  | W n` tyv } zHdt|v r`|  |i  tjd| jj| jjt	dd n W Y d}~n
d}~0 0 dS )z( Private wrapper around extendMarkdown. r   z&missing 1 required positional argumentzCThe 'md_globals' parameter of '{}.{}.extendMarkdown' is deprecated.r   )category
stacklevelN)
extendMarkdown	TypeErrorstrwarningswarnformat	__class__
__module____name__DeprecationWarning)r   argsmder   r   r	   _extendMarkdownI   s    zExtension._extendMarkdownc                 C   s   t d| jj| jjf dS )a  
        Add the various proccesors and patterns to the Markdown Instance.

        This method must be overriden by every extension.

        Keyword arguments:

        * md: The Markdown instance.

        * md_globals: Global variables in the markdown module namespace.

        z8Extension "%s.%s" must define an "extendMarkdown"method.N)NotImplementedErrorr*   r+   r,   )r   r/   r   r   r	   r$   [   s
    zExtension.extendMarkdownN)r   )r,   r+   __qualname____doc__r   r
   r   r   r   r   r   r1   r$   r   r   r   r	   r      s   	
r   )r4   r'   utilr   r   r   r   r   r	   <module>   s   