
    i                        d Z ddlZddlZddlZddlZddlZddlmZ ddl	m
Z
mZ ej                  rddlmZ ddlmZ  ej"                  dej$                        Z	  G d	 d
ej(                        Z G d dee      Z G d de
      ZdefdZy)z/Processor used for ``online_currency`` engines.    N)
CURRENCIES   )OnlineProcessorOnlineParams)EngineProcessor)SearchQueryz2.*?(\d+(?:\.\d+)?) ([^.0-9]+) (?:in|to) ([^.0-9]+)c                   L    e Zd ZU dZeed<   	 eed<   	 eed<   	 eed<   	 eed<   y)CurrenciesParamszCurrencies request parameters.amount
to_iso4217from_iso4217	from_nameto_nameN)__name__
__module____qualname____doc__float__annotations__str     8/root/searxng/searx/search/processors/online_currency.pyr
   r
      s2    (M)O
 ?N@L?r   r
   c                       e Zd ZdZy)OnlineCurrenciesParamsz3Request parameters of a ``online_currency`` engine.N)r   r   r   r   r   r   r   r   r   .   s    =r   r   c                   F     e Zd ZU dZdZeed<   dddededz  f fd	Z xZ	S )
OnlineCurrencyProcessorz4Processor class used by ``online_currency`` engines.online_currencyengine_typesearch_queryr   engine_categoryreturnNc                    t         |   ||      }|yt        j                  |j                        }|sy|j                         \  }}}	 t        |      }|dk(  rd}|dk(  rd}|}	t        j                  |	      st        j                  t        |            }	|}
t        j                  |
      st        j                  t        |            }
|	|
yt        j                         xs t        j                  j!                  d      }t        j"                  |	|j$                        }t        j"                  |
|j$                        }i |||	|
||d}|S # t        $ r Y yw xY w)zReturns a dictionary with the :ref:`request params <engine request
        online_currency>` (:py:obj:`OnlineCurrenciesParams`).  ``None`` is
        returned if the search query does not match :py:obj:`search_syntax`.N$z$ usen)r   r   r   r   r   )super
get_paramssearch_syntaxmatchquerygroupsr   
ValueErrorr   
is_iso4217name_to_iso4217_normalize_nameflask_babel
get_localebabelLocaleparseiso4217_to_namelanguage)selfr    r!   online_paramsm
amount_strfrom_currencyto_currencyr   r   r   	ui_localer   r   params	__class__s                  r   r'   z"OnlineCurrencyProcessor.get_params7   so   
 .3W-?o-^  2 2312.
M;	:&F
 C"M# K$$$\2%55om6TUL 
$$Z0#33OK4PQJ:#5**,H0B0B40H	#33),,
	 "11	**
*
*
($"*
 M  		s   E 	E#"E#)
r   r   r   r   r   r   r   r   r'   __classcell__)r?   s   @r   r   r   2   s6    >(K(6} 6s 6OehlOl 6 6r   r   namec                     | j                         } | j                         j                  dd      } t        j                  dd|       } t        j                  d|       j                         S )N- z +NFKD)striplowerreplaceresubunicodedata	normalize)rA   s    r   r/   r/   p   sS    ::<D::<S)D66$T"D  .4466r   )r   typingtrK   rI   r0   r2   
searx.datar   onliner   r   TYPE_CHECKINGabstractr   searx.search.modelsr   compileIr(   	TypedDictr
   r   r   r   r/   r   r   r   <module>rW      s    5   	   ! 1??)/ 

PRTRVRVW F@q{{ @,>-| >;o ;|7# 7r   