
    -i                     j    d Z ddlZddlZddlmZ  G d d          Zd Zedk    r e             dS dS )z
Syntaxic Analysis
    Nc                   <    e Zd ZdZddZd Zed             Zd ZdS )		Templaterz
    Arabic Templater
    Fc                     dS ) N )self
cache_paths     O/var/www/html/speakWrite/venv/lib/python3.11/site-packages/qalsadi/templater.py__init__zTemplater.__init__   s	     	    c           	      8   g }|D ]x\  }}}|dk    rt          t          |                    }t          t          |                    }|D ]0}|D ]+}|                    |                     ||                     ,1yt          t          |                    }|S )z)
        Extract a list of wazns
        stopword)listsetappendextract_wazn)r   lemmas_roots_listwaznslemmasroots	word_typelemmaroots           r
   extract_waznszTemplater.extract_wazns#   s     (9 		A 		A$FE9J&&#f++&&FU$$E A A! A ADLL!2!25$!?!?@@@@AA
 SZZ  r   c                     t          t          j        d|                     rdS t          t          j        d|                     rdS t          t          j        d|                     rdS dS )z
        Test if the wazn is valid
        test invalid letters in a wazn, before make it a template
        here F, Ain, Lam, are coded 0,1,2
        u*   [بثجحخذرزسشصضظعفقكلهء]Tu
   [^0][دط]z[12].*0|2.*1F)boolresearch)wazns    r
   is_invalid_waznzTemplater.is_invalid_wazn5   sm     	GNNOO 	4	-..// 	4	/40011 	4ur   c                    |rt          |          dk     rdS |ddd         }t          |          dk    r|                    |d         dd          }nM|d         |d         k    r|                    |d         d	d          }n|                    |d         dd          }|                    |d         d	d          }|                    |d
         dd          }|ddd         }|                     |          rdS |                    dd          }|                    d	d          }|                    dd          }|S )z<
        extract a wazn from a given lemma and root
            N      2   1r   0u   لu   عu   ف)lenreplacer    )r   r   r   r   s       r
   r   zTemplater.extract_waznG   s;     	s4yy1}}22;D4yyA~~||DGS!44 7d1g%%<<Qa88DD<<Qa88D<<Qa00D<<Qa00D":D##D)) r<<T**D<<T**D<<T**DKr   N)F)	__name__
__module____qualname____doc__r   r   staticmethodr    r   r   r   r
   r   r      sk            
  $   \"    r   r   c                  |    d} g }t                      }|                    |           }t          j        |           dS )z
    main test
    u   إلى البيتN)
Lemmatizeranalyze_textpprint)textresultlemmers      r
   mainlyr9   b   s@    
 DF\\F  &&F
M&r   __main__)r0   r5   r   pyarabic.arabyarabyr   r9   r-   r   r   r
   <module>r=      s      				      F F F F F F F FR
 
 
 z
FHHHHH r   