
    A6i&	                     *    d Z ddlmZ  G d de      Zy)z
.. module:: lesscpy.plib.node
    :synopsis: Base Node

    Copyright (c)
    See LICENSE for details.
.. moduleauthor:: Johann T. Mariusson <jtm@robot.is>
    )utilityc                   ,    e Zd ZddZd Zd Zd Zd Zy)Nodec                 .    || _         || _        d| _        y)zt Base Node
        args:
            tokens (list): tokenlist
            lineno (int): Line number of node
        FN)tokenslinenoparsed)selfr   r   s      T/home/azureuser/techstart-app/venv/lib/python3.12/site-packages/lesscpy/plib/node.py__init__zNode.__init__   s         c                     | S )zv Base parse function
        args:
            scope (Scope): Current scope
        returns:
            self
         )r
   scopes     r   parsez
Node.parse   s	     r   c                 &   	 t        t        j                  |            }d}t        d |D              r.|D cg c]!  }t	        |d      r|j                  |      n|# }}d}t        d |D              r| j                  ||      }d}|r	 |S c c}w )z Process tokenslist, flattening and parsing it
        args:
            tokens (list): tokenlist
            scope (Scope): Current scope
        returns:
            list
        Tc              3   :   K   | ]  }t        |d       s|  yw)r   N)hasattr.0ts     r   	<genexpr>zNode.process.<locals>.<genexpr>,   s     <7(;1<s   r   Fc              3   x   K   | ]2  }t        j                  |      st        t        |            d k(  r| 4 yw)(<class 'lesscpy.plib.variable.Variable'>N)r   is_variablestrtyper   s     r   r   zNode.process.<locals>.<genexpr>2   s:      @++A.3tAw<>4? @s   8:)listr   flattenanyr   r   replace_variables)r
   r   r   doner   s        r   processzNode.process!   s     '//&12FD<f<< $ '.a&9AGGENq@   @%@ @ //># s   &Bc                 *   g }|D ]  }t        j                  |      r!|j                  |j                  |             9t	        t        |            dk(  r+|j                  |j                  |j                               {|j                  |        |S )z Replace variables in tokenlist
        args:
            tokens (list): tokenlist
            scope (Scope): Current scope
        returns:
            list
        r   )r   r   appendswapr   r   name)r
   r   r   r   r   s        r   r!   zNode.replace_variables<   sv      	A""1%EJJqM*T!W!KKEJJqvv./A	 r   c                     t        d      )zk Format node
        args:
            fills (dict): replacements
        returns:
            str
        zNo defined format)
ValueError)r
   fillss     r   fmtzNode.fmtN   s     ,--r   N)r   )__name__
__module____qualname__r   r   r#   r!   r+   r   r   r   r   r      s    6$.r   r   N)__doc__lesscpy.lesscr   objectr   r   r   r   <module>r2      s    "H.6 H.r   